diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4028668 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/node_modules/* +/package-lock.json +/npm-debug.log + +/@todo/* diff --git a/README.md b/README.md index f1f3c85..368ef83 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # play-skilltree growing skilltree of workshops and codecamps + +http://ethereum-play.github.io/play-skilltree diff --git a/bundle.js b/bundle.js new file mode 100644 index 0000000..2f59494 --- /dev/null +++ b/bundle.js @@ -0,0 +1,114143 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { + // const element = await skilltree(dag_data) + const element = await skilltree() + document.body.appendChild(element) +}, 0) + +const dag_data = [ + { + id: '0', + title: 'Solidity', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '1', + parentIds: ['0'], + title: 'Variables', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '2', + parentIds: ['0'], + title: 'Events', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '3', + parentIds: ['2'], + title: 'Mappings', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '4', + parentIds: ['2'], + title: 'Types', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '5', + parentIds: ['2'], + title: 'Modifiers', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '6', + parentIds: ['9'], + title: 'Imports', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '7', + parentIds: ['3'], + title: 'Source File', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '8', + parentIds: ['3'], + title: 'Remix', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '9', + parentIds: ['8'], + title: 'Deploying', + url: 'https://play.ethereum.org/play-workshop/', + }, + { + id: '10', + parentIds: ['9'], + title: 'Networks', + url: 'https://play.ethereum.org/play-workshop/', + }, +] + +},{"../":1111}],2:[function(require,module,exports){ +var trailingNewlineRegex = /\n[\s]+$/ +var leadingNewlineRegex = /^\n[\s]+/ +var trailingSpaceRegex = /[\s]+$/ +var leadingSpaceRegex = /^[\s]+/ +var multiSpaceRegex = /[\n\s]+/g + +var TEXT_TAGS = [ + 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'data', 'dfn', 'em', 'i', + 'kbd', 'mark', 'q', 'rp', 'rt', 'rtc', 'ruby', 's', 'amp', 'small', 'span', + 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr' +] + +var VERBATIM_TAGS = [ + 'code', 'pre', 'textarea' +] + +module.exports = function appendChild (el, childs) { + if (!Array.isArray(childs)) return + + var nodeName = el.nodeName.toLowerCase() + + var hadText = false + var value, leader + + for (var i = 0, len = childs.length; i < len; i++) { + var node = childs[i] + if (Array.isArray(node)) { + appendChild(el, node) + continue + } + + if (typeof node === 'number' || + typeof node === 'boolean' || + typeof node === 'function' || + node instanceof Date || + node instanceof RegExp) { + node = node.toString() + } + + var lastChild = el.childNodes[el.childNodes.length - 1] + + // Iterate over text nodes + if (typeof node === 'string') { + hadText = true + + // If we already had text, append to the existing text + if (lastChild && lastChild.nodeName === '#text') { + lastChild.nodeValue += node + + // We didn't have a text node yet, create one + } else { + node = document.createTextNode(node) + el.appendChild(node) + lastChild = node + } + + // If this is the last of the child nodes, make sure we close it out + // right + if (i === len - 1) { + hadText = false + // Trim the child text nodes if the current node isn't a + // node where whitespace matters. + if (TEXT_TAGS.indexOf(nodeName) === -1 && + VERBATIM_TAGS.indexOf(nodeName) === -1) { + value = lastChild.nodeValue + .replace(leadingNewlineRegex, '') + .replace(trailingSpaceRegex, '') + .replace(trailingNewlineRegex, '') + .replace(multiSpaceRegex, ' ') + if (value === '') { + el.removeChild(lastChild) + } else { + lastChild.nodeValue = value + } + } else if (VERBATIM_TAGS.indexOf(nodeName) === -1) { + // The very first node in the list should not have leading + // whitespace. Sibling text nodes should have whitespace if there + // was any. + leader = i === 0 ? '' : ' ' + value = lastChild.nodeValue + .replace(leadingNewlineRegex, leader) + .replace(leadingSpaceRegex, ' ') + .replace(trailingSpaceRegex, '') + .replace(trailingNewlineRegex, '') + .replace(multiSpaceRegex, ' ') + lastChild.nodeValue = value + } + } + + // Iterate over DOM nodes + } else if (node && node.nodeType) { + // If the last node was a text node, make sure it is properly closed out + if (hadText) { + hadText = false + + // Trim the child text nodes if the current node isn't a + // text node or a code node + if (TEXT_TAGS.indexOf(nodeName) === -1 && + VERBATIM_TAGS.indexOf(nodeName) === -1) { + value = lastChild.nodeValue + .replace(leadingNewlineRegex, '') + .replace(trailingNewlineRegex, '') + .replace(multiSpaceRegex, ' ') + + // Remove empty text nodes, append otherwise + if (value === '') { + el.removeChild(lastChild) + } else { + lastChild.nodeValue = value + } + // Trim the child nodes if the current node is not a node + // where all whitespace must be preserved + } else if (VERBATIM_TAGS.indexOf(nodeName) === -1) { + value = lastChild.nodeValue + .replace(leadingSpaceRegex, ' ') + .replace(leadingNewlineRegex, '') + .replace(trailingNewlineRegex, '') + .replace(multiSpaceRegex, ' ') + lastChild.nodeValue = value + } + } + + // Store the last nodename + var _nodeName = node.nodeName + if (_nodeName) nodeName = _nodeName.toLowerCase() + + // Append the node to the DOM + el.appendChild(node) + } + } +} + +},{}],3:[function(require,module,exports){ +var hyperx = require('hyperx') +var appendChild = require('./appendChild') + +var SVGNS = 'http://www.w3.org/2000/svg' +var XLINKNS = 'http://www.w3.org/1999/xlink' + +var BOOL_PROPS = [ + 'autofocus', 'checked', 'defaultchecked', 'disabled', 'formnovalidate', + 'indeterminate', 'readonly', 'required', 'selected', 'willvalidate' +] + +var COMMENT_TAG = '!--' + +var SVG_TAGS = [ + 'svg', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', + 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', + 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', + 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', + 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', + 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', + 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', + 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', + 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', + 'font-face-uri', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', + 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph', + 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', + 'set', 'stop', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', + 'tspan', 'use', 'view', 'vkern' +] + +function belCreateElement (tag, props, children) { + var el + + // If an svg tag, it needs a namespace + if (SVG_TAGS.indexOf(tag) !== -1) { + props.namespace = SVGNS + } + + // If we are using a namespace + var ns = false + if (props.namespace) { + ns = props.namespace + delete props.namespace + } + + // Create the element + if (ns) { + el = document.createElementNS(ns, tag) + } else if (tag === COMMENT_TAG) { + return document.createComment(props.comment) + } else { + el = document.createElement(tag) + } + + // Create the properties + for (var p in props) { + if (props.hasOwnProperty(p)) { + var key = p.toLowerCase() + var val = props[p] + // Normalize className + if (key === 'classname') { + key = 'class' + p = 'class' + } + // The for attribute gets transformed to htmlFor, but we just set as for + if (p === 'htmlFor') { + p = 'for' + } + // If a property is boolean, set itself to the key + if (BOOL_PROPS.indexOf(key) !== -1) { + if (val === 'true') val = key + else if (val === 'false') continue + } + // If a property prefers being set directly vs setAttribute + if (key.slice(0, 2) === 'on') { + el[p] = val + } else { + if (ns) { + if (p === 'xlink:href') { + el.setAttributeNS(XLINKNS, p, val) + } else if (/^xmlns($|:)/i.test(p)) { + // skip xmlns definitions + } else { + el.setAttributeNS(null, p, val) + } + } else { + el.setAttribute(p, val) + } + } + } + } + + appendChild(el, children) + return el +} + +module.exports = hyperx(belCreateElement, {comments: true}) +module.exports.default = module.exports +module.exports.createElement = belCreateElement + +},{"./appendChild":2,"hyperx":1105}],4:[function(require,module,exports){ +(function (global){ +'use strict'; + +var csjs = require('csjs'); +var insertCss = require('insert-css'); + +function csjsInserter() { + var args = Array.prototype.slice.call(arguments); + var result = csjs.apply(null, args); + if (global.document) { + insertCss(csjs.getCss(result)); + } + return result; +} + +module.exports = csjsInserter; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"csjs":9,"insert-css":1106}],5:[function(require,module,exports){ +'use strict'; + +module.exports = require('csjs/get-css'); + +},{"csjs/get-css":8}],6:[function(require,module,exports){ +'use strict'; + +var csjs = require('./csjs'); + +module.exports = csjs; +module.exports.csjs = csjs; +module.exports.getCss = require('./get-css'); + +},{"./csjs":4,"./get-css":5}],7:[function(require,module,exports){ +'use strict'; + +module.exports = require('./lib/csjs'); + +},{"./lib/csjs":13}],8:[function(require,module,exports){ +'use strict'; + +module.exports = require('./lib/get-css'); + +},{"./lib/get-css":17}],9:[function(require,module,exports){ +'use strict'; + +var csjs = require('./csjs'); + +module.exports = csjs(); +module.exports.csjs = csjs; +module.exports.noScope = csjs({ noscope: true }); +module.exports.getCss = require('./get-css'); + +},{"./csjs":7,"./get-css":8}],10:[function(require,module,exports){ +'use strict'; + +/** + * base62 encode implementation based on base62 module: + * https://github.com/andrew/base62.js + */ + +var CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + +module.exports = function encode(integer) { + if (integer === 0) { + return '0'; + } + var str = ''; + while (integer > 0) { + str = CHARS[integer % 62] + str; + integer = Math.floor(integer / 62); + } + return str; +}; + +},{}],11:[function(require,module,exports){ +'use strict'; + +var makeComposition = require('./composition').makeComposition; + +module.exports = function createExports(classes, keyframes, compositions) { + var keyframesObj = Object.keys(keyframes).reduce(function(acc, key) { + var val = keyframes[key]; + acc[val] = makeComposition([key], [val], true); + return acc; + }, {}); + + var exports = Object.keys(classes).reduce(function(acc, key) { + var val = classes[key]; + var composition = compositions[key]; + var extended = composition ? getClassChain(composition) : []; + var allClasses = [key].concat(extended); + var unscoped = allClasses.map(function(name) { + return classes[name] ? classes[name] : name; + }); + acc[val] = makeComposition(allClasses, unscoped); + return acc; + }, keyframesObj); + + return exports; +} + +function getClassChain(obj) { + var visited = {}, acc = []; + + function traverse(obj) { + return Object.keys(obj).forEach(function(key) { + if (!visited[key]) { + visited[key] = true; + acc.push(key); + traverse(obj[key]); + } + }); + } + + traverse(obj); + return acc; +} + +},{"./composition":12}],12:[function(require,module,exports){ +'use strict'; + +module.exports = { + makeComposition: makeComposition, + isComposition: isComposition, + ignoreComposition: ignoreComposition +}; + +/** + * Returns an immutable composition object containing the given class names + * @param {array} classNames - The input array of class names + * @return {Composition} - An immutable object that holds multiple + * representations of the class composition + */ +function makeComposition(classNames, unscoped, isAnimation) { + var classString = classNames.join(' '); + return Object.create(Composition.prototype, { + classNames: { // the original array of class names + value: Object.freeze(classNames), + configurable: false, + writable: false, + enumerable: true + }, + unscoped: { // the original array of class names + value: Object.freeze(unscoped), + configurable: false, + writable: false, + enumerable: true + }, + className: { // space-separated class string for use in HTML + value: classString, + configurable: false, + writable: false, + enumerable: true + }, + selector: { // comma-separated, period-prefixed string for use in CSS + value: classNames.map(function(name) { + return isAnimation ? name : '.' + name; + }).join(', '), + configurable: false, + writable: false, + enumerable: true + }, + toString: { // toString() method, returns class string for use in HTML + value: function() { + return classString; + }, + configurable: false, + writeable: false, + enumerable: false + } + }); +} + +/** + * Returns whether the input value is a Composition + * @param value - value to check + * @return {boolean} - whether value is a Composition or not + */ +function isComposition(value) { + return value instanceof Composition; +} + +function ignoreComposition(values) { + return values.reduce(function(acc, val) { + if (isComposition(val)) { + val.classNames.forEach(function(name, i) { + acc[name] = val.unscoped[i]; + }); + } + return acc; + }, {}); +} + +/** + * Private constructor for use in `instanceof` checks + */ +function Composition() {} + +},{}],13:[function(require,module,exports){ +'use strict'; + +var extractExtends = require('./css-extract-extends'); +var composition = require('./composition'); +var isComposition = composition.isComposition; +var ignoreComposition = composition.ignoreComposition; +var buildExports = require('./build-exports'); +var scopify = require('./scopeify'); +var cssKey = require('./css-key'); +var extractExports = require('./extract-exports'); + +module.exports = function csjsTemplate(opts) { + opts = (typeof opts === 'undefined') ? {} : opts; + var noscope = (typeof opts.noscope === 'undefined') ? false : opts.noscope; + + return function csjsHandler(strings, values) { + // Fast path to prevent arguments deopt + var values = Array(arguments.length - 1); + for (var i = 1; i < arguments.length; i++) { + values[i - 1] = arguments[i]; + } + var css = joiner(strings, values.map(selectorize)); + var ignores = ignoreComposition(values); + + var scope = noscope ? extractExports(css) : scopify(css, ignores); + var extracted = extractExtends(scope.css); + var localClasses = without(scope.classes, ignores); + var localKeyframes = without(scope.keyframes, ignores); + var compositions = extracted.compositions; + + var exports = buildExports(localClasses, localKeyframes, compositions); + + return Object.defineProperty(exports, cssKey, { + enumerable: false, + configurable: false, + writeable: false, + value: extracted.css + }); + } +} + +/** + * Replaces class compositions with comma seperated class selectors + * @param value - the potential class composition + * @return - the original value or the selectorized class composition + */ +function selectorize(value) { + return isComposition(value) ? value.selector : value; +} + +/** + * Joins template string literals and values + * @param {array} strings - array of strings + * @param {array} values - array of values + * @return {string} - strings and values joined + */ +function joiner(strings, values) { + return strings.map(function(str, i) { + return (i !== values.length) ? str + values[i] : str; + }).join(''); +} + +/** + * Returns first object without keys of second + * @param {object} obj - source object + * @param {object} unwanted - object with unwanted keys + * @return {object} - first object without unwanted keys + */ +function without(obj, unwanted) { + return Object.keys(obj).reduce(function(acc, key) { + if (!unwanted[key]) { + acc[key] = obj[key]; + } + return acc; + }, {}); +} + +},{"./build-exports":11,"./composition":12,"./css-extract-extends":14,"./css-key":15,"./extract-exports":16,"./scopeify":22}],14:[function(require,module,exports){ +'use strict'; + +var makeComposition = require('./composition').makeComposition; + +var regex = /\.([^\s]+)(\s+)(extends\s+)(\.[^{]+)/g; + +module.exports = function extractExtends(css) { + var found, matches = []; + while (found = regex.exec(css)) { + matches.unshift(found); + } + + function extractCompositions(acc, match) { + var extendee = getClassName(match[1]); + var keyword = match[3]; + var extended = match[4]; + + // remove from output css + var index = match.index + match[1].length + match[2].length; + var len = keyword.length + extended.length; + acc.css = acc.css.slice(0, index) + " " + acc.css.slice(index + len + 1); + + var extendedClasses = splitter(extended); + + extendedClasses.forEach(function(className) { + if (!acc.compositions[extendee]) { + acc.compositions[extendee] = {}; + } + if (!acc.compositions[className]) { + acc.compositions[className] = {}; + } + acc.compositions[extendee][className] = acc.compositions[className]; + }); + return acc; + } + + return matches.reduce(extractCompositions, { + css: css, + compositions: {} + }); + +}; + +function splitter(match) { + return match.split(',').map(getClassName); +} + +function getClassName(str) { + var trimmed = str.trim(); + return trimmed[0] === '.' ? trimmed.substr(1) : trimmed; +} + +},{"./composition":12}],15:[function(require,module,exports){ +'use strict'; + +/** + * CSS identifiers with whitespace are invalid + * Hence this key will not cause a collision + */ + +module.exports = ' css '; + +},{}],16:[function(require,module,exports){ +'use strict'; + +var regex = require('./regex'); +var classRegex = regex.classRegex; +var keyframesRegex = regex.keyframesRegex; + +module.exports = extractExports; + +function extractExports(css) { + return { + css: css, + keyframes: getExport(css, keyframesRegex), + classes: getExport(css, classRegex) + }; +} + +function getExport(css, regex) { + var prop = {}; + var match; + while((match = regex.exec(css)) !== null) { + var name = match[2]; + prop[name] = name; + } + return prop; +} + +},{"./regex":19}],17:[function(require,module,exports){ +'use strict'; + +var cssKey = require('./css-key'); + +module.exports = function getCss(csjs) { + return csjs[cssKey]; +}; + +},{"./css-key":15}],18:[function(require,module,exports){ +'use strict'; + +/** + * djb2 string hash implementation based on string-hash module: + * https://github.com/darkskyapp/string-hash + */ + +module.exports = function hashStr(str) { + var hash = 5381; + var i = str.length; + + while (i) { + hash = (hash * 33) ^ str.charCodeAt(--i) + } + return hash >>> 0; +}; + +},{}],19:[function(require,module,exports){ +'use strict'; + +var findClasses = /(\.)(?!\d)([^\s\.,{\[>+~#:)]*)(?![^{]*})/.source; +var findKeyframes = /(@\S*keyframes\s*)([^{\s]*)/.source; +var ignoreComments = /(?!(?:[^*/]|\*[^/]|\/[^*])*\*+\/)/.source; + +var classRegex = new RegExp(findClasses + ignoreComments, 'g'); +var keyframesRegex = new RegExp(findKeyframes + ignoreComments, 'g'); + +module.exports = { + classRegex: classRegex, + keyframesRegex: keyframesRegex, + ignoreComments: ignoreComments, +}; + +},{}],20:[function(require,module,exports){ +var ignoreComments = require('./regex').ignoreComments; + +module.exports = replaceAnimations; + +function replaceAnimations(result) { + var animations = Object.keys(result.keyframes).reduce(function(acc, key) { + acc[result.keyframes[key]] = key; + return acc; + }, {}); + var unscoped = Object.keys(animations); + + if (unscoped.length) { + var regexStr = '((?:animation|animation-name)\\s*:[^};]*)(' + + unscoped.join('|') + ')([;\\s])' + ignoreComments; + var regex = new RegExp(regexStr, 'g'); + + var replaced = result.css.replace(regex, function(match, preamble, name, ending) { + return preamble + animations[name] + ending; + }); + + return { + css: replaced, + keyframes: result.keyframes, + classes: result.classes + } + } + + return result; +} + +},{"./regex":19}],21:[function(require,module,exports){ +'use strict'; + +var encode = require('./base62-encode'); +var hash = require('./hash-string'); + +module.exports = function fileScoper(fileSrc) { + var suffix = encode(hash(fileSrc)); + + return function scopedName(name) { + return name + '_' + suffix; + } +}; + +},{"./base62-encode":10,"./hash-string":18}],22:[function(require,module,exports){ +'use strict'; + +var fileScoper = require('./scoped-name'); +var replaceAnimations = require('./replace-animations'); +var regex = require('./regex'); +var classRegex = regex.classRegex; +var keyframesRegex = regex.keyframesRegex; + +module.exports = scopify; + +function scopify(css, ignores) { + var makeScopedName = fileScoper(css); + var replacers = { + classes: classRegex, + keyframes: keyframesRegex + }; + + function scopeCss(result, key) { + var replacer = replacers[key]; + function replaceFn(fullMatch, prefix, name) { + var scopedName = ignores[name] ? name : makeScopedName(name); + result[key][scopedName] = name; + return prefix + scopedName; + } + return { + css: result.css.replace(replacer, replaceFn), + keyframes: result.keyframes, + classes: result.classes + }; + } + + var result = Object.keys(replacers).reduce(scopeCss, { + css: css, + keyframes: {}, + classes: {} + }); + + return replaceAnimations(result); +} + +},{"./regex":19,"./replace-animations":20,"./scoped-name":21}],23:[function(require,module,exports){ +// https://d3js.org/d3-array/ v1.2.4 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} + +function bisector(compare) { + if (compare.length === 1) compare = ascendingComparator(compare); + return { + left: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) > 0) hi = mid; + else lo = mid + 1; + } + return lo; + } + }; +} + +function ascendingComparator(f) { + return function(d, x) { + return ascending(f(d), x); + }; +} + +var ascendingBisect = bisector(ascending); +var bisectRight = ascendingBisect.right; +var bisectLeft = ascendingBisect.left; + +function pairs(array, f) { + if (f == null) f = pair; + var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); + while (i < n) pairs[i] = f(p, p = array[++i]); + return pairs; +} + +function pair(a, b) { + return [a, b]; +} + +function cross(values0, values1, reduce) { + var n0 = values0.length, + n1 = values1.length, + values = new Array(n0 * n1), + i0, + i1, + i, + value0; + + if (reduce == null) reduce = pair; + + for (i0 = i = 0; i0 < n0; ++i0) { + for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { + values[i] = reduce(value0, values1[i1]); + } + } + + return values; +} + +function descending(a, b) { + return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} + +function number(x) { + return x === null ? NaN : +x; +} + +function variance(values, valueof) { + var n = values.length, + m = 0, + i = -1, + mean = 0, + value, + delta, + sum = 0; + + if (valueof == null) { + while (++i < n) { + if (!isNaN(value = number(values[i]))) { + delta = value - mean; + mean += delta / ++m; + sum += delta * (value - mean); + } + } + } + + else { + while (++i < n) { + if (!isNaN(value = number(valueof(values[i], i, values)))) { + delta = value - mean; + mean += delta / ++m; + sum += delta * (value - mean); + } + } + } + + if (m > 1) return sum / (m - 1); +} + +function deviation(array, f) { + var v = variance(array, f); + return v ? Math.sqrt(v) : v; +} + +function extent(values, valueof) { + var n = values.length, + i = -1, + value, + min, + max; + + if (valueof == null) { + while (++i < n) { // Find the first comparable value. + if ((value = values[i]) != null && value >= value) { + min = max = value; + while (++i < n) { // Compare the remaining values. + if ((value = values[i]) != null) { + if (min > value) min = value; + if (max < value) max = value; + } + } + } + } + } + + else { + while (++i < n) { // Find the first comparable value. + if ((value = valueof(values[i], i, values)) != null && value >= value) { + min = max = value; + while (++i < n) { // Compare the remaining values. + if ((value = valueof(values[i], i, values)) != null) { + if (min > value) min = value; + if (max < value) max = value; + } + } + } + } + } + + return [min, max]; +} + +var array = Array.prototype; + +var slice = array.slice; +var map = array.map; + +function constant(x) { + return function() { + return x; + }; +} + +function identity(x) { + return x; +} + +function range(start, stop, step) { + start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; + + var i = -1, + n = Math.max(0, Math.ceil((stop - start) / step)) | 0, + range = new Array(n); + + while (++i < n) { + range[i] = start + i * step; + } + + return range; +} + +var e10 = Math.sqrt(50), + e5 = Math.sqrt(10), + e2 = Math.sqrt(2); + +function ticks(start, stop, count) { + var reverse, + i = -1, + n, + ticks, + step; + + stop = +stop, start = +start, count = +count; + if (start === stop && count > 0) return [start]; + if (reverse = stop < start) n = start, start = stop, stop = n; + if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; + + if (step > 0) { + start = Math.ceil(start / step); + stop = Math.floor(stop / step); + ticks = new Array(n = Math.ceil(stop - start + 1)); + while (++i < n) ticks[i] = (start + i) * step; + } else { + start = Math.floor(start * step); + stop = Math.ceil(stop * step); + ticks = new Array(n = Math.ceil(start - stop + 1)); + while (++i < n) ticks[i] = (start - i) / step; + } + + if (reverse) ticks.reverse(); + + return ticks; +} + +function tickIncrement(start, stop, count) { + var step = (stop - start) / Math.max(0, count), + power = Math.floor(Math.log(step) / Math.LN10), + error = step / Math.pow(10, power); + return power >= 0 + ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) + : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); +} + +function tickStep(start, stop, count) { + var step0 = Math.abs(stop - start) / Math.max(0, count), + step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), + error = step0 / step1; + if (error >= e10) step1 *= 10; + else if (error >= e5) step1 *= 5; + else if (error >= e2) step1 *= 2; + return stop < start ? -step1 : step1; +} + +function sturges(values) { + return Math.ceil(Math.log(values.length) / Math.LN2) + 1; +} + +function histogram() { + var value = identity, + domain = extent, + threshold = sturges; + + function histogram(data) { + var i, + n = data.length, + x, + values = new Array(n); + + for (i = 0; i < n; ++i) { + values[i] = value(data[i], i, data); + } + + var xz = domain(values), + x0 = xz[0], + x1 = xz[1], + tz = threshold(values, x0, x1); + + // Convert number of thresholds into uniform thresholds. + if (!Array.isArray(tz)) { + tz = tickStep(x0, x1, tz); + tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive + } + + // Remove any thresholds outside the domain. + var m = tz.length; + while (tz[0] <= x0) tz.shift(), --m; + while (tz[m - 1] > x1) tz.pop(), --m; + + var bins = new Array(m + 1), + bin; + + // Initialize bins. + for (i = 0; i <= m; ++i) { + bin = bins[i] = []; + bin.x0 = i > 0 ? tz[i - 1] : x0; + bin.x1 = i < m ? tz[i] : x1; + } + + // Assign data to bins by value, ignoring any outside the domain. + for (i = 0; i < n; ++i) { + x = values[i]; + if (x0 <= x && x <= x1) { + bins[bisectRight(tz, x, 0, m)].push(data[i]); + } + } + + return bins; + } + + histogram.value = function(_) { + return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; + }; + + histogram.domain = function(_) { + return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; + }; + + histogram.thresholds = function(_) { + return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; + }; + + return histogram; +} + +function quantile(values, p, valueof) { + if (valueof == null) valueof = number; + if (!(n = values.length)) return; + if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); + if (p >= 1) return +valueof(values[n - 1], n - 1, values); + var n, + i = (n - 1) * p, + i0 = Math.floor(i), + value0 = +valueof(values[i0], i0, values), + value1 = +valueof(values[i0 + 1], i0 + 1, values); + return value0 + (value1 - value0) * (i - i0); +} + +function freedmanDiaconis(values, min, max) { + values = map.call(values, number).sort(ascending); + return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3))); +} + +function scott(values, min, max) { + return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); +} + +function max(values, valueof) { + var n = values.length, + i = -1, + value, + max; + + if (valueof == null) { + while (++i < n) { // Find the first comparable value. + if ((value = values[i]) != null && value >= value) { + max = value; + while (++i < n) { // Compare the remaining values. + if ((value = values[i]) != null && value > max) { + max = value; + } + } + } + } + } + + else { + while (++i < n) { // Find the first comparable value. + if ((value = valueof(values[i], i, values)) != null && value >= value) { + max = value; + while (++i < n) { // Compare the remaining values. + if ((value = valueof(values[i], i, values)) != null && value > max) { + max = value; + } + } + } + } + } + + return max; +} + +function mean(values, valueof) { + var n = values.length, + m = n, + i = -1, + value, + sum = 0; + + if (valueof == null) { + while (++i < n) { + if (!isNaN(value = number(values[i]))) sum += value; + else --m; + } + } + + else { + while (++i < n) { + if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; + else --m; + } + } + + if (m) return sum / m; +} + +function median(values, valueof) { + var n = values.length, + i = -1, + value, + numbers = []; + + if (valueof == null) { + while (++i < n) { + if (!isNaN(value = number(values[i]))) { + numbers.push(value); + } + } + } + + else { + while (++i < n) { + if (!isNaN(value = number(valueof(values[i], i, values)))) { + numbers.push(value); + } + } + } + + return quantile(numbers.sort(ascending), 0.5); +} + +function merge(arrays) { + var n = arrays.length, + m, + i = -1, + j = 0, + merged, + array; + + while (++i < n) j += arrays[i].length; + merged = new Array(j); + + while (--n >= 0) { + array = arrays[n]; + m = array.length; + while (--m >= 0) { + merged[--j] = array[m]; + } + } + + return merged; +} + +function min(values, valueof) { + var n = values.length, + i = -1, + value, + min; + + if (valueof == null) { + while (++i < n) { // Find the first comparable value. + if ((value = values[i]) != null && value >= value) { + min = value; + while (++i < n) { // Compare the remaining values. + if ((value = values[i]) != null && min > value) { + min = value; + } + } + } + } + } + + else { + while (++i < n) { // Find the first comparable value. + if ((value = valueof(values[i], i, values)) != null && value >= value) { + min = value; + while (++i < n) { // Compare the remaining values. + if ((value = valueof(values[i], i, values)) != null && min > value) { + min = value; + } + } + } + } + } + + return min; +} + +function permute(array, indexes) { + var i = indexes.length, permutes = new Array(i); + while (i--) permutes[i] = array[indexes[i]]; + return permutes; +} + +function scan(values, compare) { + if (!(n = values.length)) return; + var n, + i = 0, + j = 0, + xi, + xj = values[j]; + + if (compare == null) compare = ascending; + + while (++i < n) { + if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { + xj = xi, j = i; + } + } + + if (compare(xj, xj) === 0) return j; +} + +function shuffle(array, i0, i1) { + var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), + t, + i; + + while (m) { + i = Math.random() * m-- | 0; + t = array[m + i0]; + array[m + i0] = array[i + i0]; + array[i + i0] = t; + } + + return array; +} + +function sum(values, valueof) { + var n = values.length, + i = -1, + value, + sum = 0; + + if (valueof == null) { + while (++i < n) { + if (value = +values[i]) sum += value; // Note: zero and null are equivalent. + } + } + + else { + while (++i < n) { + if (value = +valueof(values[i], i, values)) sum += value; + } + } + + return sum; +} + +function transpose(matrix) { + if (!(n = matrix.length)) return []; + for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { + for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { + row[j] = matrix[j][i]; + } + } + return transpose; +} + +function length(d) { + return d.length; +} + +function zip() { + return transpose(arguments); +} + +exports.bisect = bisectRight; +exports.bisectRight = bisectRight; +exports.bisectLeft = bisectLeft; +exports.ascending = ascending; +exports.bisector = bisector; +exports.cross = cross; +exports.descending = descending; +exports.deviation = deviation; +exports.extent = extent; +exports.histogram = histogram; +exports.thresholdFreedmanDiaconis = freedmanDiaconis; +exports.thresholdScott = scott; +exports.thresholdSturges = sturges; +exports.max = max; +exports.mean = mean; +exports.median = median; +exports.merge = merge; +exports.min = min; +exports.pairs = pairs; +exports.permute = permute; +exports.quantile = quantile; +exports.range = range; +exports.scan = scan; +exports.shuffle = shuffle; +exports.sum = sum; +exports.ticks = ticks; +exports.tickIncrement = tickIncrement; +exports.tickStep = tickStep; +exports.transpose = transpose; +exports.variance = variance; +exports.zip = zip; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],24:[function(require,module,exports){ +// https://d3js.org/d3-axis/ v1.0.12 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var slice = Array.prototype.slice; + +function identity(x) { + return x; +} + +var top = 1, + right = 2, + bottom = 3, + left = 4, + epsilon = 1e-6; + +function translateX(x) { + return "translate(" + (x + 0.5) + ",0)"; +} + +function translateY(y) { + return "translate(0," + (y + 0.5) + ")"; +} + +function number(scale) { + return function(d) { + return +scale(d); + }; +} + +function center(scale) { + var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset. + if (scale.round()) offset = Math.round(offset); + return function(d) { + return +scale(d) + offset; + }; +} + +function entering() { + return !this.__axis; +} + +function axis(orient, scale) { + var tickArguments = [], + tickValues = null, + tickFormat = null, + tickSizeInner = 6, + tickSizeOuter = 6, + tickPadding = 3, + k = orient === top || orient === left ? -1 : 1, + x = orient === left || orient === right ? "x" : "y", + transform = orient === top || orient === bottom ? translateX : translateY; + + function axis(context) { + var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, + format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat, + spacing = Math.max(tickSizeInner, 0) + tickPadding, + range = scale.range(), + range0 = +range[0] + 0.5, + range1 = +range[range.length - 1] + 0.5, + position = (scale.bandwidth ? center : number)(scale.copy()), + selection = context.selection ? context.selection() : context, + path = selection.selectAll(".domain").data([null]), + tick = selection.selectAll(".tick").data(values, scale).order(), + tickExit = tick.exit(), + tickEnter = tick.enter().append("g").attr("class", "tick"), + line = tick.select("line"), + text = tick.select("text"); + + path = path.merge(path.enter().insert("path", ".tick") + .attr("class", "domain") + .attr("stroke", "currentColor")); + + tick = tick.merge(tickEnter); + + line = line.merge(tickEnter.append("line") + .attr("stroke", "currentColor") + .attr(x + "2", k * tickSizeInner)); + + text = text.merge(tickEnter.append("text") + .attr("fill", "currentColor") + .attr(x, k * spacing) + .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); + + if (context !== selection) { + path = path.transition(context); + tick = tick.transition(context); + line = line.transition(context); + text = text.transition(context); + + tickExit = tickExit.transition(context) + .attr("opacity", epsilon) + .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); }); + + tickEnter + .attr("opacity", epsilon) + .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); }); + } + + tickExit.remove(); + + path + .attr("d", orient === left || orient == right + ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter : "M0.5," + range0 + "V" + range1) + : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + ",0.5H" + range1)); + + tick + .attr("opacity", 1) + .attr("transform", function(d) { return transform(position(d)); }); + + line + .attr(x + "2", k * tickSizeInner); + + text + .attr(x, k * spacing) + .text(format); + + selection.filter(entering) + .attr("fill", "none") + .attr("font-size", 10) + .attr("font-family", "sans-serif") + .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); + + selection + .each(function() { this.__axis = position; }); + } + + axis.scale = function(_) { + return arguments.length ? (scale = _, axis) : scale; + }; + + axis.ticks = function() { + return tickArguments = slice.call(arguments), axis; + }; + + axis.tickArguments = function(_) { + return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice(); + }; + + axis.tickValues = function(_) { + return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice(); + }; + + axis.tickFormat = function(_) { + return arguments.length ? (tickFormat = _, axis) : tickFormat; + }; + + axis.tickSize = function(_) { + return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; + }; + + axis.tickSizeInner = function(_) { + return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; + }; + + axis.tickSizeOuter = function(_) { + return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; + }; + + axis.tickPadding = function(_) { + return arguments.length ? (tickPadding = +_, axis) : tickPadding; + }; + + return axis; +} + +function axisTop(scale) { + return axis(top, scale); +} + +function axisRight(scale) { + return axis(right, scale); +} + +function axisBottom(scale) { + return axis(bottom, scale); +} + +function axisLeft(scale) { + return axis(left, scale); +} + +exports.axisTop = axisTop; +exports.axisRight = axisRight; +exports.axisBottom = axisBottom; +exports.axisLeft = axisLeft; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],25:[function(require,module,exports){ +// https://d3js.org/d3-brush/ v1.0.6 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-drag'), require('d3-interpolate'), require('d3-transition')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-drag', 'd3-interpolate', 'd3-transition'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3)); +}(this, (function (exports,d3Selection,d3Dispatch,d3Drag,d3Interpolate,d3Transition) { 'use strict'; + +function constant(x) { + return function() { + return x; + }; +} + +function BrushEvent(target, type, selection) { + this.target = target; + this.type = type; + this.selection = selection; +} + +function nopropagation() { + d3Selection.event.stopImmediatePropagation(); +} + +function noevent() { + d3Selection.event.preventDefault(); + d3Selection.event.stopImmediatePropagation(); +} + +var MODE_DRAG = {name: "drag"}, + MODE_SPACE = {name: "space"}, + MODE_HANDLE = {name: "handle"}, + MODE_CENTER = {name: "center"}; + +var X = { + name: "x", + handles: ["e", "w"].map(type), + input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; }, + output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } +}; + +var Y = { + name: "y", + handles: ["n", "s"].map(type), + input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; }, + output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } +}; + +var XY = { + name: "xy", + handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(type), + input: function(xy) { return xy; }, + output: function(xy) { return xy; } +}; + +var cursors = { + overlay: "crosshair", + selection: "move", + n: "ns-resize", + e: "ew-resize", + s: "ns-resize", + w: "ew-resize", + nw: "nwse-resize", + ne: "nesw-resize", + se: "nwse-resize", + sw: "nesw-resize" +}; + +var flipX = { + e: "w", + w: "e", + nw: "ne", + ne: "nw", + se: "sw", + sw: "se" +}; + +var flipY = { + n: "s", + s: "n", + nw: "sw", + ne: "se", + se: "ne", + sw: "nw" +}; + +var signsX = { + overlay: +1, + selection: +1, + n: null, + e: +1, + s: null, + w: -1, + nw: -1, + ne: +1, + se: +1, + sw: -1 +}; + +var signsY = { + overlay: +1, + selection: +1, + n: -1, + e: null, + s: +1, + w: null, + nw: -1, + ne: -1, + se: +1, + sw: +1 +}; + +function type(t) { + return {type: t}; +} + +// Ignore right-click, since that should open the context menu. +function defaultFilter() { + return !d3Selection.event.button; +} + +function defaultExtent() { + var svg = this.ownerSVGElement || this; + return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; +} + +// Like d3.local, but with the name “__brush” rather than auto-generated. +function local(node) { + while (!node.__brush) if (!(node = node.parentNode)) return; + return node.__brush; +} + +function empty(extent) { + return extent[0][0] === extent[1][0] + || extent[0][1] === extent[1][1]; +} + +function brushSelection(node) { + var state = node.__brush; + return state ? state.dim.output(state.selection) : null; +} + +function brushX() { + return brush$1(X); +} + +function brushY() { + return brush$1(Y); +} + +function brush() { + return brush$1(XY); +} + +function brush$1(dim) { + var extent = defaultExtent, + filter = defaultFilter, + listeners = d3Dispatch.dispatch(brush, "start", "brush", "end"), + handleSize = 6, + touchending; + + function brush(group) { + var overlay = group + .property("__brush", initialize) + .selectAll(".overlay") + .data([type("overlay")]); + + overlay.enter().append("rect") + .attr("class", "overlay") + .attr("pointer-events", "all") + .attr("cursor", cursors.overlay) + .merge(overlay) + .each(function() { + var extent = local(this).extent; + d3Selection.select(this) + .attr("x", extent[0][0]) + .attr("y", extent[0][1]) + .attr("width", extent[1][0] - extent[0][0]) + .attr("height", extent[1][1] - extent[0][1]); + }); + + group.selectAll(".selection") + .data([type("selection")]) + .enter().append("rect") + .attr("class", "selection") + .attr("cursor", cursors.selection) + .attr("fill", "#777") + .attr("fill-opacity", 0.3) + .attr("stroke", "#fff") + .attr("shape-rendering", "crispEdges"); + + var handle = group.selectAll(".handle") + .data(dim.handles, function(d) { return d.type; }); + + handle.exit().remove(); + + handle.enter().append("rect") + .attr("class", function(d) { return "handle handle--" + d.type; }) + .attr("cursor", function(d) { return cursors[d.type]; }); + + group + .each(redraw) + .attr("fill", "none") + .attr("pointer-events", "all") + .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") + .on("mousedown.brush touchstart.brush", started); + } + + brush.move = function(group, selection) { + if (group.selection) { + group + .on("start.brush", function() { emitter(this, arguments).beforestart().start(); }) + .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); }) + .tween("brush", function() { + var that = this, + state = that.__brush, + emit = emitter(that, arguments), + selection0 = state.selection, + selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), + i = d3Interpolate.interpolate(selection0, selection1); + + function tween(t) { + state.selection = t === 1 && empty(selection1) ? null : i(t); + redraw.call(that); + emit.brush(); + } + + return selection0 && selection1 ? tween : tween(1); + }); + } else { + group + .each(function() { + var that = this, + args = arguments, + state = that.__brush, + selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), + emit = emitter(that, args).beforestart(); + + d3Transition.interrupt(that); + state.selection = selection1 == null || empty(selection1) ? null : selection1; + redraw.call(that); + emit.start().brush().end(); + }); + } + }; + + function redraw() { + var group = d3Selection.select(this), + selection = local(this).selection; + + if (selection) { + group.selectAll(".selection") + .style("display", null) + .attr("x", selection[0][0]) + .attr("y", selection[0][1]) + .attr("width", selection[1][0] - selection[0][0]) + .attr("height", selection[1][1] - selection[0][1]); + + group.selectAll(".handle") + .style("display", null) + .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) + .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) + .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) + .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); + } + + else { + group.selectAll(".selection,.handle") + .style("display", "none") + .attr("x", null) + .attr("y", null) + .attr("width", null) + .attr("height", null); + } + } + + function emitter(that, args) { + return that.__brush.emitter || new Emitter(that, args); + } + + function Emitter(that, args) { + this.that = that; + this.args = args; + this.state = that.__brush; + this.active = 0; + } + + Emitter.prototype = { + beforestart: function() { + if (++this.active === 1) this.state.emitter = this, this.starting = true; + return this; + }, + start: function() { + if (this.starting) this.starting = false, this.emit("start"); + return this; + }, + brush: function() { + this.emit("brush"); + return this; + }, + end: function() { + if (--this.active === 0) delete this.state.emitter, this.emit("end"); + return this; + }, + emit: function(type) { + d3Selection.customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]); + } + }; + + function started() { + if (d3Selection.event.touches) { if (d3Selection.event.changedTouches.length < d3Selection.event.touches.length) return noevent(); } + else if (touchending) return; + if (!filter.apply(this, arguments)) return; + + var that = this, + type = d3Selection.event.target.__data__.type, + mode = (d3Selection.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (d3Selection.event.altKey ? MODE_CENTER : MODE_HANDLE), + signX = dim === Y ? null : signsX[type], + signY = dim === X ? null : signsY[type], + state = local(that), + extent = state.extent, + selection = state.selection, + W = extent[0][0], w0, w1, + N = extent[0][1], n0, n1, + E = extent[1][0], e0, e1, + S = extent[1][1], s0, s1, + dx, + dy, + moving, + shifting = signX && signY && d3Selection.event.shiftKey, + lockX, + lockY, + point0 = d3Selection.mouse(that), + point = point0, + emit = emitter(that, arguments).beforestart(); + + if (type === "overlay") { + state.selection = selection = [ + [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]], + [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0] + ]; + } else { + w0 = selection[0][0]; + n0 = selection[0][1]; + e0 = selection[1][0]; + s0 = selection[1][1]; + } + + w1 = w0; + n1 = n0; + e1 = e0; + s1 = s0; + + var group = d3Selection.select(that) + .attr("pointer-events", "none"); + + var overlay = group.selectAll(".overlay") + .attr("cursor", cursors[type]); + + if (d3Selection.event.touches) { + group + .on("touchmove.brush", moved, true) + .on("touchend.brush touchcancel.brush", ended, true); + } else { + var view = d3Selection.select(d3Selection.event.view) + .on("keydown.brush", keydowned, true) + .on("keyup.brush", keyupped, true) + .on("mousemove.brush", moved, true) + .on("mouseup.brush", ended, true); + + d3Drag.dragDisable(d3Selection.event.view); + } + + nopropagation(); + d3Transition.interrupt(that); + redraw.call(that); + emit.start(); + + function moved() { + var point1 = d3Selection.mouse(that); + if (shifting && !lockX && !lockY) { + if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true; + else lockX = true; + } + point = point1; + moving = true; + noevent(); + move(); + } + + function move() { + var t; + + dx = point[0] - point0[0]; + dy = point[1] - point0[1]; + + switch (mode) { + case MODE_SPACE: + case MODE_DRAG: { + if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; + if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; + break; + } + case MODE_HANDLE: { + if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0; + else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx; + if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0; + else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy; + break; + } + case MODE_CENTER: { + if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX)); + if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY)); + break; + } + } + + if (e1 < w1) { + signX *= -1; + t = w0, w0 = e0, e0 = t; + t = w1, w1 = e1, e1 = t; + if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); + } + + if (s1 < n1) { + signY *= -1; + t = n0, n0 = s0, s0 = t; + t = n1, n1 = s1, s1 = t; + if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); + } + + if (state.selection) selection = state.selection; // May be set by brush.move! + if (lockX) w1 = selection[0][0], e1 = selection[1][0]; + if (lockY) n1 = selection[0][1], s1 = selection[1][1]; + + if (selection[0][0] !== w1 + || selection[0][1] !== n1 + || selection[1][0] !== e1 + || selection[1][1] !== s1) { + state.selection = [[w1, n1], [e1, s1]]; + redraw.call(that); + emit.brush(); + } + } + + function ended() { + nopropagation(); + if (d3Selection.event.touches) { + if (d3Selection.event.touches.length) return; + if (touchending) clearTimeout(touchending); + touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! + group.on("touchmove.brush touchend.brush touchcancel.brush", null); + } else { + d3Drag.dragEnable(d3Selection.event.view, moving); + view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); + } + group.attr("pointer-events", "all"); + overlay.attr("cursor", cursors.overlay); + if (state.selection) selection = state.selection; // May be set by brush.move (on start)! + if (empty(selection)) state.selection = null, redraw.call(that); + emit.end(); + } + + function keydowned() { + switch (d3Selection.event.keyCode) { + case 16: { // SHIFT + shifting = signX && signY; + break; + } + case 18: { // ALT + if (mode === MODE_HANDLE) { + if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; + if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; + mode = MODE_CENTER; + move(); + } + break; + } + case 32: { // SPACE; takes priority over ALT + if (mode === MODE_HANDLE || mode === MODE_CENTER) { + if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; + if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; + mode = MODE_SPACE; + overlay.attr("cursor", cursors.selection); + move(); + } + break; + } + default: return; + } + noevent(); + } + + function keyupped() { + switch (d3Selection.event.keyCode) { + case 16: { // SHIFT + if (shifting) { + lockX = lockY = shifting = false; + move(); + } + break; + } + case 18: { // ALT + if (mode === MODE_CENTER) { + if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; + if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; + mode = MODE_HANDLE; + move(); + } + break; + } + case 32: { // SPACE + if (mode === MODE_SPACE) { + if (d3Selection.event.altKey) { + if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; + if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; + mode = MODE_CENTER; + } else { + if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; + if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; + mode = MODE_HANDLE; + } + overlay.attr("cursor", cursors[type]); + move(); + } + break; + } + default: return; + } + noevent(); + } + } + + function initialize() { + var state = this.__brush || {selection: null}; + state.extent = extent.apply(this, arguments); + state.dim = dim; + return state; + } + + brush.extent = function(_) { + return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent; + }; + + brush.filter = function(_) { + return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), brush) : filter; + }; + + brush.handleSize = function(_) { + return arguments.length ? (handleSize = +_, brush) : handleSize; + }; + + brush.on = function() { + var value = listeners.on.apply(listeners, arguments); + return value === listeners ? brush : value; + }; + + return brush; +} + +exports.brush = brush; +exports.brushX = brushX; +exports.brushY = brushY; +exports.brushSelection = brushSelection; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-dispatch":31,"d3-drag":32,"d3-interpolate":40,"d3-selection":47,"d3-transition":52}],26:[function(require,module,exports){ +// https://d3js.org/d3-chord/ v1.0.6 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-path')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-path'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3)); +}(this, (function (exports,d3Array,d3Path) { 'use strict'; + +var cos = Math.cos; +var sin = Math.sin; +var pi = Math.PI; +var halfPi = pi / 2; +var tau = pi * 2; +var max = Math.max; + +function compareValue(compare) { + return function(a, b) { + return compare( + a.source.value + a.target.value, + b.source.value + b.target.value + ); + }; +} + +function chord() { + var padAngle = 0, + sortGroups = null, + sortSubgroups = null, + sortChords = null; + + function chord(matrix) { + var n = matrix.length, + groupSums = [], + groupIndex = d3Array.range(n), + subgroupIndex = [], + chords = [], + groups = chords.groups = new Array(n), + subgroups = new Array(n * n), + k, + x, + x0, + dx, + i, + j; + + // Compute the sum. + k = 0, i = -1; while (++i < n) { + x = 0, j = -1; while (++j < n) { + x += matrix[i][j]; + } + groupSums.push(x); + subgroupIndex.push(d3Array.range(n)); + k += x; + } + + // Sort groups… + if (sortGroups) groupIndex.sort(function(a, b) { + return sortGroups(groupSums[a], groupSums[b]); + }); + + // Sort subgroups… + if (sortSubgroups) subgroupIndex.forEach(function(d, i) { + d.sort(function(a, b) { + return sortSubgroups(matrix[i][a], matrix[i][b]); + }); + }); + + // Convert the sum to scaling factor for [0, 2pi]. + // TODO Allow start and end angle to be specified? + // TODO Allow padding to be specified as percentage? + k = max(0, tau - padAngle * n) / k; + dx = k ? padAngle : tau / n; + + // Compute the start and end angle for each group and subgroup. + // Note: Opera has a bug reordering object literal properties! + x = 0, i = -1; while (++i < n) { + x0 = x, j = -1; while (++j < n) { + var di = groupIndex[i], + dj = subgroupIndex[di][j], + v = matrix[di][dj], + a0 = x, + a1 = x += v * k; + subgroups[dj * n + di] = { + index: di, + subindex: dj, + startAngle: a0, + endAngle: a1, + value: v + }; + } + groups[di] = { + index: di, + startAngle: x0, + endAngle: x, + value: groupSums[di] + }; + x += dx; + } + + // Generate chords for each (non-empty) subgroup-subgroup link. + i = -1; while (++i < n) { + j = i - 1; while (++j < n) { + var source = subgroups[j * n + i], + target = subgroups[i * n + j]; + if (source.value || target.value) { + chords.push(source.value < target.value + ? {source: target, target: source} + : {source: source, target: target}); + } + } + } + + return sortChords ? chords.sort(sortChords) : chords; + } + + chord.padAngle = function(_) { + return arguments.length ? (padAngle = max(0, _), chord) : padAngle; + }; + + chord.sortGroups = function(_) { + return arguments.length ? (sortGroups = _, chord) : sortGroups; + }; + + chord.sortSubgroups = function(_) { + return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; + }; + + chord.sortChords = function(_) { + return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; + }; + + return chord; +} + +var slice = Array.prototype.slice; + +function constant(x) { + return function() { + return x; + }; +} + +function defaultSource(d) { + return d.source; +} + +function defaultTarget(d) { + return d.target; +} + +function defaultRadius(d) { + return d.radius; +} + +function defaultStartAngle(d) { + return d.startAngle; +} + +function defaultEndAngle(d) { + return d.endAngle; +} + +function ribbon() { + var source = defaultSource, + target = defaultTarget, + radius = defaultRadius, + startAngle = defaultStartAngle, + endAngle = defaultEndAngle, + context = null; + + function ribbon() { + var buffer, + argv = slice.call(arguments), + s = source.apply(this, argv), + t = target.apply(this, argv), + sr = +radius.apply(this, (argv[0] = s, argv)), + sa0 = startAngle.apply(this, argv) - halfPi, + sa1 = endAngle.apply(this, argv) - halfPi, + sx0 = sr * cos(sa0), + sy0 = sr * sin(sa0), + tr = +radius.apply(this, (argv[0] = t, argv)), + ta0 = startAngle.apply(this, argv) - halfPi, + ta1 = endAngle.apply(this, argv) - halfPi; + + if (!context) context = buffer = d3Path.path(); + + context.moveTo(sx0, sy0); + context.arc(0, 0, sr, sa0, sa1); + if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr? + context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0)); + context.arc(0, 0, tr, ta0, ta1); + } + context.quadraticCurveTo(0, 0, sx0, sy0); + context.closePath(); + + if (buffer) return context = null, buffer + "" || null; + } + + ribbon.radius = function(_) { + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), ribbon) : radius; + }; + + ribbon.startAngle = function(_) { + return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), ribbon) : startAngle; + }; + + ribbon.endAngle = function(_) { + return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), ribbon) : endAngle; + }; + + ribbon.source = function(_) { + return arguments.length ? (source = _, ribbon) : source; + }; + + ribbon.target = function(_) { + return arguments.length ? (target = _, ribbon) : target; + }; + + ribbon.context = function(_) { + return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; + }; + + return ribbon; +} + +exports.chord = chord; +exports.ribbon = ribbon; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-array":23,"d3-path":41}],27:[function(require,module,exports){ +// https://d3js.org/d3-collection/ v1.0.7 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var prefix = "$"; + +function Map() {} + +Map.prototype = map.prototype = { + constructor: Map, + has: function(key) { + return (prefix + key) in this; + }, + get: function(key) { + return this[prefix + key]; + }, + set: function(key, value) { + this[prefix + key] = value; + return this; + }, + remove: function(key) { + var property = prefix + key; + return property in this && delete this[property]; + }, + clear: function() { + for (var property in this) if (property[0] === prefix) delete this[property]; + }, + keys: function() { + var keys = []; + for (var property in this) if (property[0] === prefix) keys.push(property.slice(1)); + return keys; + }, + values: function() { + var values = []; + for (var property in this) if (property[0] === prefix) values.push(this[property]); + return values; + }, + entries: function() { + var entries = []; + for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]}); + return entries; + }, + size: function() { + var size = 0; + for (var property in this) if (property[0] === prefix) ++size; + return size; + }, + empty: function() { + for (var property in this) if (property[0] === prefix) return false; + return true; + }, + each: function(f) { + for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this); + } +}; + +function map(object, f) { + var map = new Map; + + // Copy constructor. + if (object instanceof Map) object.each(function(value, key) { map.set(key, value); }); + + // Index array by numeric index or specified key function. + else if (Array.isArray(object)) { + var i = -1, + n = object.length, + o; + + if (f == null) while (++i < n) map.set(i, object[i]); + else while (++i < n) map.set(f(o = object[i], i, object), o); + } + + // Convert object to map. + else if (object) for (var key in object) map.set(key, object[key]); + + return map; +} + +function nest() { + var keys = [], + sortKeys = [], + sortValues, + rollup, + nest; + + function apply(array, depth, createResult, setResult) { + if (depth >= keys.length) { + if (sortValues != null) array.sort(sortValues); + return rollup != null ? rollup(array) : array; + } + + var i = -1, + n = array.length, + key = keys[depth++], + keyValue, + value, + valuesByKey = map(), + values, + result = createResult(); + + while (++i < n) { + if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) { + values.push(value); + } else { + valuesByKey.set(keyValue, [value]); + } + } + + valuesByKey.each(function(values, key) { + setResult(result, key, apply(values, depth, createResult, setResult)); + }); + + return result; + } + + function entries(map$$1, depth) { + if (++depth > keys.length) return map$$1; + var array, sortKey = sortKeys[depth - 1]; + if (rollup != null && depth >= keys.length) array = map$$1.entries(); + else array = [], map$$1.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); }); + return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array; + } + + return nest = { + object: function(array) { return apply(array, 0, createObject, setObject); }, + map: function(array) { return apply(array, 0, createMap, setMap); }, + entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); }, + key: function(d) { keys.push(d); return nest; }, + sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; }, + sortValues: function(order) { sortValues = order; return nest; }, + rollup: function(f) { rollup = f; return nest; } + }; +} + +function createObject() { + return {}; +} + +function setObject(object, key, value) { + object[key] = value; +} + +function createMap() { + return map(); +} + +function setMap(map$$1, key, value) { + map$$1.set(key, value); +} + +function Set() {} + +var proto = map.prototype; + +Set.prototype = set.prototype = { + constructor: Set, + has: proto.has, + add: function(value) { + value += ""; + this[prefix + value] = value; + return this; + }, + remove: proto.remove, + clear: proto.clear, + values: proto.keys, + size: proto.size, + empty: proto.empty, + each: proto.each +}; + +function set(object, f) { + var set = new Set; + + // Copy constructor. + if (object instanceof Set) object.each(function(value) { set.add(value); }); + + // Otherwise, assume it’s an array. + else if (object) { + var i = -1, n = object.length; + if (f == null) while (++i < n) set.add(object[i]); + else while (++i < n) set.add(f(object[i], i, object)); + } + + return set; +} + +function keys(map) { + var keys = []; + for (var key in map) keys.push(key); + return keys; +} + +function values(map) { + var values = []; + for (var key in map) values.push(map[key]); + return values; +} + +function entries(map) { + var entries = []; + for (var key in map) entries.push({key: key, value: map[key]}); + return entries; +} + +exports.nest = nest; +exports.set = set; +exports.map = map; +exports.keys = keys; +exports.values = values; +exports.entries = entries; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],28:[function(require,module,exports){ +// https://d3js.org/d3-color/ v1.2.3 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function define(constructor, factory, prototype) { + constructor.prototype = factory.prototype = prototype; + prototype.constructor = constructor; +} + +function extend(parent, definition) { + var prototype = Object.create(parent.prototype); + for (var key in definition) prototype[key] = definition[key]; + return prototype; +} + +function Color() {} + +var darker = 0.7; +var brighter = 1 / darker; + +var reI = "\\s*([+-]?\\d+)\\s*", + reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", + reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", + reHex3 = /^#([0-9a-f]{3})$/, + reHex6 = /^#([0-9a-f]{6})$/, + reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), + reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), + reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), + reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), + reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), + reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); + +var named = { + aliceblue: 0xf0f8ff, + antiquewhite: 0xfaebd7, + aqua: 0x00ffff, + aquamarine: 0x7fffd4, + azure: 0xf0ffff, + beige: 0xf5f5dc, + bisque: 0xffe4c4, + black: 0x000000, + blanchedalmond: 0xffebcd, + blue: 0x0000ff, + blueviolet: 0x8a2be2, + brown: 0xa52a2a, + burlywood: 0xdeb887, + cadetblue: 0x5f9ea0, + chartreuse: 0x7fff00, + chocolate: 0xd2691e, + coral: 0xff7f50, + cornflowerblue: 0x6495ed, + cornsilk: 0xfff8dc, + crimson: 0xdc143c, + cyan: 0x00ffff, + darkblue: 0x00008b, + darkcyan: 0x008b8b, + darkgoldenrod: 0xb8860b, + darkgray: 0xa9a9a9, + darkgreen: 0x006400, + darkgrey: 0xa9a9a9, + darkkhaki: 0xbdb76b, + darkmagenta: 0x8b008b, + darkolivegreen: 0x556b2f, + darkorange: 0xff8c00, + darkorchid: 0x9932cc, + darkred: 0x8b0000, + darksalmon: 0xe9967a, + darkseagreen: 0x8fbc8f, + darkslateblue: 0x483d8b, + darkslategray: 0x2f4f4f, + darkslategrey: 0x2f4f4f, + darkturquoise: 0x00ced1, + darkviolet: 0x9400d3, + deeppink: 0xff1493, + deepskyblue: 0x00bfff, + dimgray: 0x696969, + dimgrey: 0x696969, + dodgerblue: 0x1e90ff, + firebrick: 0xb22222, + floralwhite: 0xfffaf0, + forestgreen: 0x228b22, + fuchsia: 0xff00ff, + gainsboro: 0xdcdcdc, + ghostwhite: 0xf8f8ff, + gold: 0xffd700, + goldenrod: 0xdaa520, + gray: 0x808080, + green: 0x008000, + greenyellow: 0xadff2f, + grey: 0x808080, + honeydew: 0xf0fff0, + hotpink: 0xff69b4, + indianred: 0xcd5c5c, + indigo: 0x4b0082, + ivory: 0xfffff0, + khaki: 0xf0e68c, + lavender: 0xe6e6fa, + lavenderblush: 0xfff0f5, + lawngreen: 0x7cfc00, + lemonchiffon: 0xfffacd, + lightblue: 0xadd8e6, + lightcoral: 0xf08080, + lightcyan: 0xe0ffff, + lightgoldenrodyellow: 0xfafad2, + lightgray: 0xd3d3d3, + lightgreen: 0x90ee90, + lightgrey: 0xd3d3d3, + lightpink: 0xffb6c1, + lightsalmon: 0xffa07a, + lightseagreen: 0x20b2aa, + lightskyblue: 0x87cefa, + lightslategray: 0x778899, + lightslategrey: 0x778899, + lightsteelblue: 0xb0c4de, + lightyellow: 0xffffe0, + lime: 0x00ff00, + limegreen: 0x32cd32, + linen: 0xfaf0e6, + magenta: 0xff00ff, + maroon: 0x800000, + mediumaquamarine: 0x66cdaa, + mediumblue: 0x0000cd, + mediumorchid: 0xba55d3, + mediumpurple: 0x9370db, + mediumseagreen: 0x3cb371, + mediumslateblue: 0x7b68ee, + mediumspringgreen: 0x00fa9a, + mediumturquoise: 0x48d1cc, + mediumvioletred: 0xc71585, + midnightblue: 0x191970, + mintcream: 0xf5fffa, + mistyrose: 0xffe4e1, + moccasin: 0xffe4b5, + navajowhite: 0xffdead, + navy: 0x000080, + oldlace: 0xfdf5e6, + olive: 0x808000, + olivedrab: 0x6b8e23, + orange: 0xffa500, + orangered: 0xff4500, + orchid: 0xda70d6, + palegoldenrod: 0xeee8aa, + palegreen: 0x98fb98, + paleturquoise: 0xafeeee, + palevioletred: 0xdb7093, + papayawhip: 0xffefd5, + peachpuff: 0xffdab9, + peru: 0xcd853f, + pink: 0xffc0cb, + plum: 0xdda0dd, + powderblue: 0xb0e0e6, + purple: 0x800080, + rebeccapurple: 0x663399, + red: 0xff0000, + rosybrown: 0xbc8f8f, + royalblue: 0x4169e1, + saddlebrown: 0x8b4513, + salmon: 0xfa8072, + sandybrown: 0xf4a460, + seagreen: 0x2e8b57, + seashell: 0xfff5ee, + sienna: 0xa0522d, + silver: 0xc0c0c0, + skyblue: 0x87ceeb, + slateblue: 0x6a5acd, + slategray: 0x708090, + slategrey: 0x708090, + snow: 0xfffafa, + springgreen: 0x00ff7f, + steelblue: 0x4682b4, + tan: 0xd2b48c, + teal: 0x008080, + thistle: 0xd8bfd8, + tomato: 0xff6347, + turquoise: 0x40e0d0, + violet: 0xee82ee, + wheat: 0xf5deb3, + white: 0xffffff, + whitesmoke: 0xf5f5f5, + yellow: 0xffff00, + yellowgreen: 0x9acd32 +}; + +define(Color, color, { + displayable: function() { + return this.rgb().displayable(); + }, + hex: function() { + return this.rgb().hex(); + }, + toString: function() { + return this.rgb() + ""; + } +}); + +function color(format) { + var m; + format = (format + "").trim().toLowerCase(); + return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00 + : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000 + : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) + : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) + : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) + : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) + : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) + : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) + : named.hasOwnProperty(format) ? rgbn(named[format]) + : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) + : null; +} + +function rgbn(n) { + return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); +} + +function rgba(r, g, b, a) { + if (a <= 0) r = g = b = NaN; + return new Rgb(r, g, b, a); +} + +function rgbConvert(o) { + if (!(o instanceof Color)) o = color(o); + if (!o) return new Rgb; + o = o.rgb(); + return new Rgb(o.r, o.g, o.b, o.opacity); +} + +function rgb(r, g, b, opacity) { + return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); +} + +function Rgb(r, g, b, opacity) { + this.r = +r; + this.g = +g; + this.b = +b; + this.opacity = +opacity; +} + +define(Rgb, rgb, extend(Color, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); + }, + rgb: function() { + return this; + }, + displayable: function() { + return (0 <= this.r && this.r <= 255) + && (0 <= this.g && this.g <= 255) + && (0 <= this.b && this.b <= 255) + && (0 <= this.opacity && this.opacity <= 1); + }, + hex: function() { + return "#" + hex(this.r) + hex(this.g) + hex(this.b); + }, + toString: function() { + var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); + return (a === 1 ? "rgb(" : "rgba(") + + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + + (a === 1 ? ")" : ", " + a + ")"); + } +})); + +function hex(value) { + value = Math.max(0, Math.min(255, Math.round(value) || 0)); + return (value < 16 ? "0" : "") + value.toString(16); +} + +function hsla(h, s, l, a) { + if (a <= 0) h = s = l = NaN; + else if (l <= 0 || l >= 1) h = s = NaN; + else if (s <= 0) h = NaN; + return new Hsl(h, s, l, a); +} + +function hslConvert(o) { + if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Color)) o = color(o); + if (!o) return new Hsl; + if (o instanceof Hsl) return o; + o = o.rgb(); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + min = Math.min(r, g, b), + max = Math.max(r, g, b), + h = NaN, + s = max - min, + l = (max + min) / 2; + if (s) { + if (r === max) h = (g - b) / s + (g < b) * 6; + else if (g === max) h = (b - r) / s + 2; + else h = (r - g) / s + 4; + s /= l < 0.5 ? max + min : 2 - max - min; + h *= 60; + } else { + s = l > 0 && l < 1 ? 0 : h; + } + return new Hsl(h, s, l, o.opacity); +} + +function hsl(h, s, l, opacity) { + return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); +} + +function Hsl(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; +} + +define(Hsl, hsl, extend(Color, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Hsl(this.h, this.s, this.l * k, this.opacity); + }, + rgb: function() { + var h = this.h % 360 + (this.h < 0) * 360, + s = isNaN(h) || isNaN(this.s) ? 0 : this.s, + l = this.l, + m2 = l + (l < 0.5 ? l : 1 - l) * s, + m1 = 2 * l - m2; + return new Rgb( + hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), + hsl2rgb(h, m1, m2), + hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), + this.opacity + ); + }, + displayable: function() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) + && (0 <= this.l && this.l <= 1) + && (0 <= this.opacity && this.opacity <= 1); + } +})); + +/* From FvD 13.37, CSS Color Module Level 3 */ +function hsl2rgb(h, m1, m2) { + return (h < 60 ? m1 + (m2 - m1) * h / 60 + : h < 180 ? m2 + : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 + : m1) * 255; +} + +var deg2rad = Math.PI / 180; +var rad2deg = 180 / Math.PI; + +// https://beta.observablehq.com/@mbostock/lab-and-rgb +var K = 18, + Xn = 0.96422, + Yn = 1, + Zn = 0.82521, + t0 = 4 / 29, + t1 = 6 / 29, + t2 = 3 * t1 * t1, + t3 = t1 * t1 * t1; + +function labConvert(o) { + if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); + if (o instanceof Hcl) { + if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); + var h = o.h * deg2rad; + return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); + } + if (!(o instanceof Rgb)) o = rgbConvert(o); + var r = rgb2lrgb(o.r), + g = rgb2lrgb(o.g), + b = rgb2lrgb(o.b), + y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; + if (r === g && g === b) x = z = y; else { + x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); + z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); + } + return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); +} + +function gray(l, opacity) { + return new Lab(l, 0, 0, opacity == null ? 1 : opacity); +} + +function lab(l, a, b, opacity) { + return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); +} + +function Lab(l, a, b, opacity) { + this.l = +l; + this.a = +a; + this.b = +b; + this.opacity = +opacity; +} + +define(Lab, lab, extend(Color, { + brighter: function(k) { + return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + darker: function(k) { + return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); + }, + rgb: function() { + var y = (this.l + 16) / 116, + x = isNaN(this.a) ? y : y + this.a / 500, + z = isNaN(this.b) ? y : y - this.b / 200; + x = Xn * lab2xyz(x); + y = Yn * lab2xyz(y); + z = Zn * lab2xyz(z); + return new Rgb( + lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), + lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), + lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), + this.opacity + ); + } +})); + +function xyz2lab(t) { + return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; +} + +function lab2xyz(t) { + return t > t1 ? t * t * t : t2 * (t - t0); +} + +function lrgb2rgb(x) { + return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); +} + +function rgb2lrgb(x) { + return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); +} + +function hclConvert(o) { + if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); + if (!(o instanceof Lab)) o = labConvert(o); + if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity); + var h = Math.atan2(o.b, o.a) * rad2deg; + return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); +} + +function lch(l, c, h, opacity) { + return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); +} + +function hcl(h, c, l, opacity) { + return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); +} + +function Hcl(h, c, l, opacity) { + this.h = +h; + this.c = +c; + this.l = +l; + this.opacity = +opacity; +} + +define(Hcl, hcl, extend(Color, { + brighter: function(k) { + return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); + }, + darker: function(k) { + return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); + }, + rgb: function() { + return labConvert(this).rgb(); + } +})); + +var A = -0.14861, + B = +1.78277, + C = -0.29227, + D = -0.90649, + E = +1.97294, + ED = E * D, + EB = E * B, + BC_DA = B * C - D * A; + +function cubehelixConvert(o) { + if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); + if (!(o instanceof Rgb)) o = rgbConvert(o); + var r = o.r / 255, + g = o.g / 255, + b = o.b / 255, + l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), + bl = b - l, + k = (E * (g - l) - C * bl) / D, + s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 + h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; + return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); +} + +function cubehelix(h, s, l, opacity) { + return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); +} + +function Cubehelix(h, s, l, opacity) { + this.h = +h; + this.s = +s; + this.l = +l; + this.opacity = +opacity; +} + +define(Cubehelix, cubehelix, extend(Color, { + brighter: function(k) { + k = k == null ? brighter : Math.pow(brighter, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + darker: function(k) { + k = k == null ? darker : Math.pow(darker, k); + return new Cubehelix(this.h, this.s, this.l * k, this.opacity); + }, + rgb: function() { + var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, + l = +this.l, + a = isNaN(this.s) ? 0 : this.s * l * (1 - l), + cosh = Math.cos(h), + sinh = Math.sin(h); + return new Rgb( + 255 * (l + a * (A * cosh + B * sinh)), + 255 * (l + a * (C * cosh + D * sinh)), + 255 * (l + a * (E * cosh)), + this.opacity + ); + } +})); + +exports.color = color; +exports.rgb = rgb; +exports.hsl = hsl; +exports.lab = lab; +exports.hcl = hcl; +exports.lch = lch; +exports.gray = gray; +exports.cubehelix = cubehelix; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],29:[function(require,module,exports){ +// https://d3js.org/d3-contour/ v1.3.2 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3)); +}(this, (function (exports,d3Array) { 'use strict'; + +var array = Array.prototype; + +var slice = array.slice; + +function ascending(a, b) { + return a - b; +} + +function area(ring) { + var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1]; + while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1]; + return area; +} + +function constant(x) { + return function() { + return x; + }; +} + +function contains(ring, hole) { + var i = -1, n = hole.length, c; + while (++i < n) if (c = ringContains(ring, hole[i])) return c; + return 0; +} + +function ringContains(ring, point) { + var x = point[0], y = point[1], contains = -1; + for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) { + var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1]; + if (segmentContains(pi, pj, point)) return 0; + if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains; + } + return contains; +} + +function segmentContains(a, b, c) { + var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]); +} + +function collinear(a, b, c) { + return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]); +} + +function within(p, q, r) { + return p <= q && q <= r || r <= q && q <= p; +} + +function noop() {} + +var cases = [ + [], + [[[1.0, 1.5], [0.5, 1.0]]], + [[[1.5, 1.0], [1.0, 1.5]]], + [[[1.5, 1.0], [0.5, 1.0]]], + [[[1.0, 0.5], [1.5, 1.0]]], + [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], + [[[1.0, 0.5], [1.0, 1.5]]], + [[[1.0, 0.5], [0.5, 1.0]]], + [[[0.5, 1.0], [1.0, 0.5]]], + [[[1.0, 1.5], [1.0, 0.5]]], + [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], + [[[1.5, 1.0], [1.0, 0.5]]], + [[[0.5, 1.0], [1.5, 1.0]]], + [[[1.0, 1.5], [1.5, 1.0]]], + [[[0.5, 1.0], [1.0, 1.5]]], + [] +]; + +function contours() { + var dx = 1, + dy = 1, + threshold = d3Array.thresholdSturges, + smooth = smoothLinear; + + function contours(values) { + var tz = threshold(values); + + // Convert number of thresholds into uniform thresholds. + if (!Array.isArray(tz)) { + var domain = d3Array.extent(values), start = domain[0], stop = domain[1]; + tz = d3Array.tickStep(start, stop, tz); + tz = d3Array.range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz); + } else { + tz = tz.slice().sort(ascending); + } + + return tz.map(function(value) { + return contour(values, value); + }); + } + + // Accumulate, smooth contour rings, assign holes to exterior rings. + // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js + function contour(values, value) { + var polygons = [], + holes = []; + + isorings(values, value, function(ring) { + smooth(ring, values, value); + if (area(ring) > 0) polygons.push([ring]); + else holes.push(ring); + }); + + holes.forEach(function(hole) { + for (var i = 0, n = polygons.length, polygon; i < n; ++i) { + if (contains((polygon = polygons[i])[0], hole) !== -1) { + polygon.push(hole); + return; + } + } + }); + + return { + type: "MultiPolygon", + value: value, + coordinates: polygons + }; + } + + // Marching squares with isolines stitched into rings. + // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js + function isorings(values, value, callback) { + var fragmentByStart = new Array, + fragmentByEnd = new Array, + x, y, t0, t1, t2, t3; + + // Special case for the first row (y = -1, t2 = t3 = 0). + x = y = -1; + t1 = values[0] >= value; + cases[t1 << 1].forEach(stitch); + while (++x < dx - 1) { + t0 = t1, t1 = values[x + 1] >= value; + cases[t0 | t1 << 1].forEach(stitch); + } + cases[t1 << 0].forEach(stitch); + + // General case for the intermediate rows. + while (++y < dy - 1) { + x = -1; + t1 = values[y * dx + dx] >= value; + t2 = values[y * dx] >= value; + cases[t1 << 1 | t2 << 2].forEach(stitch); + while (++x < dx - 1) { + t0 = t1, t1 = values[y * dx + dx + x + 1] >= value; + t3 = t2, t2 = values[y * dx + x + 1] >= value; + cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch); + } + cases[t1 | t2 << 3].forEach(stitch); + } + + // Special case for the last row (y = dy - 1, t0 = t1 = 0). + x = -1; + t2 = values[y * dx] >= value; + cases[t2 << 2].forEach(stitch); + while (++x < dx - 1) { + t3 = t2, t2 = values[y * dx + x + 1] >= value; + cases[t2 << 2 | t3 << 3].forEach(stitch); + } + cases[t2 << 3].forEach(stitch); + + function stitch(line) { + var start = [line[0][0] + x, line[0][1] + y], + end = [line[1][0] + x, line[1][1] + y], + startIndex = index(start), + endIndex = index(end), + f, g; + if (f = fragmentByEnd[startIndex]) { + if (g = fragmentByStart[endIndex]) { + delete fragmentByEnd[f.end]; + delete fragmentByStart[g.start]; + if (f === g) { + f.ring.push(end); + callback(f.ring); + } else { + fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)}; + } + } else { + delete fragmentByEnd[f.end]; + f.ring.push(end); + fragmentByEnd[f.end = endIndex] = f; + } + } else if (f = fragmentByStart[endIndex]) { + if (g = fragmentByEnd[startIndex]) { + delete fragmentByStart[f.start]; + delete fragmentByEnd[g.end]; + if (f === g) { + f.ring.push(end); + callback(f.ring); + } else { + fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)}; + } + } else { + delete fragmentByStart[f.start]; + f.ring.unshift(start); + fragmentByStart[f.start = startIndex] = f; + } + } else { + fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]}; + } + } + } + + function index(point) { + return point[0] * 2 + point[1] * (dx + 1) * 4; + } + + function smoothLinear(ring, values, value) { + ring.forEach(function(point) { + var x = point[0], + y = point[1], + xt = x | 0, + yt = y | 0, + v0, + v1 = values[yt * dx + xt]; + if (x > 0 && x < dx && xt === x) { + v0 = values[yt * dx + xt - 1]; + point[0] = x + (value - v0) / (v1 - v0) - 0.5; + } + if (y > 0 && y < dy && yt === y) { + v0 = values[(yt - 1) * dx + xt]; + point[1] = y + (value - v0) / (v1 - v0) - 0.5; + } + }); + } + + contours.contour = contour; + + contours.size = function(_) { + if (!arguments.length) return [dx, dy]; + var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); + if (!(_0 > 0) || !(_1 > 0)) throw new Error("invalid size"); + return dx = _0, dy = _1, contours; + }; + + contours.thresholds = function(_) { + return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold; + }; + + contours.smooth = function(_) { + return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear; + }; + + return contours; +} + +// TODO Optimize edge cases. +// TODO Optimize index calculation. +// TODO Optimize arguments. +function blurX(source, target, r) { + var n = source.width, + m = source.height, + w = (r << 1) + 1; + for (var j = 0; j < m; ++j) { + for (var i = 0, sr = 0; i < n + r; ++i) { + if (i < n) { + sr += source.data[i + j * n]; + } + if (i >= r) { + if (i >= w) { + sr -= source.data[i - w + j * n]; + } + target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w); + } + } + } +} + +// TODO Optimize edge cases. +// TODO Optimize index calculation. +// TODO Optimize arguments. +function blurY(source, target, r) { + var n = source.width, + m = source.height, + w = (r << 1) + 1; + for (var i = 0; i < n; ++i) { + for (var j = 0, sr = 0; j < m + r; ++j) { + if (j < m) { + sr += source.data[i + j * n]; + } + if (j >= r) { + if (j >= w) { + sr -= source.data[i + (j - w) * n]; + } + target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w); + } + } + } +} + +function defaultX(d) { + return d[0]; +} + +function defaultY(d) { + return d[1]; +} + +function defaultWeight() { + return 1; +} + +function density() { + var x = defaultX, + y = defaultY, + weight = defaultWeight, + dx = 960, + dy = 500, + r = 20, // blur radius + k = 2, // log2(grid cell size) + o = r * 3, // grid offset, to pad for blur + n = (dx + o * 2) >> k, // grid width + m = (dy + o * 2) >> k, // grid height + threshold = constant(20); + + function density(data) { + var values0 = new Float32Array(n * m), + values1 = new Float32Array(n * m); + + data.forEach(function(d, i, data) { + var xi = (+x(d, i, data) + o) >> k, + yi = (+y(d, i, data) + o) >> k, + wi = +weight(d, i, data); + if (xi >= 0 && xi < n && yi >= 0 && yi < m) { + values0[xi + yi * n] += wi; + } + }); + + // TODO Optimize. + blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); + blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); + blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); + blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); + blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); + blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); + + var tz = threshold(values0); + + // Convert number of thresholds into uniform thresholds. + if (!Array.isArray(tz)) { + var stop = d3Array.max(values0); + tz = d3Array.tickStep(0, stop, tz); + tz = d3Array.range(0, Math.floor(stop / tz) * tz, tz); + tz.shift(); + } + + return contours() + .thresholds(tz) + .size([n, m]) + (values0) + .map(transform); + } + + function transform(geometry) { + geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel. + geometry.coordinates.forEach(transformPolygon); + return geometry; + } + + function transformPolygon(coordinates) { + coordinates.forEach(transformRing); + } + + function transformRing(coordinates) { + coordinates.forEach(transformPoint); + } + + // TODO Optimize. + function transformPoint(coordinates) { + coordinates[0] = coordinates[0] * Math.pow(2, k) - o; + coordinates[1] = coordinates[1] * Math.pow(2, k) - o; + } + + function resize() { + o = r * 3; + n = (dx + o * 2) >> k; + m = (dy + o * 2) >> k; + return density; + } + + density.x = function(_) { + return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), density) : x; + }; + + density.y = function(_) { + return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), density) : y; + }; + + density.weight = function(_) { + return arguments.length ? (weight = typeof _ === "function" ? _ : constant(+_), density) : weight; + }; + + density.size = function(_) { + if (!arguments.length) return [dx, dy]; + var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); + if (!(_0 >= 0) && !(_0 >= 0)) throw new Error("invalid size"); + return dx = _0, dy = _1, resize(); + }; + + density.cellSize = function(_) { + if (!arguments.length) return 1 << k; + if (!((_ = +_) >= 1)) throw new Error("invalid cell size"); + return k = Math.floor(Math.log(_) / Math.LN2), resize(); + }; + + density.thresholds = function(_) { + return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold; + }; + + density.bandwidth = function(_) { + if (!arguments.length) return Math.sqrt(r * (r + 1)); + if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth"); + return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize(); + }; + + return density; +} + +exports.contours = contours; +exports.contourDensity = density; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-array":23}],30:[function(require,module,exports){ +// d3-dag Version 0.2.4. Copyright 2019 undefined. +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + + // Compute x coordinates for nodes that maximizes the spread of nodes in [0, 1] + function center() { + function coordSpread(layers, separation) { + const maxWidth = Math.max( + ...layers.map((layer) => { + layer[0].x = 0; + layer.slice(1).forEach((node, i) => { + const prev = layer[i]; + node.x = prev.x + separation(prev, node); + }); + return layer[layer.length - 1].x; + }), + ); + layers.forEach((layer) => { + const halfWidth = layer[layer.length - 1].x / 2; + layer.forEach((node) => { + node.x = (node.x - halfWidth) / maxWidth + 0.5; + }); + }); + return layers; + } + + return coordSpread; + } + + // Compute x coordinates for nodes that greedily assigns coordinates and then spaces them out + + // TODO Implement other methods for initial greedy assignment + + function greedy() { + let assignment = mean; + + function coordGreedy(layers, separation) { + // Assign degrees + // The 3 at the end ensures that dummy nodes have the lowest priority + layers.forEach((layer) => + layer.forEach((n) => (n.degree = n.children.length + (n.data ? 0 : -3))), + ); + layers.forEach((layer) => + layer.forEach((n) => n.children.forEach((c) => ++c.degree)), + ); + + // Set first nodes + layers[0][0].x = 0; + layers[0].slice(1).forEach((node, i) => { + const last = layers[0][i]; + node.x = last.x + separation(last, node); + }); + + // Set remaining nodes + layers.slice(0, layers.length - 1).forEach((top, i) => { + const bottom = layers[i + 1]; + assignment(top, bottom); + // FIXME This order is import, i.e. we right and then left. We should actually do both, and then take the average + bottom + .map((n, j) => [n, j]) + .sort(([an, aj], [bn, bj]) => + an.degree === bn.degree ? aj - bj : bn.degree - an.degree, + ) + .forEach(([n, j]) => { + bottom.slice(j + 1).reduce((last, node) => { + node.x = Math.max(node.x, last.x + separation(last, node)); + return node; + }, n); + bottom + .slice(0, j) + .reverse() + .reduce((last, node) => { + node.x = Math.min(node.x, last.x - separation(node, last)); + return node; + }, n); + }); + }); + + const min = Math.min( + ...layers.map((layer) => Math.min(...layer.map((n) => n.x))), + ); + const span = + Math.max(...layers.map((layer) => Math.max(...layer.map((n) => n.x)))) - + min; + layers.forEach((layer) => layer.forEach((n) => (n.x = (n.x - min) / span))); + layers.forEach((layer) => layer.forEach((n) => delete n.degree)); + return layers; + } + + return coordGreedy; + } + + function mean(topLayer, bottomLayer) { + bottomLayer.forEach((node) => { + node.x = 0.0; + node._count = 0.0; + }); + topLayer.forEach((n) => + n.children.forEach((c) => (c.x += (n.x - c.x) / ++c._count)), + ); + bottomLayer.forEach((n) => delete n._count); + } + + let epsilon = 1.0e-60; + let tmpa; + let tmpb; + + do { + epsilon += epsilon; + tmpa = 1 + 0.1 * epsilon; + tmpb = 1 + 0.2 * epsilon; + } while (tmpa <= 1 || tmpb <= 1); + + var vsmall = epsilon; + + function dpori(a, lda, n) { + let kp1, t; + + for (let k = 1; k <= n; k += 1) { + a[k][k] = 1 / a[k][k]; + t = -a[k][k]; + + // dscal(k - 1, t, a[1][k], 1); + for (let i = 1; i < k; i += 1) { + a[i][k] *= t; + } + + kp1 = k + 1; + if (n < kp1) { + break; + } + for (let j = kp1; j <= n; j += 1) { + t = a[k][j]; + a[k][j] = 0; + + // daxpy(k, t, a[1][k], 1, a[1][j], 1); + for (let i = 1; i <= k; i += 1) { + a[i][j] += t * a[i][k]; + } + } + } + } + + var dpori_1 = dpori; + + function dposl(a, lda, n, b) { + let k, t; + + for (k = 1; k <= n; k += 1) { + + // t = ddot(k - 1, a[1][k], 1, b[1], 1); + t = 0; + for (let i = 1; i < k; i += 1) { + t += a[i][k] * b[i]; + } + + b[k] = (b[k] - t) / a[k][k]; + } + + for (let kb = 1; kb <= n; kb += 1) { + k = n + 1 - kb; + b[k] /= a[k][k]; + t = -b[k]; + + // daxpy(k - 1, t, a[1][k], 1, b[1], 1); + for (let i = 1; i < k; i += 1) { + b[i] += t * a[i][k]; + } + } + } + + var dposl_1 = dposl; + + function dpofa(a, lda, n, info) { + let jm1, t, s; + + for (let j = 1; j <= n; j += 1) { + info[1] = j; + s = 0; + jm1 = j - 1; + if (jm1 < 1) { + s = a[j][j] - s; + if (s <= 0) { + break; + } + a[j][j] = Math.sqrt(s); + } else { + for (let k = 1; k <= jm1; k += 1) { + + // t = a[k][j] - ddot(k - 1, a[1][k], 1, a[1][j], 1); + t = a[k][j]; + for (let i = 1; i < k; i += 1) { + t -= a[i][j] * a[i][k]; + } + t /= a[k][k]; + a[k][j] = t; + s += t * t; + } + s = a[j][j] - s; + if (s <= 0) { + break; + } + a[j][j] = Math.sqrt(s); + } + info[1] = 0; + } + } + + var dpofa_1 = dpofa; + + function qpgen2(dmat, dvec, fddmat, n, sol, lagr, crval, amat, bvec, fdamat, q, meq, iact, nnact = 0, iter, work, ierr) { + let l1, it1, nvl, nact, temp, sum, t1, tt, gc, gs, nu, t1inf, t2min, go; + + const r = Math.min(n, q); + + let l = 2 * n + (r * (r + 5)) / 2 + 2 * q + 1; + + for (let i = 1; i <= n; i += 1) { + work[i] = dvec[i]; + } + for (let i = n + 1; i <= l; i += 1) { + work[i] = 0; + } + for (let i = 1; i <= q; i += 1) { + iact[i] = 0; + lagr[i] = 0; + } + + const info = []; + + if (ierr[1] === 0) { + dpofa_1(dmat, fddmat, n, info); + if (info[1] !== 0) { + ierr[1] = 2; + return; + } + dposl_1(dmat, fddmat, n, dvec); + dpori_1(dmat, fddmat, n); + } else { + for (let j = 1; j <= n; j += 1) { + sol[j] = 0; + for (let i = 1; i <= j; i += 1) { + sol[j] += dmat[i][j] * dvec[i]; + } + } + for (let j = 1; j <= n; j += 1) { + dvec[j] = 0; + for (let i = j; i <= n; i += 1) { + dvec[j] += dmat[j][i] * sol[i]; + } + } + } + + crval[1] = 0; + for (let j = 1; j <= n; j += 1) { + sol[j] = dvec[j]; + crval[1] += work[j] * sol[j]; + work[j] = 0; + for (let i = j + 1; i <= n; i += 1) { + dmat[i][j] = 0; + } + } + crval[1] = -crval[1] / 2; + ierr[1] = 0; + + const iwzv = n; + const iwrv = iwzv + n; + const iwuv = iwrv + r; + const iwrm = iwuv + r + 1; + const iwsv = iwrm + (r * (r + 1)) / 2; + const iwnbv = iwsv + q; + + for (let i = 1; i <= q; i += 1) { + sum = 0; + for (let j = 1; j <= n; j += 1) { + sum += amat[j][i] * amat[j][i]; + } + work[iwnbv + i] = Math.sqrt(sum); + } + + nact = nnact; + + iter[1] = 0; + iter[2] = 0; + + function fnGoto50() { + iter[1] += 1; + + l = iwsv; + for (let i = 1; i <= q; i += 1) { + l += 1; + sum = -bvec[i]; + for (let j = 1; j <= n; j += 1) { + sum += amat[j][i] * sol[j]; + } + if (Math.abs(sum) < vsmall) { + sum = 0; + } + if (i > meq) { + work[l] = sum; + } else { + work[l] = -Math.abs(sum); + if (sum > 0) { + for (let j = 1; j <= n; j += 1) { + amat[j][i] = -amat[j][i]; + } + bvec[i] = -bvec[i]; + } + } + } + + for (let i = 1; i <= nact; i += 1) { + work[iwsv + iact[i]] = 0; + } + + nvl = 0; + temp = 0; + for (let i = 1; i <= q; i += 1) { + if (work[iwsv + i] < temp * work[iwnbv + i]) { + nvl = i; + temp = work[iwsv + i] / work[iwnbv + i]; + } + } + if (nvl === 0) { + for (let i = 1; i <= nact; i += 1) { + lagr[iact[i]] = work[iwuv + i]; + } + return 999; + } + + return 0; + } + + function fnGoto55() { + for (let i = 1; i <= n; i += 1) { + sum = 0; + for (let j = 1; j <= n; j += 1) { + sum += dmat[j][i] * amat[j][nvl]; + } + work[i] = sum; + } + + l1 = iwzv; + for (let i = 1; i <= n; i += 1) { + work[l1 + i] = 0; + } + for (let j = nact + 1; j <= n; j += 1) { + for (let i = 1; i <= n; i += 1) { + work[l1 + i] = work[l1 + i] + dmat[i][j] * work[j]; + } + } + + t1inf = true; + for (let i = nact; i >= 1; i -= 1) { + sum = work[i]; + l = iwrm + (i * (i + 3)) / 2; + l1 = l - i; + for (let j = i + 1; j <= nact; j += 1) { + sum -= work[l] * work[iwrv + j]; + l += j; + } + sum /= work[l1]; + work[iwrv + i] = sum; + if (iact[i] <= meq) { + continue; + } + if (sum <= 0) { + continue; + } + t1inf = false; + it1 = i; + } + + if (!t1inf) { + t1 = work[iwuv + it1] / work[iwrv + it1]; + for (let i = 1; i <= nact; i += 1) { + if (iact[i] <= meq) { + continue; + } + if (work[iwrv + i] <= 0) { + continue; + } + temp = work[iwuv + i] / work[iwrv + i]; + if (temp < t1) { + t1 = temp; + it1 = i; + } + } + } + + sum = 0; + for (let i = iwzv + 1; i <= iwzv + n; i += 1) { + sum += work[i] * work[i]; + } + if (Math.abs(sum) <= vsmall) { + if (t1inf) { + ierr[1] = 1; + + return 999; // GOTO 999 + } + for (let i = 1; i <= nact; i += 1) { + work[iwuv + i] = work[iwuv + i] - t1 * work[iwrv + i]; + } + work[iwuv + nact + 1] = work[iwuv + nact + 1] + t1; + + return 700; // GOTO 700 + } + sum = 0; + for (let i = 1; i <= n; i += 1) { + sum += work[iwzv + i] * amat[i][nvl]; + } + tt = -work[iwsv + nvl] / sum; + t2min = true; + if (!t1inf) { + if (t1 < tt) { + tt = t1; + t2min = false; + } + } + + for (let i = 1; i <= n; i += 1) { + sol[i] += tt * work[iwzv + i]; + if (Math.abs(sol[i]) < vsmall) { + sol[i] = 0; + } + } + + crval[1] += tt * sum * (tt / 2 + work[iwuv + nact + 1]); + for (let i = 1; i <= nact; i += 1) { + work[iwuv + i] = work[iwuv + i] - tt * work[iwrv + i]; + } + work[iwuv + nact + 1] = work[iwuv + nact + 1] + tt; + + if (t2min) { + nact += 1; + iact[nact] = nvl; + + l = iwrm + ((nact - 1) * nact) / 2 + 1; + for (let i = 1; i <= nact - 1; i += 1) { + work[l] = work[i]; + l += 1; + } + + if (nact === n) { + work[l] = work[n]; + } else { + for (let i = n; i >= nact + 1; i -= 1) { + if (work[i] === 0) { + continue; + } + gc = Math.max(Math.abs(work[i - 1]), Math.abs(work[i])); + gs = Math.min(Math.abs(work[i - 1]), Math.abs(work[i])); + if (work[i - 1] >= 0) { + temp = Math.abs(gc * Math.sqrt(1 + gs * gs / + (gc * gc))); + } else { + temp = -Math.abs(gc * Math.sqrt(1 + gs * gs / + (gc * gc))); + } + gc = work[i - 1] / temp; + gs = work[i] / temp; + + if (gc === 1) { + continue; + } + if (gc === 0) { + work[i - 1] = gs * temp; + for (let j = 1; j <= n; j += 1) { + temp = dmat[j][i - 1]; + dmat[j][i - 1] = dmat[j][i]; + dmat[j][i] = temp; + } + } else { + work[i - 1] = temp; + nu = gs / (1 + gc); + for (let j = 1; j <= n; j += 1) { + temp = gc * dmat[j][i - 1] + gs * dmat[j][i]; + dmat[j][i] = nu * (dmat[j][i - 1] + temp) - + dmat[j][i]; + dmat[j][i - 1] = temp; + + } + } + } + work[l] = work[nact]; + } + } else { + sum = -bvec[nvl]; + for (let j = 1; j <= n; j += 1) { + sum += sol[j] * amat[j][nvl]; + } + if (nvl > meq) { + work[iwsv + nvl] = sum; + } else { + work[iwsv + nvl] = -Math.abs(sum); + if (sum > 0) { + for (let j = 1; j <= n; j += 1) { + amat[j][nvl] = -amat[j][nvl]; + } + bvec[nvl] = -bvec[nvl]; + } + } + + return 700; // GOTO 700 + } + + return 0; + } + + function fnGoto797() { + l = iwrm + (it1 * (it1 + 1)) / 2 + 1; + l1 = l + it1; + if (work[l1] === 0) { + return 798; // GOTO 798 + } + gc = Math.max(Math.abs(work[l1 - 1]), Math.abs(work[l1])); + gs = Math.min(Math.abs(work[l1 - 1]), Math.abs(work[l1])); + if (work[l1 - 1] >= 0) { + temp = Math.abs(gc * Math.sqrt(1 + gs * gs / (gc * gc))); + } else { + temp = -Math.abs(gc * Math.sqrt(1 + gs * gs / (gc * gc))); + } + gc = work[l1 - 1] / temp; + gs = work[l1] / temp; + + if (gc === 1) { + return 798; // GOTO 798 + } + if (gc === 0) { + for (let i = it1 + 1; i <= nact; i += 1) { + temp = work[l1 - 1]; + work[l1 - 1] = work[l1]; + work[l1] = temp; + l1 += i; + } + for (let i = 1; i <= n; i += 1) { + temp = dmat[i][it1]; + dmat[i][it1] = dmat[i][it1 + 1]; + dmat[i][it1 + 1] = temp; + } + } else { + nu = gs / (1 + gc); + for (let i = it1 + 1; i <= nact; i += 1) { + temp = gc * work[l1 - 1] + gs * work[l1]; + work[l1] = nu * (work[l1 - 1] + temp) - work[l1]; + work[l1 - 1] = temp; + l1 += i; + } + for (let i = 1; i <= n; i += 1) { + temp = gc * dmat[i][it1] + gs * dmat[i][it1 + 1]; + dmat[i][it1 + 1] = nu * (dmat[i][it1] + temp) - + dmat[i][it1 + 1]; + dmat[i][it1] = temp; + } + } + + return 0; + } + + function fnGoto798() { + l1 = l - it1; + for (let i = 1; i <= it1; i += 1) { + work[l1] = work[l]; + l += 1; + l1 += 1; + } + + work[iwuv + it1] = work[iwuv + it1 + 1]; + iact[it1] = iact[it1 + 1]; + it1 += 1; + if (it1 < nact) { + return 797; // GOTO 797 + } + + return 0; + } + + function fnGoto799() { + work[iwuv + nact] = work[iwuv + nact + 1]; + work[iwuv + nact + 1] = 0; + iact[nact] = 0; + nact -= 1; + iter[2] += 1; + + return 0; + } + + go = 0; + while (true) { // eslint-disable-line no-constant-condition + go = fnGoto50(); + if (go === 999) { + return; + } + while (true) { // eslint-disable-line no-constant-condition + go = fnGoto55(); + if (go === 0) { + break; + } + if (go === 999) { + return; + } + if (go === 700) { + if (it1 === nact) { + fnGoto799(); + } else { + while (true) { // eslint-disable-line no-constant-condition + fnGoto797(); + go = fnGoto798(); + if (go !== 797) { + break; + } + } + fnGoto799(); + } + } + } + } + + } + + var qpgen2_1 = qpgen2; + + function solveQP(Dmat, dvec, Amat, bvec = [], meq = 0, factorized = [0, 0]) { + const crval = []; + const iact = []; + const sol = []; + const lagr = []; + const work = []; + const iter = []; + + let message = ""; + + // In Fortran the array index starts from 1 + const n = Dmat.length - 1; + const q = Amat[1].length - 1; + + if (!bvec) { + for (let i = 1; i <= q; i += 1) { + bvec[i] = 0; + } + } + + if (n !== Dmat[1].length - 1) { + message = "Dmat is not symmetric!"; + } + if (n !== dvec.length - 1) { + message = "Dmat and dvec are incompatible!"; + } + if (n !== Amat.length - 1) { + message = "Amat and dvec are incompatible!"; + } + if (q !== bvec.length - 1) { + message = "Amat and bvec are incompatible!"; + } + if ((meq > q) || (meq < 0)) { + message = "Value of meq is invalid!"; + } + + if (message !== "") { + return { + message + }; + } + + for (let i = 1; i <= q; i += 1) { + iact[i] = 0; + lagr[i] = 0; + } + + const nact = 0; + const r = Math.min(n, q); + + for (let i = 1; i <= n; i += 1) { + sol[i] = 0; + } + crval[1] = 0; + for (let i = 1; i <= (2 * n + (r * (r + 5)) / 2 + 2 * q + 1); i += 1) { + work[i] = 0; + } + for (let i = 1; i <= 2; i += 1) { + iter[i] = 0; + } + + qpgen2_1(Dmat, dvec, n, n, sol, lagr, crval, Amat, bvec, n, q, meq, iact, nact, iter, work, factorized); + + if (factorized[1] === 1) { + message = "constraints are inconsistent, no solution!"; + } + if (factorized[1] === 2) { + message = "matrix D in quadratic function is not positive definite!"; + } + + return { + solution: sol, + Lagrangian: lagr, + value: crval, + unconstrained_solution: dvec, // eslint-disable-line camelcase + iterations: iter, + iact, + message + }; + } + + var solveQP_1 = solveQP; + + var quadprog = { + solveQP: solveQP_1 + }; + + const { solveQP: solveQP$1 } = quadprog; + + var wrapper = function(qmat, cvec, amat, bvec, meq = 0, factorized = false) { + const Dmat = [null].concat(qmat.map(row => [null].concat(row))); + const dvec = [null].concat(cvec.map(v => -v)); + const Amat = [null].concat(amat.length === 0 ? new Array(qmat.length).fill([null]) : amat[0].map((_, i) => [null].concat(amat.map(row => -row[i])))); + const bvecp = [null].concat(bvec.map(v => -v)); + const { + solution, + Lagrangian: lagrangian, + value: boxedVal, + unconstrained_solution: unconstrained, + + iterations: iters, + iact, + message + } = solveQP$1(Dmat, dvec, Amat, bvecp, meq, [, +factorized]); // eslint-disable-line no-sparse-arrays + + if (message.length > 0) { + throw new Error(message); + } else { + solution.shift(); + lagrangian.shift(); + unconstrained.shift(); + iact.push(0); + const active = iact.slice(1, iact.indexOf(0)).map(v => v - 1); + const [, value] = boxedVal; + const [, iterations, inactive] = iters; + + return { + solution, + lagrangian, + unconstrained, + iterations, + inactive, + active, + value + }; + } + }; + + var quadprogJs = wrapper; + + // Assign coords to layers by solving a QP + + // Compute indices used to index arrays + function indices(layers) { + const inds = {}; + let i = 0; + layers.forEach((layer) => layer.forEach((n) => (inds[n.id] = i++))); + return inds; + } + + // Compute constraint arrays for layer separation + function sep(layers, inds, separation) { + const n = 1 + Math.max(...Object.values(inds)); + const A = []; + const b = []; + + layers.forEach((layer) => + layer.slice(0, layer.length - 1).forEach((first, i) => { + const second = layer[i + 1]; + const find = inds[first.id]; + const sind = inds[second.id]; + const cons = new Array(n).fill(0); + cons[find] = 1; + cons[sind] = -1; + A.push(cons); + b.push(-separation(first, second)); + }), + ); + + return [A, b]; + } + + // Update Q that minimizes edge distance squared + function minDist(Q, pind, cind, coef) { + Q[cind][cind] += coef; + Q[cind][pind] -= coef; + Q[pind][cind] -= coef; + Q[pind][pind] += coef; + } + + // Update Q that minimizes curve of edges through a node + function minBend(Q, pind, nind, cind, coef) { + Q[cind][cind] += coef; + Q[cind][nind] -= 2 * coef; + Q[cind][pind] += coef; + Q[nind][cind] -= 2 * coef; + Q[nind][nind] += 4 * coef; + Q[nind][pind] -= 2 * coef; + Q[pind][cind] += coef; + Q[pind][nind] -= 2 * coef; + Q[pind][pind] += coef; + } + + // Solve for node positions + function solve(Q, c, A, b, meq = 0) { + // Arbitrarily set the last coordinate to 0, which makes the formula valid + // This is simpler than special casing the last element + c.pop(); + Q.pop(); + Q.forEach((row) => row.pop()); + A.forEach((row) => row.pop()); + + // Solve + const { solution } = quadprogJs(Q, c, A, b, meq); + + // Undo last coordinate removal + solution.push(0); + return solution; + } + + // Assign nodes x in [0, 1] based on solution + function layout(layers, inds, solution) { + // Rescale to be in [0, 1] + const min = Math.min(...solution); + const span = Math.max(...solution) - min; + layers.forEach((layer) => + layer.forEach((n) => (n.x = (solution[inds[n.id]] - min) / span)), + ); + } + + // Assign nodes in each layer an x coordinate in [0, 1] that minimizes curves + + function checkWeight(weight) { + if (weight < 0 || weight >= 1) { + throw new Error(`weight must be in [0, 1), but was ${weight}`); + } else { + return weight; + } + } + + function minCurve() { + let weight = 0.5; + + function coordMinCurve(layers, separation) { + const inds = indices(layers); + const n = Object.keys(inds).length; + const [A, b] = sep(layers, inds, separation); + + const c = new Array(n).fill(0); + const Q = new Array(n).fill(null).map(() => new Array(n).fill(0)); + layers.forEach((layer) => + layer.forEach((parent) => { + const pind = inds[parent.id]; + parent.children.forEach((child) => { + const cind = inds[child.id]; + minDist(Q, pind, cind, 1 - weight); + }); + }), + ); + + layers.forEach((layer) => + layer.forEach((parent) => { + const pind = inds[parent.id]; + parent.children.forEach((node) => { + const nind = inds[node.id]; + node.children.forEach((child) => { + const cind = inds[child.id]; + minBend(Q, pind, nind, cind, weight); + }); + }); + }), + ); + + const solution = solve(Q, c, A, b); + layout(layers, inds, solution); + return layers; + } + + coordMinCurve.weight = function(x) { + return arguments.length + ? ((weight = checkWeight(x)), coordMinCurve) + : weight; + }; + + return coordMinCurve; + } + + // Assign nodes in each layer an x coordinate in [0, 1] that minimizes curves + + function topological() { + function coordTopological(layers, separation) { + if ( + !layers.every((layer) => 1 === layer.reduce((c, n) => c + !!n.data, 0)) + ) { + throw new Error( + "coordTopological() only works with a topological ordering", + ); + } + + // This takes advantage that the last "node" is set to 0 + const inds = {}; + let i = 0; + layers.forEach((layer) => + layer.forEach((n) => n.data || (inds[n.id] = i++)), + ); + layers.forEach((layer) => + layer.forEach((n) => inds[n.id] === undefined && (inds[n.id] = i)), + ); + + const n = ++i; + const [A, b] = sep(layers, inds, separation); + + const c = new Array(n).fill(0); + const Q = new Array(n).fill(null).map(() => new Array(n).fill(0)); + layers.forEach((layer) => + layer.forEach((parent) => { + const pind = inds[parent.id]; + parent.children.forEach((node) => { + if (!node.data) { + const nind = inds[node.id]; + node.children.forEach((child) => { + const cind = inds[child.id]; + minBend(Q, pind, nind, cind, 1); + }); + } + }); + }), + ); + + const solution = solve(Q, c, A, b); + layout(layers, inds, solution); + return layers; + } + + return coordTopological; + } + + // Assign nodes in each layer an x coordinate in [0, 1] that minimizes curves + + function vert() { + function coordVert(layers, separation) { + const inds = indices(layers); + const n = Object.keys(inds).length; + const [A, b] = sep(layers, inds, separation); + + const c = new Array(n).fill(0); + const Q = new Array(n).fill(null).map(() => new Array(n).fill(0)); + layers.forEach((layer) => + layer.forEach((parent) => { + const pind = inds[parent.id]; + parent.children.forEach((child) => { + const cind = inds[child.id]; + if (parent.data) { + minDist(Q, pind, cind, 1); + } + if (child.data) { + minDist(Q, pind, cind, 1); + } + }); + }), + ); + + layers.forEach((layer) => + layer.forEach((parent) => { + const pind = inds[parent.id]; + parent.children.forEach((node) => { + if (!node.data) { + const nind = inds[node.id]; + node.children.forEach((child) => { + const cind = inds[child.id]; + minBend(Q, pind, nind, cind, 1); + }); + } + }); + }), + ); + + const solution = solve(Q, c, A, b); + layout(layers, inds, solution); + return layers; + } + + return coordVert; + } + + // Get an array of all links to children + function childLinks() { + const links = []; + this.eachChildLinks((l) => links.push(l)); + return links; + } + + // This function sets the value of each descendant to be the number of its descendants including itself + function count() { + this.eachAfter((node) => { + if (node.children.length) { + node._leaves = Object.assign({}, ...node.children.map((c) => c._leaves)); + node.value = Object.keys(node._leaves).length; + } else { + node._leaves = { [node.id]: true }; + node.value = 1; + } + }); + this.each((n) => delete n._leaves); + return this; + } + + // Set each node's value to be zero for leaf nodes and the greatest distance to + // any leaf node for other nodes + function depth() { + this.each((n) => { + n.children.forEach((c) => (c._parents || (c._parents = [])).push(n)); + }); + this.eachBefore((n) => { + n.value = Math.max(0, ...(n._parents || []).map((c) => 1 + c.value)); + }); + this.each((n) => delete n._parents); + return this; + } + + // Return an array of all descendants + function descendants() { + const descs = []; + this.each((n) => descs.push(n)); + return descs; + } + + // Call function on each node such that a node is called before any of its parents + function eachAfter(func) { + // TODO Better way to do this? + const all = []; + this.eachBefore((n) => all.push(n)); + all.reverse().forEach(func); + return this; + } + + // Call a function on each node such that a node is called before any of its children + function eachBefore(func) { + this.each((n) => (n._num_before = 0)); + this.each((n) => n.children.forEach((c) => ++c._num_before)); + + const queue = this.roots(); + let node; + let i = 0; + while ((node = queue.pop())) { + func(node, i++); + node.children.forEach((n) => --n._num_before || queue.push(n)); + } + + this.each((n) => delete n._num_before); + return this; + } + + // Call nodes in bread first order + // No guarantees are made on whether the function is called first, or children + // are queued. This is important if the function modifies a node's children. + function eachBreadth(func) { + const seen = {}; + let current = []; + let next = this.roots(); + let i = 0; + do { + current = next.reverse(); + next = []; + let node; + while ((node = current.pop())) { + if (!seen[node.id]) { + seen[node.id] = true; + func(node, i++); + next.push(...node.children); + } + } + } while (next.length); + } + + // Call a function on each child link + function eachChildLinks(func) { + if (this.id !== undefined) { + let i = 0; + this.children.forEach((c, j) => + func( + { + source: this, + target: c, + data: this._childLinkData[j], + }, + i++, + ), + ); + } + return this; + } + + // Call a function on each node in an arbitrary order + // No guarantees are made with respect to whether the function is called first + // or the children are queued. This is important if the function modifies the + // children of a node. + function eachDepth(func) { + const queue = this.roots(); + const seen = {}; + let node; + let i = 0; + while ((node = queue.pop())) { + if (!seen[node.id]) { + seen[node.id] = true; + func(node, i++); + queue.push(...node.children); + } + } + return this; + } + + // Call a function on each link in the dag + function eachLinks(func) { + let i = 0; + this.each((n) => n.eachChildLinks((l) => func(l, i++))); + return this; + } + + // Compare two dag_like objects for equality + function toSet(arr) { + const set = {}; + arr.forEach((e) => (set[e] = true)); + return set; + } + + function info(root) { + const info = {}; + root.each( + (node) => + (info[node.id] = [node.data, toSet(node.children.map((n) => n.id))]), + ); + return info; + } + + function setEqual(a, b) { + return ( + Object.keys(a).length === Object.keys(b).length && + Object.keys(a).every((k) => b[k]) + ); + } + + function equals(that) { + const thisInfo = info(this); + const thatInfo = info(that); + return ( + Object.keys(thisInfo).length === Object.keys(thatInfo).length && + Object.entries(thisInfo).every(([nid, [thisData, thisChildren]]) => { + const val = thatInfo[nid]; + if (!val) return false; + const [thatData, thatChildren] = val; + return thisData === thatData && setEqual(thisChildren, thatChildren); + }) + ); + } + + // Return true of function returns true for every node + const sentinel = {}; + + function every(func) { + try { + this.each((n, i) => { + if (!func(n, i)) { + throw sentinel; + } + }); + } catch (err) { + if (err === sentinel) { + return false; + } else { + throw err; + } + } + return true; + } + + // Set each node's value to zero for root nodes and the greatest distance to + // any root for other nodes + function height() { + return this.eachAfter( + (n) => (n.value = Math.max(0, ...n.children.map((c) => 1 + c.value))), + ); + } + + // Return an array of all of the links in a dag + function links() { + const links = []; + this.eachLinks((l) => links.push(l)); + return links; + } + + // Reduce over nodes + function reduce(func, start) { + let accum = start; + this.each((n, i) => { + accum = func(accum, n, i); + }); + return accum; + } + + // Return the roots of the current dat + function roots() { + return this.id === undefined ? this.children.slice() : [this]; + } + + // Count the number of nodes + function size() { + return this.reduce((a) => a + 1, 0); + } + + // Return true if function returns true on at least one node + const sentinel$1 = {}; + + function some(func) { + try { + this.each((n) => { + if (func(n)) { + throw sentinel$1; + } + }); + } catch (err) { + if (err === sentinel$1) { + return true; + } else { + throw err; + } + } + return false; + } + + // Call a function on each nodes data and set its value to the sum of the function return and the return value of all descendants + function sum(func) { + this.eachAfter((node, i) => { + const val = +func(node.data, i); + node._descendants = Object.assign( + { [node.id]: val }, + ...node.children.map((c) => c._descendants), + ); + node.value = Object.values(node._descendants).reduce((a, b) => a + b); + }); + this.each((n) => delete n._descendants); + return this; + } + + function Node(id, data) { + this.id = id; + this.data = data; + this.children = []; + this._childLinkData = []; + } + + // Must be internal for new Node creation + // Copy this dag returning a new DAG pointing to the same data with same structure. + function copy() { + const nodes = []; + const cnodes = []; + const mapping = {}; + this.each((node) => { + nodes.push(node); + const cnode = new Node(node.id, node.data); + cnodes.push(cnode); + mapping[cnode.id] = cnode; + }); + + cnodes.forEach((cnode, i) => { + const node = nodes[i]; + cnode.children = node.children.map((c) => mapping[c.id]); + }); + + if (this.id === undefined) { + const root = new Node(undefined, undefined); + root.children = this.children.map((c) => mapping[c.id]); + } else { + return mapping[this.id]; + } + } + + // Reverse + function reverse() { + const nodes = []; + const cnodes = []; + const mapping = {}; + const root = new Node(undefined, undefined); + this.each((node) => { + nodes.push(node); + const cnode = new Node(node.id, node.data); + cnodes.push(cnode); + mapping[cnode.id] = cnode; + if (!node.children.length) { + root.children.push(cnode); + } + }); + cnodes.forEach((cnode, i) => { + const node = nodes[i]; + node.children.map((c, j) => { + const cc = mapping[c.id]; + cc.children.push(cnode); + cc._childLinkData.push(node._childLinkData[j]); + }); + }); + + return root.children.length > 1 ? root : root.children[0]; + } + + Node.prototype = { + constructor: Node, + childLinks: childLinks, + copy: copy, + count: count, + depth: depth, + descendants: descendants, + each: eachDepth, + eachAfter: eachAfter, + eachBefore: eachBefore, + eachBreadth: eachBreadth, + eachChildLinks: eachChildLinks, + eachLinks: eachLinks, + equals: equals, + every: every, + height: height, + links: links, + reduce: reduce, + reverse: reverse, + roots: roots, + size: size, + some: some, + sum: sum, + }; + + // Verify that a dag meets all criteria for validity + // Note, this is written such that root must be a dummy node, i.e. have an undefined id + function verify(root) { + // Test that dummy criteria is met + if (root.id !== undefined) throw new Error("invalid format for verification"); + + // Test that there are roots + if (!root.children.length) throw new Error("no roots"); + + // Test that dag is free of cycles + const seen = {}; + const past = {}; + let rec = undefined; + function visit(node) { + if (seen[node.id]) { + return false; + } else if (past[node.id]) { + rec = node.id; + return [node.id]; + } else { + past[node.id] = true; + let result = node.children.reduce((chain, c) => chain || visit(c), false); + delete past[node.id]; + seen[node.id] = true; + if (result && rec) result.push(node.id); + if (rec === node.id) rec = undefined; + return result; + } + } + const msg = + root.id === undefined + ? root.children.reduce((msg, r) => msg || visit(r), false) + : visit(root); + if (msg) + throw new Error("dag contained a cycle: " + msg.reverse().join(" -> ")); + + // Test that all nodes are valid + root.each((node) => { + if (node.id.indexOf("\0") >= 0) + throw new Error("node id contained null character"); + if (!node.data) throw new Error("node contained falsy data"); + }); + + // Test that dag is connected + const rootsSpan = root.children.map((r) => r.descendants().map((n) => n.id)); + const connected = + root.children.length === 1 || + rootsSpan.every((rootSpan, i) => { + const otherSpan = {}; + rootsSpan + .slice(0, i) + .concat(rootsSpan.slice(i + 1)) + .forEach((span) => span.forEach((n) => (otherSpan[n] = true))); + return rootSpan.some((n) => otherSpan[n]); + }); + if (!connected) throw new Error("dag was not connected"); + + // Test that all link data is valid + if (root.links().some(({ data }) => !data)) + throw new Error("dag had falsy link data"); + } + + // Create a dag with stratified data + + function dagStratify() { + if (arguments.length) { + throw Error( + `got arguments to dagStratify(${arguments}), but constructor takes no aruguments. ` + + `These were probably meant as data which should be called as dagStratify()(...)`, + ); + } + + let id = defaultId; + let parentIds = defaultParentIds; + let linkData = defaultLinkData; + + function dagStratify(data) { + if (!data.length) throw new Error("can't stratify empty data"); + const nodes = data.map((datum, i) => { + const nid = id(datum, i); + try { + return new Node(nid.toString(), datum); + } catch (TypeError) { + throw Error(`node ids must have toString but got ${nid} from ${datum}`); + } + }); + + const mapping = {}; + nodes.forEach((node) => { + if (mapping[node.id]) { + throw new Error("found a duplicate id: " + node.id); + } else { + mapping[node.id] = node; + } + }); + + const root = new Node(undefined, undefined); + nodes.forEach((node) => { + const pids = parentIds(node.data) || []; + pids.forEach((pid) => { + const parent = mapping[pid]; + if (!parent) throw new Error("missing id: " + pid); + parent.children.push(node); + parent._childLinkData.push(linkData(parent.data, node.data)); + return parent; + }); + if (!pids.length) { + root.children.push(node); + } + }); + + verify(root); + return root.children.length > 1 ? root : root.children[0]; + } + + dagStratify.id = function(x) { + return arguments.length ? ((id = x), dagStratify) : id; + }; + + dagStratify.parentIds = function(x) { + return arguments.length ? ((parentIds = x), dagStratify) : parentIds; + }; + + dagStratify.linkData = function(x) { + return arguments.length ? ((linkData = x), dagStratify) : linkData; + }; + + return dagStratify; + } + + function defaultId(d) { + return d.id; + } + + function defaultParentIds(d) { + return d.parentIds; + } + + function defaultLinkData() { + return {}; + } + + // Create a dag with edge data + + function connect() { + if (arguments.length) { + throw Error( + `got arguments to dagConnect(${arguments}), but constructor takes no aruguments. ` + + `These were probably meant as data which should be called as dagConnect()(...)`, + ); + } + + let sourceAccessor = defaultSource; + let targetAccessor = defaultTarget; + let linkData = defaultLinkData$1; + + function stratifyLinkData(parent, child) { + return linkData(child.linkData[parent.id]); + } + + function dagConnect(data) { + if (!data.length) throw new Error("can't create graph from empty data"); + const keyedData = {}; + data.forEach((datum) => { + const source = sourceAccessor(datum); + const target = targetAccessor(datum); + keyedData[source] || + (keyedData[source] = { id: source, parentIds: [], linkData: {} }); + const node = + keyedData[target] || + (keyedData[target] = { id: target, parentIds: [], linkData: {} }); + node.parentIds.push(source); + node.linkData[source] = datum; + }); + + return dagStratify().linkData(stratifyLinkData)(Object.values(keyedData)); + } + + dagConnect.sourceAccessor = function(x) { + return arguments.length + ? ((sourceAccessor = x), dagConnect) + : sourceAccessor; + }; + + dagConnect.targetAccessor = function(x) { + return arguments.length + ? ((targetAccessor = x), dagConnect) + : targetAccessor; + }; + + dagConnect.linkData = function(x) { + return arguments.length ? ((linkData = x), dagConnect) : linkData; + }; + + return dagConnect; + } + + function defaultSource(d) { + return d[0]; + } + + function defaultTarget(d) { + return d[1]; + } + + function defaultLinkData$1(d) { + return d; + } + + // Create a dag from a hierarchy representation + + function hierarchy() { + if (arguments.length) { + throw Error( + `got arguments to dagHierarchy(${arguments}), but constructor takes no aruguments. ` + + `These were probably meant as data which should be called as dagHierarchy()(...)`, + ); + } + let id = defaultId$1; + let children = defaultChildren; + let linkData = defaultLinkData$2; + + function dagHierarchy(...data) { + if (!data.length) throw new Error("must pass at least one node"); + const mapping = {}; + const queue = []; + + function nodify(datum) { + let did; + try { + did = id(datum).toString(); + } catch (TypeError) { + throw Error( + `node ids must have toString but got ${id(datum)} from ${datum}`, + ); + } + let res; + if (!(res = mapping[did])) { + res = new Node(did, datum); + queue.push(res); + mapping[did] = res; + } else if (datum !== res.data) { + throw new Error("found a duplicate id: " + did); + } + return res; + } + + const root = new Node(undefined, undefined); + let node; + root.children = data.map(nodify); + while ((node = queue.pop())) { + node.children = (children(node.data) || []).map(nodify); + node._childLinkData = node.children.map((c) => + linkData(node.data, c.data), + ); + } + + verify(root); + return root.children.length > 1 ? root : root.children[0]; + } + + dagHierarchy.id = function(x) { + return arguments.length ? ((id = x), dagHierarchy) : id; + }; + + dagHierarchy.children = function(x) { + return arguments.length ? ((children = x), dagHierarchy) : children; + }; + + dagHierarchy.linkData = function(x) { + return arguments.length ? ((linkData = x), dagHierarchy) : linkData; + }; + + return dagHierarchy; + } + + function defaultId$1(d) { + return d.id; + } + + function defaultChildren(d) { + return d.children; + } + + function defaultLinkData$2() { + return {}; + } + + /*global module*/ + + function Solution(tableau, evaluation, feasible, bounded) { + this.feasible = feasible; + this.evaluation = evaluation; + this.bounded = bounded; + this._tableau = tableau; + } + var Solution_1 = Solution; + + Solution.prototype.generateSolutionSet = function () { + var solutionSet = {}; + + var tableau = this._tableau; + var varIndexByRow = tableau.varIndexByRow; + var variablesPerIndex = tableau.variablesPerIndex; + var matrix = tableau.matrix; + var rhsColumn = tableau.rhsColumn; + var lastRow = tableau.height - 1; + var roundingCoeff = Math.round(1 / tableau.precision); + + for (var r = 1; r <= lastRow; r += 1) { + var varIndex = varIndexByRow[r]; + var variable = variablesPerIndex[varIndex]; + if (variable === undefined || variable.isSlack === true) { + continue; + } + + var varValue = matrix[r][rhsColumn]; + solutionSet[variable.id] = + Math.round(varValue * roundingCoeff) / roundingCoeff; + } + + return solutionSet; + }; + + /*global module*/ + /*global require*/ + + + function MilpSolution(tableau, evaluation, feasible, bounded, branchAndCutIterations) { + Solution_1.call(this, tableau, evaluation, feasible, bounded); + this.iter = branchAndCutIterations; + } + var MilpSolution_1 = MilpSolution; + MilpSolution.prototype = Object.create(Solution_1.prototype); + MilpSolution.constructor = MilpSolution; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + + + /************************************************************* + * Class: Tableau + * Description: Simplex tableau, holding a the tableau matrix + * and all the information necessary to perform + * the simplex algorithm + * Agruments: + * precision: If we're solving a MILP, how tight + * do we want to define an integer, given + * that 20.000000000000001 is not an integer. + * (defaults to 1e-8) + **************************************************************/ + function Tableau(precision) { + this.model = null; + + this.matrix = null; + this.width = 0; + this.height = 0; + + this.costRowIndex = 0; + this.rhsColumn = 0; + + this.variablesPerIndex = []; + this.unrestrictedVars = null; + + // Solution attributes + this.feasible = true; // until proven guilty + this.evaluation = 0; + + this.varIndexByRow = null; + this.varIndexByCol = null; + + this.rowByVarIndex = null; + this.colByVarIndex = null; + + this.precision = precision || 1e-8; + + this.optionalObjectives = []; + this.objectivesByPriority = {}; + + this.savedState = null; + + this.availableIndexes = []; + this.lastElementIndex = 0; + + this.variables = null; + this.nVars = 0; + + this.bounded = true; + this.unboundedVarIndex = null; + + this.branchAndCutIterations = 0; + } + var Tableau_1 = Tableau; + + Tableau.prototype.solve = function () { + if (this.model.getNumberOfIntegerVariables() > 0) { + this.branchAndCut(); + } else { + this.simplex(); + } + this.updateVariableValues(); + return this.getSolution(); + }; + + function OptionalObjective(priority, nColumns) { + this.priority = priority; + this.reducedCosts = new Array(nColumns); + for (var c = 0; c < nColumns; c += 1) { + this.reducedCosts[c] = 0; + } + } + + OptionalObjective.prototype.copy = function () { + var copy = new OptionalObjective(this.priority, this.reducedCosts.length); + copy.reducedCosts = this.reducedCosts.slice(); + return copy; + }; + + Tableau.prototype.setOptionalObjective = function (priority, column, cost) { + var objectiveForPriority = this.objectivesByPriority[priority]; + if (objectiveForPriority === undefined) { + var nColumns = Math.max(this.width, column + 1); + objectiveForPriority = new OptionalObjective(priority, nColumns); + this.objectivesByPriority[priority] = objectiveForPriority; + this.optionalObjectives.push(objectiveForPriority); + this.optionalObjectives.sort(function (a, b) { + return a.priority - b.priority; + }); + } + + objectiveForPriority.reducedCosts[column] = cost; + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau.prototype.initialize = function (width, height, variables, unrestrictedVars) { + this.variables = variables; + this.unrestrictedVars = unrestrictedVars; + + this.width = width; + this.height = height; + + // BUILD AN EMPTY ARRAY OF THAT WIDTH + var tmpRow = new Array(width); + for (var i = 0; i < width; i++) { + tmpRow[i] = 0; + } + + // BUILD AN EMPTY TABLEAU + this.matrix = new Array(height); + for (var j = 0; j < height; j++) { + this.matrix[j] = tmpRow.slice(); + } + + this.varIndexByRow = new Array(this.height); + this.varIndexByCol = new Array(this.width); + + this.varIndexByRow[0] = -1; + this.varIndexByCol[0] = -1; + + this.nVars = width + height - 2; + this.rowByVarIndex = new Array(this.nVars); + this.colByVarIndex = new Array(this.nVars); + + this.lastElementIndex = this.nVars; + }; + + Tableau.prototype._resetMatrix = function () { + var variables = this.model.variables; + var constraints = this.model.constraints; + + var nVars = variables.length; + var nConstraints = constraints.length; + + var v, varIndex; + var costRow = this.matrix[0]; + var coeff = (this.model.isMinimization === true) ? -1 : 1; + for (v = 0; v < nVars; v += 1) { + var variable = variables[v]; + var priority = variable.priority; + var cost = coeff * variable.cost; + if (priority === 0) { + costRow[v + 1] = cost; + } else { + this.setOptionalObjective(priority, v + 1, cost); + } + + varIndex = variables[v].index; + this.rowByVarIndex[varIndex] = -1; + this.colByVarIndex[varIndex] = v + 1; + this.varIndexByCol[v + 1] = varIndex; + } + + var rowIndex = 1; + for (var c = 0; c < nConstraints; c += 1) { + var constraint = constraints[c]; + + var constraintIndex = constraint.index; + this.rowByVarIndex[constraintIndex] = rowIndex; + this.colByVarIndex[constraintIndex] = -1; + this.varIndexByRow[rowIndex] = constraintIndex; + + var t, term, column; + var terms = constraint.terms; + var nTerms = terms.length; + var row = this.matrix[rowIndex++]; + if (constraint.isUpperBound) { + for (t = 0; t < nTerms; t += 1) { + term = terms[t]; + column = this.colByVarIndex[term.variable.index]; + row[column] = term.coefficient; + } + + row[0] = constraint.rhs; + } else { + for (t = 0; t < nTerms; t += 1) { + term = terms[t]; + column = this.colByVarIndex[term.variable.index]; + row[column] = -term.coefficient; + } + + row[0] = -constraint.rhs; + } + } + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau.prototype.setModel = function (model) { + this.model = model; + + var width = model.nVariables + 1; + var height = model.nConstraints + 1; + + + this.initialize(width, height, model.variables, model.unrestrictedVariables); + this._resetMatrix(); + return this; + }; + + Tableau.prototype.getNewElementIndex = function () { + if (this.availableIndexes.length > 0) { + return this.availableIndexes.pop(); + } + + var index = this.lastElementIndex; + this.lastElementIndex += 1; + return index; + }; + + Tableau.prototype.density = function () { + var density = 0; + + var matrix = this.matrix; + for (var r = 0; r < this.height; r++) { + var row = matrix[r]; + for (var c = 0; c < this.width; c++) { + if (row[c] !== 0) { + density += 1; + } + } + } + + return density / (this.height * this.width); + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau.prototype.setEvaluation = function () { + // Rounding objective value + var roundingCoeff = Math.round(1 / this.precision); + var evaluation = this.matrix[this.costRowIndex][this.rhsColumn]; + this.evaluation = + Math.round(evaluation * roundingCoeff) / roundingCoeff; + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau.prototype.getSolution = function () { + var evaluation = (this.model.isMinimization === true) ? + this.evaluation : -this.evaluation; + + if (this.model.getNumberOfIntegerVariables() > 0) { + return new MilpSolution_1(this, evaluation, this.feasible, this.bounded, this.branchAndCutIterations); + } else { + return new Solution_1(this, evaluation, this.feasible, this.bounded); + } + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + + + //------------------------------------------------------------------- + // Function: solve + // Detail: Main function, linear programming solver + //------------------------------------------------------------------- + Tableau_1.prototype.simplex = function () { + // Bounded until proven otherwise + this.bounded = true; + + // Execute Phase 1 to obtain a Basic Feasible Solution (BFS) + this.phase1(); + + // Execute Phase 2 + if (this.feasible === true) { + // Running simplex on Initial Basic Feasible Solution (BFS) + // N.B current solution is feasible + this.phase2(); + } + + return this; + }; + + //------------------------------------------------------------------- + // Description: Convert a non standard form tableau + // to a standard form tableau by eliminating + // all negative values in the Right Hand Side (RHS) + // This results in a Basic Feasible Solution (BFS) + // + //------------------------------------------------------------------- + Tableau_1.prototype.phase1 = function () { + var debugCheckForCycles = this.model.checkForCycles; + var varIndexesCycle = []; + + var matrix = this.matrix; + var rhsColumn = this.rhsColumn; + var lastColumn = this.width - 1; + var lastRow = this.height - 1; + + var unrestricted; + var iterations = 0; + while (true) { + // Selecting leaving variable (feasibility condition): + // Basic variable with most negative value + var leavingRowIndex = 0; + var rhsValue = -this.precision; + for (var r = 1; r <= lastRow; r++) { + unrestricted = this.unrestrictedVars[this.varIndexByRow[r]] === true; + if (unrestricted) { + continue; + } + + var value = matrix[r][rhsColumn]; + if (value < rhsValue) { + rhsValue = value; + leavingRowIndex = r; + } + } + + // If nothing is strictly smaller than 0; we're done with phase 1. + if (leavingRowIndex === 0) { + // Feasible, champagne! + this.feasible = true; + return iterations; + } + + // Selecting entering variable + var enteringColumn = 0; + var maxQuotient = -Infinity; + var costRow = matrix[0]; + var leavingRow = matrix[leavingRowIndex]; + for (var c = 1; c <= lastColumn; c++) { + var coefficient = leavingRow[c]; + if (-this.precision < coefficient && coefficient < this.precision) { + continue; + } + + unrestricted = this.unrestrictedVars[this.varIndexByCol[c]] === true; + if (unrestricted || coefficient < -this.precision) { + var quotient = -costRow[c] / coefficient; + if (maxQuotient < quotient) { + maxQuotient = quotient; + enteringColumn = c; + } + } + } + + if (enteringColumn === 0) { + // Not feasible + this.feasible = false; + return iterations; + } + + if(debugCheckForCycles){ + varIndexesCycle.push([this.varIndexByRow[leavingRowIndex], this.varIndexByCol[enteringColumn]]); + + var cycleData = this.checkForCycles(varIndexesCycle); + if(cycleData.length > 0){ + console.log("Cycle in phase 1"); + console.log("Start :", cycleData[0]); + console.log("Length :", cycleData[1]); + throw new Error(); + } + } + + this.pivot(leavingRowIndex, enteringColumn); + iterations += 1; + } + }; + + //------------------------------------------------------------------- + // Description: Apply simplex to obtain optimal solution + // used as phase2 of the simplex + // + //------------------------------------------------------------------- + Tableau_1.prototype.phase2 = function () { + var debugCheckForCycles = this.model.checkForCycles; + var varIndexesCycle = []; + + var matrix = this.matrix; + var rhsColumn = this.rhsColumn; + var lastColumn = this.width - 1; + var lastRow = this.height - 1; + + var precision = this.precision; + var nOptionalObjectives = this.optionalObjectives.length; + var optionalCostsColumns = null; + + var iterations = 0; + var reducedCost, unrestricted; + while (true) { + var costRow = matrix[this.costRowIndex]; + + // Selecting entering variable (optimality condition) + if (nOptionalObjectives > 0) { + optionalCostsColumns = []; + } + + var enteringColumn = 0; + var enteringValue = precision; + var isReducedCostNegative = false; + for (var c = 1; c <= lastColumn; c++) { + reducedCost = costRow[c]; + unrestricted = this.unrestrictedVars[this.varIndexByCol[c]] === true; + + if (nOptionalObjectives > 0 && -precision < reducedCost && reducedCost < precision) { + optionalCostsColumns.push(c); + continue; + } + + if (unrestricted && reducedCost < 0) { + if (-reducedCost > enteringValue) { + enteringValue = -reducedCost; + enteringColumn = c; + isReducedCostNegative = true; + } + continue; + } + + if (reducedCost > enteringValue) { + enteringValue = reducedCost; + enteringColumn = c; + isReducedCostNegative = false; + } + } + + if (nOptionalObjectives > 0) { + // There exist optional improvable objectives + var o = 0; + while (enteringColumn === 0 && optionalCostsColumns.length > 0 && o < nOptionalObjectives) { + var optionalCostsColumns2 = []; + var reducedCosts = this.optionalObjectives[o].reducedCosts; + + enteringValue = precision; + + for (var i = 0; i < optionalCostsColumns.length; i++) { + c = optionalCostsColumns[i]; + + reducedCost = reducedCosts[c]; + unrestricted = this.unrestrictedVars[this.varIndexByCol[c]] === true; + + if (-precision < reducedCost && reducedCost < precision) { + optionalCostsColumns2.push(c); + continue; + } + + if (unrestricted && reducedCost < 0) { + if (-reducedCost > enteringValue) { + enteringValue = -reducedCost; + enteringColumn = c; + isReducedCostNegative = true; + } + continue; + } + + if (reducedCost > enteringValue) { + enteringValue = reducedCost; + enteringColumn = c; + isReducedCostNegative = false; + } + } + optionalCostsColumns = optionalCostsColumns2; + o += 1; + } + } + + + // If no entering column could be found we're done with phase 2. + if (enteringColumn === 0) { + this.setEvaluation(); + return iterations; + } + + // Selecting leaving variable + var leavingRow = 0; + var minQuotient = Infinity; + + var varIndexByRow = this.varIndexByRow; + + for (var r = 1; r <= lastRow; r++) { + var row = matrix[r]; + var rhsValue = row[rhsColumn]; + var colValue = row[enteringColumn]; + + if (-precision < colValue && colValue < precision) { + continue; + } + + if (colValue > 0 && precision > rhsValue && rhsValue > -precision) { + minQuotient = 0; + leavingRow = r; + break; + } + + var quotient = isReducedCostNegative ? -rhsValue / colValue : rhsValue / colValue; + if (quotient > precision && minQuotient > quotient) { + minQuotient = quotient; + leavingRow = r; + } + } + + if (minQuotient === Infinity) { + // optimal value is -Infinity + this.evaluation = -Infinity; + this.bounded = false; + this.unboundedVarIndex = this.varIndexByCol[enteringColumn]; + return iterations; + } + + if(debugCheckForCycles){ + varIndexesCycle.push([this.varIndexByRow[leavingRow], this.varIndexByCol[enteringColumn]]); + + var cycleData = this.checkForCycles(varIndexesCycle); + if(cycleData.length > 0){ + console.log("Cycle in phase 2"); + console.log("Start :", cycleData[0]); + console.log("Length :", cycleData[1]); + throw new Error(); + } + } + + this.pivot(leavingRow, enteringColumn, true); + iterations += 1; + } + }; + + // Array holding the column indexes for which the value is not null + // on the pivot row + // Shared by all tableaux for smaller overhead and lower memory usage + var nonZeroColumns = []; + //------------------------------------------------------------------- + // Description: Execute pivot operations over a 2d array, + // on a given row, and column + // + //------------------------------------------------------------------- + Tableau_1.prototype.pivot = function (pivotRowIndex, pivotColumnIndex) { + var matrix = this.matrix; + + var quotient = matrix[pivotRowIndex][pivotColumnIndex]; + + var lastRow = this.height - 1; + var lastColumn = this.width - 1; + + var leavingBasicIndex = this.varIndexByRow[pivotRowIndex]; + var enteringBasicIndex = this.varIndexByCol[pivotColumnIndex]; + + this.varIndexByRow[pivotRowIndex] = enteringBasicIndex; + this.varIndexByCol[pivotColumnIndex] = leavingBasicIndex; + + this.rowByVarIndex[enteringBasicIndex] = pivotRowIndex; + this.rowByVarIndex[leavingBasicIndex] = -1; + + this.colByVarIndex[enteringBasicIndex] = -1; + this.colByVarIndex[leavingBasicIndex] = pivotColumnIndex; + + // Divide everything in the target row by the element @ + // the target column + var pivotRow = matrix[pivotRowIndex]; + var nNonZeroColumns = 0; + for (var c = 0; c <= lastColumn; c++) { + if (pivotRow[c] !== 0) { + pivotRow[c] /= quotient; + nonZeroColumns[nNonZeroColumns] = c; + nNonZeroColumns += 1; + } + } + pivotRow[pivotColumnIndex] = 1 / quotient; + + // for every row EXCEPT the pivot row, + // set the value in the pivot column = 0 by + // multiplying the value of all elements in the objective + // row by ... yuck... just look below; better explanation later + var coefficient, i, v0; + var precision = this.precision; + for (var r = 0; r <= lastRow; r++) { + var row = matrix[r]; + if (r !== pivotRowIndex) { + coefficient = row[pivotColumnIndex]; + // No point Burning Cycles if + // Zero to the thing + if (coefficient !== 0) { + for (i = 0; i < nNonZeroColumns; i++) { + c = nonZeroColumns[i]; + // No point in doing math if you're just adding + // Zero to the thing + v0 = pivotRow[c]; + if (v0 !== 0) { + row[c] = row[c] - coefficient * v0; + } + } + + row[pivotColumnIndex] = -coefficient / quotient; + } + } + } + + var nOptionalObjectives = this.optionalObjectives.length; + if (nOptionalObjectives > 0) { + for (var o = 0; o < nOptionalObjectives; o += 1) { + var reducedCosts = this.optionalObjectives[o].reducedCosts; + coefficient = reducedCosts[pivotColumnIndex]; + if (coefficient !== 0) { + for (i = 0; i < nNonZeroColumns; i++) { + c = nonZeroColumns[i]; + v0 = pivotRow[c]; + if (v0 !== 0) { + reducedCosts[c] = reducedCosts[c] - coefficient * v0; + } + } + + reducedCosts[pivotColumnIndex] = -coefficient / quotient; + } + } + } + }; + + + + Tableau_1.prototype.checkForCycles = function (varIndexes) { + for (var e1 = 0; e1 < varIndexes.length - 1; e1++) { + for (var e2 = e1 + 1; e2 < varIndexes.length; e2++) { + var elt1 = varIndexes[e1]; + var elt2 = varIndexes[e2]; + if (elt1[0] === elt2[0] && elt1[1] === elt2[1]) { + if (e2 - e1 > varIndexes.length - e2) { + break; + } + var cycleFound = true; + for (var i = 1; i < e2 - e1; i++) { + var tmp1 = varIndexes[e1+i]; + var tmp2 = varIndexes[e2+i]; + if(tmp1[0] !== tmp2[0] || tmp1[1] !== tmp2[1]) { + cycleFound = false; + break; + } + } + if (cycleFound) { + return [e1, e2 - e1]; + } + } + } + } + return []; + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + function Variable(id, cost, index, priority) { + this.id = id; + this.cost = cost; + this.index = index; + this.value = 0; + this.priority = priority; + } + + function IntegerVariable(id, cost, index, priority) { + Variable.call(this, id, cost, index, priority); + } + IntegerVariable.prototype.isInteger = true; + + function SlackVariable(id, index) { + Variable.call(this, id, 0, index, 0); + } + SlackVariable.prototype.isSlack = true; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + function Term(variable, coefficient) { + this.variable = variable; + this.coefficient = coefficient; + } + + function createRelaxationVariable(model, weight, priority) { + if (priority === 0 || priority === "required") { + return null; + } + + weight = weight || 1; + priority = priority || 1; + + if (model.isMinimization === false) { + weight = -weight; + } + + return model.addVariable(weight, "r" + (model.relaxationIndex++), false, false, priority); + } + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + function Constraint(rhs, isUpperBound, index, model) { + this.slack = new SlackVariable("s" + index, index); + this.index = index; + this.model = model; + this.rhs = rhs; + this.isUpperBound = isUpperBound; + + this.terms = []; + this.termsByVarIndex = {}; + + // Error variable in case the constraint is relaxed + this.relaxation = null; + } + + Constraint.prototype.addTerm = function (coefficient, variable) { + var varIndex = variable.index; + var term = this.termsByVarIndex[varIndex]; + if (term === undefined) { + // No term for given variable + term = new Term(variable, coefficient); + this.termsByVarIndex[varIndex] = term; + this.terms.push(term); + if (this.isUpperBound === true) { + coefficient = -coefficient; + } + this.model.updateConstraintCoefficient(this, variable, coefficient); + } else { + // Term for given variable already exists + // updating its coefficient + var newCoefficient = term.coefficient + coefficient; + this.setVariableCoefficient(newCoefficient, variable); + } + + return this; + }; + + Constraint.prototype.removeTerm = function (term) { + // TODO + return this; + }; + + Constraint.prototype.setRightHandSide = function (newRhs) { + if (newRhs !== this.rhs) { + var difference = newRhs - this.rhs; + if (this.isUpperBound === true) { + difference = -difference; + } + + this.rhs = newRhs; + this.model.updateRightHandSide(this, difference); + } + + return this; + }; + + Constraint.prototype.setVariableCoefficient = function (newCoefficient, variable) { + var varIndex = variable.index; + if (varIndex === -1) { + console.warn("[Constraint.setVariableCoefficient] Trying to change coefficient of inexistant variable."); + return; + } + + var term = this.termsByVarIndex[varIndex]; + if (term === undefined) { + // No term for given variable + this.addTerm(newCoefficient, variable); + } else { + // Term for given variable already exists + // updating its coefficient if changed + if (newCoefficient !== term.coefficient) { + var difference = newCoefficient - term.coefficient; + if (this.isUpperBound === true) { + difference = -difference; + } + + term.coefficient = newCoefficient; + this.model.updateConstraintCoefficient(this, variable, difference); + } + } + + return this; + }; + + Constraint.prototype.relax = function (weight, priority) { + this.relaxation = createRelaxationVariable(this.model, weight, priority); + this._relax(this.relaxation); + }; + + Constraint.prototype._relax = function (relaxationVariable) { + if (relaxationVariable === null) { + // Relaxation variable not created, priority was probably "required" + return; + } + + if (this.isUpperBound) { + this.setVariableCoefficient(-1, relaxationVariable); + } else { + this.setVariableCoefficient(1, relaxationVariable); + } + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + function Equality(constraintUpper, constraintLower) { + this.upperBound = constraintUpper; + this.lowerBound = constraintLower; + this.model = constraintUpper.model; + this.rhs = constraintUpper.rhs; + this.relaxation = null; + } + + Equality.prototype.isEquality = true; + + Equality.prototype.addTerm = function (coefficient, variable) { + this.upperBound.addTerm(coefficient, variable); + this.lowerBound.addTerm(coefficient, variable); + return this; + }; + + Equality.prototype.removeTerm = function (term) { + this.upperBound.removeTerm(term); + this.lowerBound.removeTerm(term); + return this; + }; + + Equality.prototype.setRightHandSide = function (rhs) { + this.upperBound.setRightHandSide(rhs); + this.lowerBound.setRightHandSide(rhs); + this.rhs = rhs; + }; + + Equality.prototype.relax = function (weight, priority) { + this.relaxation = createRelaxationVariable(this.model, weight, priority); + this.upperBound.relaxation = this.relaxation; + this.upperBound._relax(this.relaxation); + this.lowerBound.relaxation = this.relaxation; + this.lowerBound._relax(this.relaxation); + }; + + + var expressions = { + Constraint: Constraint, + Variable: Variable, + IntegerVariable: IntegerVariable, + SlackVariable: SlackVariable, + Equality: Equality, + Term: Term + }; + + /*global require*/ + + var SlackVariable$1 = expressions.SlackVariable; + + Tableau_1.prototype.addCutConstraints = function (cutConstraints) { + var nCutConstraints = cutConstraints.length; + + var height = this.height; + var heightWithCuts = height + nCutConstraints; + + // Adding rows to hold cut constraints + for (var h = height; h < heightWithCuts; h += 1) { + if (this.matrix[h] === undefined) { + this.matrix[h] = this.matrix[h - 1].slice(); + } + } + + // Adding cut constraints + this.height = heightWithCuts; + this.nVars = this.width + this.height - 2; + + var c; + var lastColumn = this.width - 1; + for (var i = 0; i < nCutConstraints; i += 1) { + var cut = cutConstraints[i]; + + // Constraint row index + var r = height + i; + + var sign = (cut.type === "min") ? -1 : 1; + + // Variable on which the cut is applied + var varIndex = cut.varIndex; + var varRowIndex = this.rowByVarIndex[varIndex]; + var constraintRow = this.matrix[r]; + if (varRowIndex === -1) { + // Variable is non basic + constraintRow[this.rhsColumn] = sign * cut.value; + for (c = 1; c <= lastColumn; c += 1) { + constraintRow[c] = 0; + } + constraintRow[this.colByVarIndex[varIndex]] = sign; + } else { + // Variable is basic + var varRow = this.matrix[varRowIndex]; + var varValue = varRow[this.rhsColumn]; + constraintRow[this.rhsColumn] = sign * (cut.value - varValue); + for (c = 1; c <= lastColumn; c += 1) { + constraintRow[c] = -sign * varRow[c]; + } + } + + // Creating slack variable + var slackVarIndex = this.getNewElementIndex(); + this.varIndexByRow[r] = slackVarIndex; + this.rowByVarIndex[slackVarIndex] = r; + this.colByVarIndex[slackVarIndex] = -1; + this.variablesPerIndex[slackVarIndex] = new SlackVariable$1("s"+slackVarIndex, slackVarIndex); + this.nVars += 1; + } + }; + + Tableau_1.prototype._addLowerBoundMIRCut = function(rowIndex) { + + if(rowIndex === this.costRowIndex) { + //console.log("! IN MIR CUTS : The index of the row corresponds to the cost row. !"); + return false; + } + + var model = this.model; + var matrix = this.matrix; + + var intVar = this.variablesPerIndex[this.varIndexByRow[rowIndex]]; + if (!intVar.isInteger) { + return false; + } + + var d = matrix[rowIndex][this.rhsColumn]; + var frac_d = d - Math.floor(d); + + if (frac_d < this.precision || 1 - this.precision < frac_d) { + return false; + } + + //Adding a row + var r = this.height; + matrix[r] = matrix[r - 1].slice(); + this.height += 1; + + // Creating slack variable + this.nVars += 1; + var slackVarIndex = this.getNewElementIndex(); + this.varIndexByRow[r] = slackVarIndex; + this.rowByVarIndex[slackVarIndex] = r; + this.colByVarIndex[slackVarIndex] = -1; + this.variablesPerIndex[slackVarIndex] = new SlackVariable$1("s"+slackVarIndex, slackVarIndex); + + matrix[r][this.rhsColumn] = Math.floor(d); + + for (var colIndex = 1; colIndex < this.varIndexByCol.length; colIndex += 1) { + var variable = this.variablesPerIndex[this.varIndexByCol[colIndex]]; + + if (!variable.isInteger) { + matrix[r][colIndex] = Math.min(0, matrix[rowIndex][colIndex] / (1 - frac_d)); + } else { + var coef = matrix[rowIndex][colIndex]; + var termCoeff = Math.floor(coef)+Math.max(0, coef - Math.floor(coef) - frac_d) / (1 - frac_d); + matrix[r][colIndex] = termCoeff; + } + } + + for(var c = 0; c < this.width; c += 1) { + matrix[r][c] -= matrix[rowIndex][c]; + } + + return true; + }; + + Tableau_1.prototype._addUpperBoundMIRCut = function(rowIndex) { + + if (rowIndex === this.costRowIndex) { + //console.log("! IN MIR CUTS : The index of the row corresponds to the cost row. !"); + return false; + } + + var model = this.model; + var matrix = this.matrix; + + var intVar = this.variablesPerIndex[this.varIndexByRow[rowIndex]]; + if (!intVar.isInteger) { + return false; + } + + var b = matrix[rowIndex][this.rhsColumn]; + var f = b - Math.floor(b); + + if (f < this.precision || 1 - this.precision < f) { + return false; + } + + //Adding a row + var r = this.height; + matrix[r] = matrix[r - 1].slice(); + this.height += 1; + + // Creating slack variable + this.nVars += 1; + var slackVarIndex = this.getNewElementIndex(); + this.varIndexByRow[r] = slackVarIndex; + this.rowByVarIndex[slackVarIndex] = r; + this.colByVarIndex[slackVarIndex] = -1; + this.variablesPerIndex[slackVarIndex] = new SlackVariable$1("s"+slackVarIndex, slackVarIndex); + + matrix[r][this.rhsColumn] = -f; + + for(var colIndex = 1; colIndex < this.varIndexByCol.length; colIndex += 1) { + var variable = this.variablesPerIndex[this.varIndexByCol[colIndex]]; + + var aj = matrix[rowIndex][colIndex]; + var fj = aj - Math.floor(aj); + + if(variable.isInteger) { + if(fj <= f) { + matrix[r][colIndex] = -fj; + } else { + matrix[r][colIndex] = -(1 - fj) * f / fj; + } + } else { + if (aj >= 0) { + matrix[r][colIndex] = -aj; + } else { + matrix[r][colIndex] = aj * f / (1 - f); + } + } + } + + return true; + }; + + Tableau_1.prototype.applyMIRCuts = function () { + + var nRows = this.height; + for (var cst = 0; cst < nRows; cst += 1) { + this._addUpperBoundMIRCut(cst); + } + + // nRows = tableau.height; + for (cst = 0; cst < nRows; cst += 1) { + this._addLowerBoundMIRCut(cst); + } + }; + + /*global require*/ + /*global console*/ + + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau_1.prototype._putInBase = function (varIndex) { + // Is varIndex in the base? + var r = this.rowByVarIndex[varIndex]; + if (r === -1) { + // Outside the base + // pivoting to take it out + var c = this.colByVarIndex[varIndex]; + + // Selecting pivot row + // (Any row with coefficient different from 0) + for (var r1 = 1; r1 < this.height; r1 += 1) { + var coefficient = this.matrix[r1][c]; + if (coefficient < -this.precision || this.precision < coefficient) { + r = r1; + break; + } + } + + this.pivot(r, c); + } + + return r; + }; + + Tableau_1.prototype._takeOutOfBase = function (varIndex) { + // Is varIndex in the base? + var c = this.colByVarIndex[varIndex]; + if (c === -1) { + // Inside the base + // pivoting to take it out + var r = this.rowByVarIndex[varIndex]; + + // Selecting pivot column + // (Any column with coefficient different from 0) + var pivotRow = this.matrix[r]; + for (var c1 = 1; c1 < this.height; c1 += 1) { + var coefficient = pivotRow[c1]; + if (coefficient < -this.precision || this.precision < coefficient) { + c = c1; + break; + } + } + + this.pivot(r, c); + } + + return c; + }; + + Tableau_1.prototype.updateVariableValues = function () { + var nVars = this.variables.length; + var roundingCoeff = Math.round(1 / this.precision); + for (var v = 0; v < nVars; v += 1) { + var variable = this.variables[v]; + var varIndex = variable.index; + + var r = this.rowByVarIndex[varIndex]; + if (r === -1) { + // Variable is non basic + variable.value = 0; + } else { + // Variable is basic + var varValue = this.matrix[r][this.rhsColumn]; + variable.value = Math.round(varValue * roundingCoeff) / roundingCoeff; + } + } + }; + + Tableau_1.prototype.updateRightHandSide = function (constraint, difference) { + // Updates RHS of given constraint + var lastRow = this.height - 1; + var constraintRow = this.rowByVarIndex[constraint.index]; + if (constraintRow === -1) { + // Slack is not in base + var slackColumn = this.colByVarIndex[constraint.index]; + + // Upading all the RHS values + for (var r = 0; r <= lastRow; r += 1) { + var row = this.matrix[r]; + row[this.rhsColumn] -= difference * row[slackColumn]; + } + + var nOptionalObjectives = this.optionalObjectives.length; + if (nOptionalObjectives > 0) { + for (var o = 0; o < nOptionalObjectives; o += 1) { + var reducedCosts = this.optionalObjectives[o].reducedCosts; + reducedCosts[this.rhsColumn] -= difference * reducedCosts[slackColumn]; + } + } + } else { + // Slack variable of constraint is in base + // Updating RHS with the difference between the old and the new one + this.matrix[constraintRow][this.rhsColumn] -= difference; + } + }; + + Tableau_1.prototype.updateConstraintCoefficient = function (constraint, variable, difference) { + // Updates variable coefficient within a constraint + if (constraint.index === variable.index) { + throw new Error("[Tableau.updateConstraintCoefficient] constraint index should not be equal to variable index !"); + } + + var r = this._putInBase(constraint.index); + + var colVar = this.colByVarIndex[variable.index]; + if (colVar === -1) { + var rowVar = this.rowByVarIndex[variable.index]; + for (var c = 0; c < this.width; c += 1){ + this.matrix[r][c] += difference * this.matrix[rowVar][c]; + } + } else { + this.matrix[r][colVar] -= difference; + } + }; + + Tableau_1.prototype.updateCost = function (variable, difference) { + // Updates variable coefficient within the objective function + var varIndex = variable.index; + var lastColumn = this.width - 1; + var varColumn = this.colByVarIndex[varIndex]; + if (varColumn === -1) { + // Variable is in base + var variableRow = this.matrix[this.rowByVarIndex[varIndex]]; + + var c; + if (variable.priority === 0) { + var costRow = this.matrix[0]; + + // Upading all the reduced costs + for (c = 0; c <= lastColumn; c += 1) { + costRow[c] += difference * variableRow[c]; + } + } else { + var reducedCosts = this.objectivesByPriority[variable.priority].reducedCosts; + for (c = 0; c <= lastColumn; c += 1) { + reducedCosts[c] += difference * variableRow[c]; + } + } + } else { + // Variable is not in the base + // Updating coefficient with difference + this.matrix[0][varColumn] -= difference; + } + }; + + Tableau_1.prototype.addConstraint = function (constraint) { + // Adds a constraint to the tableau + var sign = constraint.isUpperBound ? 1 : -1; + var lastRow = this.height; + + var constraintRow = this.matrix[lastRow]; + if (constraintRow === undefined) { + constraintRow = this.matrix[0].slice(); + this.matrix[lastRow] = constraintRow; + } + + // Setting all row cells to 0 + var lastColumn = this.width - 1; + for (var c = 0; c <= lastColumn; c += 1) { + constraintRow[c] = 0; + } + + // Initializing RHS + constraintRow[this.rhsColumn] = sign * constraint.rhs; + + var terms = constraint.terms; + var nTerms = terms.length; + for (var t = 0; t < nTerms; t += 1) { + var term = terms[t]; + var coefficient = term.coefficient; + var varIndex = term.variable.index; + + var varRowIndex = this.rowByVarIndex[varIndex]; + if (varRowIndex === -1) { + // Variable is non basic + constraintRow[this.colByVarIndex[varIndex]] += sign * coefficient; + } else { + // Variable is basic + var varRow = this.matrix[varRowIndex]; + var varValue = varRow[this.rhsColumn]; + for (c = 0; c <= lastColumn; c += 1) { + constraintRow[c] -= sign * coefficient * varRow[c]; + } + } + } + // Creating slack variable + var slackIndex = constraint.index; + this.varIndexByRow[lastRow] = slackIndex; + this.rowByVarIndex[slackIndex] = lastRow; + this.colByVarIndex[slackIndex] = -1; + + this.height += 1; + }; + + Tableau_1.prototype.removeConstraint = function (constraint) { + var slackIndex = constraint.index; + var lastRow = this.height - 1; + + // Putting the constraint's slack in the base + var r = this._putInBase(slackIndex); + + // Removing constraint + // by putting the corresponding row at the bottom of the matrix + // and virtually reducing the height of the matrix by 1 + var tmpRow = this.matrix[lastRow]; + this.matrix[lastRow] = this.matrix[r]; + this.matrix[r] = tmpRow; + + // Removing associated slack variable from basic variables + this.varIndexByRow[r] = this.varIndexByRow[lastRow]; + this.varIndexByRow[lastRow] = -1; + this.rowByVarIndex[slackIndex] = -1; + + // Putting associated slack variable index in index manager + this.availableIndexes[this.availableIndexes.length] = slackIndex; + + constraint.slack.index = -1; + + this.height -= 1; + }; + + Tableau_1.prototype.addVariable = function (variable) { + // Adds a variable to the tableau + // var sign = constraint.isUpperBound ? 1 : -1; + + var lastRow = this.height - 1; + var lastColumn = this.width; + var cost = this.model.isMinimization === true ? -variable.cost : variable.cost; + var priority = variable.priority; + + // Setting reduced costs + var nOptionalObjectives = this.optionalObjectives.length; + if (nOptionalObjectives > 0) { + for (var o = 0; o < nOptionalObjectives; o += 1) { + this.optionalObjectives[o].reducedCosts[lastColumn] = 0; + } + } + + if (priority === 0) { + this.matrix[0][lastColumn] = cost; + } else { + this.setOptionalObjective(priority, lastColumn, cost); + this.matrix[0][lastColumn] = 0; + } + + // Setting all other column cells to 0 + for (var r = 1; r <= lastRow; r += 1) { + this.matrix[r][lastColumn] = 0; + } + + // Adding variable to trackers + var varIndex = variable.index; + this.varIndexByCol[lastColumn] = varIndex; + + this.rowByVarIndex[varIndex] = -1; + this.colByVarIndex[varIndex] = lastColumn; + + this.width += 1; + }; + + + Tableau_1.prototype.removeVariable = function (variable) { + var varIndex = variable.index; + + // Putting the variable out of the base + var c = this._takeOutOfBase(varIndex); + var lastColumn = this.width - 1; + if (c !== lastColumn) { + var lastRow = this.height - 1; + for (var r = 0; r <= lastRow; r += 1) { + var row = this.matrix[r]; + row[c] = row[lastColumn]; + } + + var nOptionalObjectives = this.optionalObjectives.length; + if (nOptionalObjectives > 0) { + for (var o = 0; o < nOptionalObjectives; o += 1) { + var reducedCosts = this.optionalObjectives[o].reducedCosts; + reducedCosts[c] = reducedCosts[lastColumn]; + } + } + + var switchVarIndex = this.varIndexByCol[lastColumn]; + this.varIndexByCol[c] = switchVarIndex; + this.colByVarIndex[switchVarIndex] = c; + } + + // Removing variable from non basic variables + this.varIndexByCol[lastColumn] = -1; + this.colByVarIndex[varIndex] = -1; + + // Adding index into index manager + this.availableIndexes[this.availableIndexes.length] = varIndex; + + variable.index = -1; + + this.width -= 1; + }; + + /*global require*/ + /*global console*/ + + + //------------------------------------------------------------------- + // Description: Display a tableau matrix + // and additional tableau information + // + //------------------------------------------------------------------- + Tableau_1.prototype.log = function (message, force) { + + console.log("****", message, "****"); + console.log("Nb Variables", this.width - 1); + console.log("Nb Constraints", this.height - 1); + // console.log("Variable Ids", this.variablesPerIndex); + console.log("Basic Indexes", this.varIndexByRow); + console.log("Non Basic Indexes", this.varIndexByCol); + console.log("Rows", this.rowByVarIndex); + console.log("Cols", this.colByVarIndex); + + var digitPrecision = 5; + + // Variable declaration + var varNameRowString = "", + spacePerColumn = [" "], + j, + c, + r, + variable, + varIndex, + varName, + varNameLength, + valueSpace, + nameSpace; + + var row, + rowString; + + for (c = 1; c < this.width; c += 1) { + varIndex = this.varIndexByCol[c]; + variable = this.variablesPerIndex[varIndex]; + if (variable === undefined) { + varName = "c" + varIndex; + } else { + varName = variable.id; + } + + varNameLength = varName.length; + valueSpace = " "; + nameSpace = "\t"; + + /////////// + /*valueSpace = " "; + nameSpace = " "; + + for (s = 0; s < nSpaces; s += 1) { + if (varNameLength > 5) { + valueSpace += " "; + } else { + nameSpace += " "; + } + }*/ + + /////////// + if (varNameLength > 5) { + valueSpace += " "; + } else { + nameSpace += "\t"; + } + + spacePerColumn[c] = valueSpace; + + varNameRowString += nameSpace + varName; + } + console.log(varNameRowString); + + var signSpace; + + // Displaying reduced costs + var firstRow = this.matrix[this.costRowIndex]; + var firstRowString = "\t"; + + /////////// + /*for (j = 1; j < this.width; j += 1) { + signSpace = firstRow[j] < 0 ? "" : " "; + firstRowString += signSpace; + firstRowString += spacePerColumn[j]; + firstRowString += firstRow[j].toFixed(2); + } + signSpace = firstRow[0] < 0 ? "" : " "; + firstRowString += signSpace + spacePerColumn[0] + + firstRow[0].toFixed(2); + console.log(firstRowString + " Z");*/ + + /////////// + for (j = 1; j < this.width; j += 1) { + signSpace = "\t"; + firstRowString += signSpace; + firstRowString += spacePerColumn[j]; + firstRowString += firstRow[j].toFixed(digitPrecision); + } + signSpace = "\t"; + firstRowString += signSpace + spacePerColumn[0] + + firstRow[0].toFixed(digitPrecision); + console.log(firstRowString + "\tZ"); + + + // Then the basic variable rowByVarIndex + for (r = 1; r < this.height; r += 1) { + row = this.matrix[r]; + rowString = "\t"; + + /////////// + /*for (c = 1; c < this.width; c += 1) { + signSpace = row[c] < 0 ? "" : " "; + rowString += signSpace + spacePerColumn[c] + row[c].toFixed(2); + } + signSpace = row[0] < 0 ? "" : " "; + rowString += signSpace + spacePerColumn[0] + row[0].toFixed(2);*/ + + /////////// + for (c = 1; c < this.width; c += 1) { + signSpace = "\t"; + rowString += signSpace + spacePerColumn[c] + row[c].toFixed(digitPrecision); + } + signSpace = "\t"; + rowString += signSpace + spacePerColumn[0] + row[0].toFixed(digitPrecision); + + + varIndex = this.varIndexByRow[r]; + variable = this.variablesPerIndex[varIndex]; + if (variable === undefined) { + varName = "c" + varIndex; + } else { + varName = variable.id; + } + console.log(rowString + "\t" + varName); + } + console.log(""); + + // Then reduced costs for optional objectives + var nOptionalObjectives = this.optionalObjectives.length; + if (nOptionalObjectives > 0) { + console.log(" Optional objectives:"); + for (var o = 0; o < nOptionalObjectives; o += 1) { + var reducedCosts = this.optionalObjectives[o].reducedCosts; + var reducedCostsString = ""; + for (j = 1; j < this.width; j += 1) { + signSpace = reducedCosts[j] < 0 ? "" : " "; + reducedCostsString += signSpace; + reducedCostsString += spacePerColumn[j]; + reducedCostsString += reducedCosts[j].toFixed(digitPrecision); + } + signSpace = reducedCosts[0] < 0 ? "" : " "; + reducedCostsString += signSpace + spacePerColumn[0] + + reducedCosts[0].toFixed(digitPrecision); + console.log(reducedCostsString + " z" + o); + } + } + console.log("Feasible?", this.feasible); + console.log("evaluation", this.evaluation); + + return this; + }; + + /*global require*/ + + + Tableau_1.prototype.copy = function () { + var copy = new Tableau_1(this.precision); + + copy.width = this.width; + copy.height = this.height; + + copy.nVars = this.nVars; + copy.model = this.model; + + // Making a shallow copy of integer variable indexes + // and variable ids + copy.variables = this.variables; + copy.variablesPerIndex = this.variablesPerIndex; + copy.unrestrictedVars = this.unrestrictedVars; + copy.lastElementIndex = this.lastElementIndex; + + // All the other arrays are deep copied + copy.varIndexByRow = this.varIndexByRow.slice(); + copy.varIndexByCol = this.varIndexByCol.slice(); + + copy.rowByVarIndex = this.rowByVarIndex.slice(); + copy.colByVarIndex = this.colByVarIndex.slice(); + + copy.availableIndexes = this.availableIndexes.slice(); + + var optionalObjectivesCopy = []; + for(var o = 0; o < this.optionalObjectives.length; o++){ + optionalObjectivesCopy[o] = this.optionalObjectives[o].copy(); + } + copy.optionalObjectives = optionalObjectivesCopy; + + + var matrix = this.matrix; + var matrixCopy = new Array(this.height); + for (var r = 0; r < this.height; r++) { + matrixCopy[r] = matrix[r].slice(); + } + + copy.matrix = matrixCopy; + + return copy; + }; + + Tableau_1.prototype.save = function () { + this.savedState = this.copy(); + }; + + Tableau_1.prototype.restore = function () { + if (this.savedState === null) { + return; + } + + var save = this.savedState; + var savedMatrix = save.matrix; + this.nVars = save.nVars; + this.model = save.model; + + // Shallow restore + this.variables = save.variables; + this.variablesPerIndex = save.variablesPerIndex; + this.unrestrictedVars = save.unrestrictedVars; + this.lastElementIndex = save.lastElementIndex; + + this.width = save.width; + this.height = save.height; + + // Restoring matrix + var r, c; + for (r = 0; r < this.height; r += 1) { + var savedRow = savedMatrix[r]; + var row = this.matrix[r]; + for (c = 0; c < this.width; c += 1) { + row[c] = savedRow[c]; + } + } + + // Restoring all the other structures + var savedBasicIndexes = save.varIndexByRow; + for (c = 0; c < this.height; c += 1) { + this.varIndexByRow[c] = savedBasicIndexes[c]; + } + + while (this.varIndexByRow.length > this.height) { + this.varIndexByRow.pop(); + } + + var savedNonBasicIndexes = save.varIndexByCol; + for (r = 0; r < this.width; r += 1) { + this.varIndexByCol[r] = savedNonBasicIndexes[r]; + } + + while (this.varIndexByCol.length > this.width) { + this.varIndexByCol.pop(); + } + + var savedRows = save.rowByVarIndex; + var savedCols = save.colByVarIndex; + for (var v = 0; v < this.nVars; v += 1) { + this.rowByVarIndex[v] = savedRows[v]; + this.colByVarIndex[v] = savedCols[v]; + } + + + if (save.optionalObjectives.length > 0 && this.optionalObjectives.length > 0) { + this.optionalObjectives = []; + this.optionalObjectivePerPriority = {}; + for(var o = 0; o < save.optionalObjectives.length; o++){ + var optionalObjectiveCopy = save.optionalObjectives[o].copy(); + this.optionalObjectives[o] = optionalObjectiveCopy; + this.optionalObjectivePerPriority[optionalObjectiveCopy.priority] = optionalObjectiveCopy; + } + } + }; + + /*global require*/ + + + function VariableData(index, value) { + this.index = index; + this.value = value; + } + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau_1.prototype.getMostFractionalVar = function () { + var biggestFraction = 0; + var selectedVarIndex = null; + var selectedVarValue = null; + + var integerVariables = this.model.integerVariables; + var nIntegerVars = integerVariables.length; + for (var v = 0; v < nIntegerVars; v++) { + var varIndex = integerVariables[v].index; + var varRow = this.rowByVarIndex[varIndex]; + if (varRow === -1) { + continue; + } + + var varValue = this.matrix[varRow][this.rhsColumn]; + var fraction = Math.abs(varValue - Math.round(varValue)); + if (biggestFraction < fraction) { + biggestFraction = fraction; + selectedVarIndex = varIndex; + selectedVarValue = varValue; + } + } + + return new VariableData(selectedVarIndex, selectedVarValue); + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau_1.prototype.getFractionalVarWithLowestCost = function () { + var highestCost = Infinity; + var selectedVarIndex = null; + var selectedVarValue = null; + + var integerVariables = this.model.integerVariables; + var nIntegerVars = integerVariables.length; + for (var v = 0; v < nIntegerVars; v++) { + var variable = integerVariables[v]; + var varIndex = variable.index; + var varRow = this.rowByVarIndex[varIndex]; + if (varRow === -1) { + // Variable value is non basic + // its value is 0 + continue; + } + + var varValue = this.matrix[varRow][this.rhsColumn]; + if (Math.abs(varValue - Math.round(varValue)) > this.precision) { + var cost = variable.cost; + if (highestCost > cost) { + highestCost = cost; + selectedVarIndex = varIndex; + selectedVarValue = varValue; + } + } + } + + return new VariableData(selectedVarIndex, selectedVarValue); + }; + + /*global require*/ + + + Tableau_1.prototype.countIntegerValues = function(){ + var count = 0; + for (var r = 1; r < this.height; r += 1) { + if (this.variablesPerIndex[this.varIndexByRow[r]].isInteger) { + var decimalPart = this.matrix[r][this.rhsColumn]; + decimalPart = decimalPart - Math.floor(decimalPart); + if (decimalPart < this.precision && -decimalPart < this.precision) { + count += 1; + } + } + } + + return count; + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Tableau_1.prototype.isIntegral = function () { + var integerVariables = this.model.integerVariables; + var nIntegerVars = integerVariables.length; + for (var v = 0; v < nIntegerVars; v++) { + var varRow = this.rowByVarIndex[integerVariables[v].index]; + if (varRow === -1) { + continue; + } + + var varValue = this.matrix[varRow][this.rhsColumn]; + if (Math.abs(varValue - Math.round(varValue)) > this.precision) { + return false; + } + } + return true; + }; + + // Multiply all the fractional parts of variables supposed to be integer + Tableau_1.prototype.computeFractionalVolume = function(ignoreIntegerValues) { + var volume = -1; + // var integerVariables = this.model.integerVariables; + // var nIntegerVars = integerVariables.length; + // for (var v = 0; v < nIntegerVars; v++) { + // var r = this.rowByVarIndex[integerVariables[v].index]; + // if (r === -1) { + // continue; + // } + // var rhs = this.matrix[r][this.rhsColumn]; + // rhs = Math.abs(rhs); + // var decimalPart = Math.min(rhs - Math.floor(rhs), Math.floor(rhs + 1)); + // if (decimalPart < this.precision) { + // if (!ignoreIntegerValues) { + // return 0; + // } + // } else { + // if (volume === -1) { + // volume = rhs; + // } else { + // volume *= rhs; + // } + // } + // } + + for (var r = 1; r < this.height; r += 1) { + if (this.variablesPerIndex[this.varIndexByRow[r]].isInteger) { + var rhs = this.matrix[r][this.rhsColumn]; + rhs = Math.abs(rhs); + var decimalPart = Math.min(rhs - Math.floor(rhs), Math.floor(rhs + 1)); + if (decimalPart < this.precision) { + if (!ignoreIntegerValues) { + return 0; + } + } else { + if (volume === -1) { + volume = rhs; + } else { + volume *= rhs; + } + } + } + } + + if (volume === -1){ + return 0; + } + return volume; + }; + + /*global require*/ + /*global module*/ + + + + + + + + + var Tableau$1 = Tableau_1; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + function Cut(type, varIndex, value) { + this.type = type; + this.varIndex = varIndex; + this.value = value; + } + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + function Branch(relaxedEvaluation, cuts) { + this.relaxedEvaluation = relaxedEvaluation; + this.cuts = cuts; + } + + //------------------------------------------------------------------- + // Branch sorting strategies + //------------------------------------------------------------------- + function sortByEvaluation(a, b) { + return b.relaxedEvaluation - a.relaxedEvaluation; + } + + + //------------------------------------------------------------------- + // Applying cuts on a tableau and resolving + //------------------------------------------------------------------- + Tableau_1.prototype.applyCuts = function (branchingCuts){ + // Restoring initial solution + this.restore(); + + this.addCutConstraints(branchingCuts); + this.simplex(); + // Adding MIR cuts + if (this.model.useMIRCuts){ + var fractionalVolumeImproved = true; + while(fractionalVolumeImproved){ + var fractionalVolumeBefore = this.computeFractionalVolume(true); + this.applyMIRCuts(); + this.simplex(); + + var fractionalVolumeAfter = this.computeFractionalVolume(true); + + // If the new fractional volume is bigger than 90% of the previous one + // we assume there is no improvement from the MIR cuts + if(fractionalVolumeAfter >= 0.9 * fractionalVolumeBefore){ + fractionalVolumeImproved = false; + } + } + } + }; + + //------------------------------------------------------------------- + // Function: MILP + // Detail: Main function, my attempt at a mixed integer linear programming + // solver + //------------------------------------------------------------------- + Tableau_1.prototype.branchAndCut = function () { + var branches = []; + var iterations = 0; + + // This is the default result + // If nothing is both *integral* and *feasible* + var bestEvaluation = Infinity; + var bestBranch = null; + var bestOptionalObjectivesEvaluations = []; + for (var oInit = 0; oInit < this.optionalObjectives.length; oInit += 1){ + bestOptionalObjectivesEvaluations.push(Infinity); + } + + // And here...we...go! + + // 1.) Load a model into the queue + var branch = new Branch(-Infinity, []); + branches.push(branch); + + // If all branches have been exhausted terminate the loop + while (branches.length > 0) { + // Get a model from the queue + branch = branches.pop(); + if (branch.relaxedEvaluation > bestEvaluation) { + continue; + } + + // Solving from initial relaxed solution + // with additional cut constraints + + // Adding cut constraints + var cuts = branch.cuts; + this.applyCuts(cuts); + + iterations++; + if (this.feasible === false) { + continue; + } + + var evaluation = this.evaluation; + if (evaluation > bestEvaluation) { + // This branch does not contain the optimal solution + continue; + } + + // To deal with the optional objectives + if (evaluation === bestEvaluation){ + var isCurrentEvaluationWorse = true; + for (var o = 0; o < this.optionalObjectives.length; o += 1){ + if (this.optionalObjectives[o].reducedCosts[0] > bestOptionalObjectivesEvaluations[o]){ + break; + } else if (this.optionalObjectives[o].reducedCosts[0] < bestOptionalObjectivesEvaluations[o]) { + isCurrentEvaluationWorse = false; + break; + } + } + + if (isCurrentEvaluationWorse){ + continue; + } + } + + // Is the model both integral and feasible? + if (this.isIntegral() === true) { + if (iterations === 1) { + this.branchAndCutIterations = iterations; + return; + } + // Store the solution as the bestSolution + bestBranch = branch; + bestEvaluation = evaluation; + for (var oCopy = 0; oCopy < this.optionalObjectives.length; oCopy += 1){ + bestOptionalObjectivesEvaluations[oCopy] = this.optionalObjectives[oCopy].reducedCosts[0]; + } + } else { + if (iterations === 1) { + // Saving the first iteration + // TODO: implement a better strategy for saving the tableau? + this.save(); + } + + // If the solution is + // a. Feasible + // b. Better than the current solution + // c. but *NOT* integral + + // So the solution isn't integral? How do we solve this. + // We create 2 new models, that are mirror images of the prior + // model, with 1 exception. + + // Say we're trying to solve some stupid problem requiring you get + // animals for your daughter's kindergarten petting zoo party + // and you have to choose how many ducks, goats, and lambs to get. + + // Say that the optimal solution to this problem if we didn't have + // to make it integral was {duck: 8, lambs: 3.5} + // + // To keep from traumatizing your daughter and the other children + // you're going to want to have whole animals + + // What we would do is find the most fractional variable (lambs) + // and create new models from the old models, but with a new constraint + // on apples. The constraints on the low model would look like: + // constraints: {... + // lamb: {max: 3} + // ... + // } + // + // while the constraints on the high model would look like: + // + // constraints: {... + // lamb: {min: 4} + // ... + // } + // If neither of these models is feasible because of this constraint, + // the model is not integral at this point, and fails. + + // Find out where we want to split the solution + var variable = this.getMostFractionalVar(); + + var varIndex = variable.index; + + var cutsHigh = []; + var cutsLow = []; + + var nCuts = cuts.length; + for (var c = 0; c < nCuts; c += 1) { + var cut = cuts[c]; + if (cut.varIndex === varIndex) { + if (cut.type === "min") { + cutsLow.push(cut); + } else { + cutsHigh.push(cut); + } + } else { + cutsHigh.push(cut); + cutsLow.push(cut); + } + } + + var min = Math.ceil(variable.value); + var max = Math.floor(variable.value); + + var cutHigh = new Cut("min", varIndex, min); + cutsHigh.push(cutHigh); + + var cutLow = new Cut("max", varIndex, max); + cutsLow.push(cutLow); + + branches.push(new Branch(evaluation, cutsHigh)); + branches.push(new Branch(evaluation, cutsLow)); + + // Sorting branches + // Branches with the most promising lower bounds + // will be picked first + branches.sort(sortByEvaluation); + } + } + + // Adding cut constraints for the optimal solution + if (bestBranch !== null) { + // The model is feasible + this.applyCuts(bestBranch.cuts); + } + this.branchAndCutIterations = iterations; + }; + + var branchAndCut = { + + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + + + + var Constraint$1 = expressions.Constraint; + var Equality$1 = expressions.Equality; + var Variable$1 = expressions.Variable; + var IntegerVariable$1 = expressions.IntegerVariable; + + /************************************************************* + * Class: Model + * Description: Holds the model of a linear optimisation problem + **************************************************************/ + function Model(precision, name) { + this.tableau = new Tableau_1(precision); + + this.name = name; + + this.variables = []; + + this.integerVariables = []; + + this.unrestrictedVariables = {}; + + this.constraints = []; + + this.nConstraints = 0; + + this.nVariables = 0; + + this.isMinimization = true; + + this.tableauInitialized = false; + this.relaxationIndex = 1; + + this.useMIRCuts = true; + + this.checkForCycles = false; + } + var Model_1 = Model; + + Model.prototype.minimize = function () { + this.isMinimization = true; + return this; + }; + + Model.prototype.maximize = function () { + this.isMinimization = false; + return this; + }; + + // Model.prototype.addConstraint = function (constraint) { + // // TODO: make sure that the constraint does not belong do another model + // // and make + // this.constraints.push(constraint); + // return this; + // }; + + Model.prototype._getNewElementIndex = function () { + if (this.availableIndexes.length > 0) { + return this.availableIndexes.pop(); + } + + var index = this.lastElementIndex; + this.lastElementIndex += 1; + return index; + }; + + Model.prototype._addConstraint = function (constraint) { + var slackVariable = constraint.slack; + this.tableau.variablesPerIndex[slackVariable.index] = slackVariable; + this.constraints.push(constraint); + this.nConstraints += 1; + if (this.tableauInitialized === true) { + this.tableau.addConstraint(constraint); + } + }; + + Model.prototype.smallerThan = function (rhs) { + var constraint = new Constraint$1(rhs, true, this.tableau.getNewElementIndex(), this); + this._addConstraint(constraint); + return constraint; + }; + + Model.prototype.greaterThan = function (rhs) { + var constraint = new Constraint$1(rhs, false, this.tableau.getNewElementIndex(), this); + this._addConstraint(constraint); + return constraint; + }; + + Model.prototype.equal = function (rhs) { + var constraintUpper = new Constraint$1(rhs, true, this.tableau.getNewElementIndex(), this); + this._addConstraint(constraintUpper); + + var constraintLower = new Constraint$1(rhs, false, this.tableau.getNewElementIndex(), this); + this._addConstraint(constraintLower); + + return new Equality$1(constraintUpper, constraintLower); + }; + + Model.prototype.addVariable = function (cost, id, isInteger, isUnrestricted, priority) { + if (typeof priority === "string") { + switch (priority) { + case "required": + priority = 0; + break; + case "strong": + priority = 1; + break; + case "medium": + priority = 2; + break; + case "weak": + priority = 3; + break; + default: + priority = 0; + break; + } + } + + var varIndex = this.tableau.getNewElementIndex(); + if (id === null || id === undefined) { + id = "v" + varIndex; + } + + if (cost === null || cost === undefined) { + cost = 0; + } + + if (priority === null || priority === undefined) { + priority = 0; + } + + var variable; + if (isInteger) { + variable = new IntegerVariable$1(id, cost, varIndex, priority); + this.integerVariables.push(variable); + } else { + variable = new Variable$1(id, cost, varIndex, priority); + } + + this.variables.push(variable); + this.tableau.variablesPerIndex[varIndex] = variable; + + if (isUnrestricted) { + this.unrestrictedVariables[varIndex] = true; + } + + this.nVariables += 1; + + if (this.tableauInitialized === true) { + this.tableau.addVariable(variable); + } + + return variable; + }; + + Model.prototype._removeConstraint = function (constraint) { + var idx = this.constraints.indexOf(constraint); + if (idx === -1) { + console.warn("[Model.removeConstraint] Constraint not present in model"); + return; + } + + this.constraints.splice(idx, 1); + this.nConstraints -= 1; + + if (this.tableauInitialized === true) { + this.tableau.removeConstraint(constraint); + } + + if (constraint.relaxation) { + this.removeVariable(constraint.relaxation); + } + }; + + //------------------------------------------------------------------- + // For dynamic model modification + //------------------------------------------------------------------- + Model.prototype.removeConstraint = function (constraint) { + if (constraint.isEquality) { + this._removeConstraint(constraint.upperBound); + this._removeConstraint(constraint.lowerBound); + } else { + this._removeConstraint(constraint); + } + + return this; + }; + + Model.prototype.removeVariable = function (variable) { + var idx = this.variables.indexOf(variable); + if (idx === -1) { + console.warn("[Model.removeVariable] Variable not present in model"); + return; + } + this.variables.splice(idx, 1); + + if (this.tableauInitialized === true) { + this.tableau.removeVariable(variable); + } + + return this; + }; + + Model.prototype.updateRightHandSide = function (constraint, difference) { + if (this.tableauInitialized === true) { + this.tableau.updateRightHandSide(constraint, difference); + } + return this; + }; + + Model.prototype.updateConstraintCoefficient = function (constraint, variable, difference) { + if (this.tableauInitialized === true) { + this.tableau.updateConstraintCoefficient(constraint, variable, difference); + } + return this; + }; + + + Model.prototype.setCost = function (cost, variable) { + var difference = cost - variable.cost; + if (this.isMinimization === false) { + difference = -difference; + } + + variable.cost = cost; + this.tableau.updateCost(variable, difference); + return this; + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Model.prototype.loadJson = function (jsonModel) { + this.isMinimization = (jsonModel.opType !== "max"); + + var variables = jsonModel.variables; + var constraints = jsonModel.constraints; + + var constraintsMin = {}; + var constraintsMax = {}; + + // Instantiating constraints + var constraintIds = Object.keys(constraints); + var nConstraintIds = constraintIds.length; + + for (var c = 0; c < nConstraintIds; c += 1) { + var constraintId = constraintIds[c]; + var constraint = constraints[constraintId]; + var equal = constraint.equal; + + var weight = constraint.weight; + var priority = constraint.priority; + var relaxed = weight !== undefined || priority !== undefined; + + var lowerBound, upperBound; + if (equal === undefined) { + var min = constraint.min; + if (min !== undefined) { + lowerBound = this.greaterThan(min); + constraintsMin[constraintId] = lowerBound; + if (relaxed) { lowerBound.relax(weight, priority); } + } + + var max = constraint.max; + if (max !== undefined) { + upperBound = this.smallerThan(max); + constraintsMax[constraintId] = upperBound; + if (relaxed) { upperBound.relax(weight, priority); } + } + } else { + lowerBound = this.greaterThan(equal); + constraintsMin[constraintId] = lowerBound; + + upperBound = this.smallerThan(equal); + constraintsMax[constraintId] = upperBound; + + var equality = new Equality$1(lowerBound, upperBound); + if (relaxed) { equality.relax(weight, priority); } + } + } + + var variableIds = Object.keys(variables); + var nVariables = variableIds.length; + + var integerVarIds = jsonModel.ints || {}; + var binaryVarIds = jsonModel.binaries || {}; + var unrestrictedVarIds = jsonModel.unrestricted || {}; + + // Instantiating variables and constraint terms + var objectiveName = jsonModel.optimize; + for (var v = 0; v < nVariables; v += 1) { + // Creation of the variables + var variableId = variableIds[v]; + var variableConstraints = variables[variableId]; + var cost = variableConstraints[objectiveName] || 0; + var isBinary = !!binaryVarIds[variableId]; + var isInteger = !!integerVarIds[variableId] || isBinary; + var isUnrestricted = !!unrestrictedVarIds[variableId]; + var variable = this.addVariable(cost, variableId, isInteger, isUnrestricted); + + if (isBinary) { + // Creating an upperbound constraint for this variable + this.smallerThan(1).addTerm(1, variable); + } + + var constraintNames = Object.keys(variableConstraints); + for (c = 0; c < constraintNames.length; c += 1) { + var constraintName = constraintNames[c]; + if (constraintName === objectiveName) { + continue; + } + + var coefficient = variableConstraints[constraintName]; + + var constraintMin = constraintsMin[constraintName]; + if (constraintMin !== undefined) { + constraintMin.addTerm(coefficient, variable); + } + + var constraintMax = constraintsMax[constraintName]; + if (constraintMax !== undefined) { + constraintMax.addTerm(coefficient, variable); + } + } + } + + return this; + }; + + //------------------------------------------------------------------- + //------------------------------------------------------------------- + Model.prototype.getNumberOfIntegerVariables = function () { + return this.integerVariables.length; + }; + + Model.prototype.solve = function () { + // Setting tableau if not done + if (this.tableauInitialized === false) { + this.tableau.setModel(this); + this.tableauInitialized = true; + } + + return this.tableau.solve(); + }; + + Model.prototype.isFeasible = function () { + return this.tableau.feasible; + }; + + Model.prototype.save = function () { + return this.tableau.save(); + }; + + Model.prototype.restore = function () { + return this.tableau.restore(); + }; + + Model.prototype.activateMIRCuts = function (useMIRCuts) { + this.useMIRCuts = useMIRCuts; + }; + + Model.prototype.debug = function (debugCheckForCycles) { + this.checkForCycles = debugCheckForCycles; + }; + + Model.prototype.log = function (message) { + return this.tableau.log(message); + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + /*global exports*/ + + + // All functions in this module that + // get exported to main ***MUST*** + // return a functional LPSolve JSON style + // model or throw an error + + var CleanObjectiveAttributes = function(model){ + // Test to see if the objective attribute + // is also used by one of the constraints + // + // If so...create a new attribute on each + // variable + var fakeAttr, + x, z; + + if(typeof model.optimize === "string"){ + if(model.constraints[model.optimize]){ + // Create the new attribute + fakeAttr = Math.random(); + + // Go over each variable and check + for(x in model.variables){ + // Is it there? + if(model.variables[x][model.optimize]){ + model.variables[x][fakeAttr] = model.variables[x][model.optimize]; + } + } + + // Now that we've cleaned up the variables + // we need to clean up the constraints + model.constraints[fakeAttr] = model.constraints[model.optimize]; + delete model.constraints[model.optimize]; + return model; + } else { + return model; + } + } else { + // We're assuming its an object? + for(z in model.optimize){ + if(model.constraints[z]){ + // Make sure that the constraint + // being optimized isn't constrained + // by an equity collar + if(model.constraints[z] === "equal"){ + // Its constrained by an equal sign; + // delete that objective and move on + delete model.optimize[z]; + + } else { + // Create the new attribute + fakeAttr = Math.random(); + + // Go over each variable and check + for(x in model.variables){ + // Is it there? + if(model.variables[x][z]){ + model.variables[x][fakeAttr] = model.variables[x][z]; + } + } + // Now that we've cleaned up the variables + // we need to clean up the constraints + model.constraints[fakeAttr] = model.constraints[z]; + delete model.constraints[z]; + } + } + } + return model; + } + }; + + var Validation = { + CleanObjectiveAttributes: CleanObjectiveAttributes + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + /*jshint -W083 */ + + + + + + + /************************************************************* + * Method: to_JSON + * Scope: Public: + * Agruments: input: Whatever the user gives us + * Purpose: Convert an unfriendly formatted LP + * into something that our library can + * work with + **************************************************************/ + function to_JSON(input){ + var rxo = { + /* jshint ignore:start */ + "is_blank": /^\W{0,}$/, + "is_objective": /(max|min)(imize){0,}\:/i, + //previous version + //"is_int": /^\W{0,}int/i, + //new version to avoid comments + "is_int": /^(?!\/\*)\W{0,}int/i, + "is_constraint": /(\>|\<){0,}\=/i, + "is_unrestricted": /^\S{0,}unrestricted/i, + "parse_lhs": /(\-|\+){0,1}\s{0,1}\d{0,}\.{0,}\d{0,}\s{0,}[A-Za-z]\S{0,}/gi, + "parse_rhs": /(\-|\+){0,1}\d{1,}\.{0,}\d{0,}\W{0,}\;{0,1}$/i, + "parse_dir": /(\>|\<){0,}\=/gi, + "parse_int": /[^\s|^\,]+/gi, + "get_num": /(\-|\+){0,1}(\W|^)\d+\.{0,1}\d{0,}/g, // Why accepting character \W before the first digit? + "get_word": /[A-Za-z].*/ + /* jshint ignore:end */ + }, + model = { + "opType": "", + "optimize": "_obj", + "constraints": {}, + "variables": {} + }, + constraints = { + ">=": "min", + "<=": "max", + "=": "equal" + }, + tmp = "", ary = null, hldr = "", hldr2 = "", + constraint = "", rhs = 0; + + // Handle input if its coming + // to us as a hard string + // instead of as an array of + // strings + if(typeof input === "string"){ + input = input.split("\n"); + } + + // Start iterating over the rows + // to see what all we have + for(var i = 0; i < input.length; i++){ + + constraint = "__" + i; + + // Get the string we're working with + tmp = input[i]; + + // Reset the array + ary = null; + + // Test to see if we're the objective + if(rxo.is_objective.test(tmp)){ + // Set up in model the opType + model.opType = tmp.match(/(max|min)/gi)[0]; + + // Pull apart lhs + ary = tmp.match(rxo.parse_lhs).map(function(d){ + return d.replace(/\s+/,""); + }).slice(1); + + + + // *** STEP 1 *** /// + // Get the variables out + ary.forEach(function(d){ + + // Get the number if its there + hldr = d.match(rxo.get_num); + + // If it isn't a number, it might + // be a standalone variable + if(hldr === null){ + if(d.substr(0,1) === "-"){ + hldr = -1; + } else { + hldr = 1; + } + } else { + hldr = hldr[0]; + } + + hldr = parseFloat(hldr); + + // Get the variable type + hldr2 = d.match(rxo.get_word)[0].replace(/\;$/,""); + + // Make sure the variable is in the model + model.variables[hldr2] = model.variables[hldr2] || {}; + model.variables[hldr2]._obj = hldr; + + }); + //////////////////////////////////// + }else if(rxo.is_int.test(tmp)){ + // Get the array of ints + ary = tmp.match(rxo.parse_int).slice(1); + + // Since we have an int, our model should too + model.ints = model.ints || {}; + + ary.forEach(function(d){ + d = d.replace(";",""); + model.ints[d] = 1; + }); + //////////////////////////////////// + } else if(rxo.is_constraint.test(tmp)){ + var separatorIndex = tmp.indexOf(":"); + var constraintExpression = (separatorIndex === -1) ? tmp : tmp.slice(separatorIndex + 1); + + // Pull apart lhs + ary = constraintExpression.match(rxo.parse_lhs).map(function(d){ + return d.replace(/\s+/,""); + }); + + // *** STEP 1 *** /// + // Get the variables out + ary.forEach(function(d){ + // Get the number if its there + hldr = d.match(rxo.get_num); + + if(hldr === null){ + if(d.substr(0,1) === "-"){ + hldr = -1; + } else { + hldr = 1; + } + } else { + hldr = hldr[0]; + } + + hldr = parseFloat(hldr); + + + // Get the variable name + hldr2 = d.match(rxo.get_word)[0]; + + // Make sure the variable is in the model + model.variables[hldr2] = model.variables[hldr2] || {}; + model.variables[hldr2][constraint] = hldr; + + }); + + // *** STEP 2 *** /// + // Get the RHS out + rhs = parseFloat(tmp.match(rxo.parse_rhs)[0]); + + // *** STEP 3 *** /// + // Get the Constrainer out + tmp = constraints[tmp.match(rxo.parse_dir)[0]]; + model.constraints[constraint] = model.constraints[constraint] || {}; + model.constraints[constraint][tmp] = rhs; + //////////////////////////////////// + } else if(rxo.is_unrestricted.test(tmp)){ + // Get the array of unrestricted + ary = tmp.match(rxo.parse_int).slice(1); + + // Since we have an int, our model should too + model.unrestricted = model.unrestricted || {}; + + ary.forEach(function(d){ + d = d.replace(";",""); + model.unrestricted[d] = 1; + }); + } + } + return model; + } + + + /************************************************************* + * Method: from_JSON + * Scope: Public: + * Agruments: model: The model we want solver to operate on + * Purpose: Convert a friendly JSON model into a model for a + * real solving library...in this case + * lp_solver + **************************************************************/ + function from_JSON(model){ + // Make sure we at least have a model + if (!model) { + throw new Error("Solver requires a model to operate on"); + } + + var output = "", + lookup = { + "max": "<=", + "min": ">=", + "equal": "=" + }, + rxClean = new RegExp("[^A-Za-z0-9]+", "gi"); + + // Build the objective statement + output += model.opType + ":"; + + // Iterate over the variables + for(var x in model.variables){ + // Give each variable a self of 1 unless + // it exists already + model.variables[x][x] = model.variables[x][x] ? model.variables[x][x] : 1; + + // Does our objective exist here? + if(model.variables[x][model.optimize]){ + output += " " + model.variables[x][model.optimize] + " " + x.replace(rxClean,"_"); + } + } + + // Add some closure to our line thing + output += ";\n"; + + // And now... to iterate over the constraints + for(x in model.constraints){ + for(var y in model.constraints[x]){ + for(var z in model.variables){ + // Does our Constraint exist here? + if(model.variables[z][x]){ + output += " " + model.variables[z][x] + " " + z.replace(rxClean,"_"); + } + } + // Add the constraint type and value... + output += " " + lookup[y] + " " + model.constraints[x][y]; + output += ";\n"; + } + } + + // Are there any ints? + if(model.ints){ + output += "\n\n"; + for(x in model.ints){ + output += "int " + x.replace(rxClean,"_") + ";\n"; + } + } + + // Are there any unrestricted? + if(model.unrestricted){ + output += "\n\n"; + for(x in model.unrestricted){ + output += "unrestricted " + x.replace(rxClean,"_") + ";\n"; + } + } + + // And kick the string back + return output; + } + + + var Reformat = function (model) { + // If the user is giving us an array + // or a string, convert it to a JSON Model + // otherwise, spit it out as a string + if(model.length){ + return to_JSON(model); + } else { + return from_JSON(model); + } + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + /*************************************************************** + * Method: polyopt + * Scope: private + * Agruments: + * model: The model we want solver to operate on. + Because we're in here, we're assuming that + we're solving a multi-objective optimization + problem. Poly-Optimization. polyopt. + + This model has to be formed a little differently + because it has multiple objective functions. + Normally, a model has 2 attributes: opType (string, + "max" or "min"), and optimize (string, whatever + attribute we're optimizing. + + Now, there is no opType attribute on the model, + and optimize is an object of attributes to be + optimized, and how they're to be optimized. + For example: + + ... + "optimize": { + "pancakes": "max", + "cost": "minimize" + } + ... + + + **************************************************************/ + + var Polyopt = function(solver, model){ + + // I have no idea if this is actually works, or what, + // but here is my algorithm to solve linear programs + // with multiple objective functions + + // 1. Optimize for each constraint + // 2. The results for each solution is a vector + // representing a vertex on the polytope we're creating + // 3. The results for all solutions describes the shape + // of the polytope (would be nice to have the equation + // representing this) + // 4. Find the mid-point between all vertices by doing the + // following (a_1 + a_2 ... a_n) / n; + var objectives = model.optimize, + new_constraints = JSON.parse(JSON.stringify(model.optimize)), + keys = Object.keys(model.optimize), + tmp, + counter = 0, + vectors = {}, + vector_key = "", + obj = {}, + pareto = [], + i,j,x,y; + + // Delete the optimize object from the model + delete model.optimize; + + // Iterate and Clear + for(i = 0; i < keys.length; i++){ + // Clean up the new_constraints + new_constraints[keys[i]] = 0; + } + + // Solve and add + for(i = 0; i < keys.length; i++){ + + // Prep the model + model.optimize = keys[i]; + model.opType = objectives[keys[i]]; + + // solve the model + tmp = solver.Solve(model, undefined, undefined, true); + + // Only the variables make it into the solution; + // not the attributes. + // + // Because of this, we have to add the attributes + // back onto the solution so we can do math with + // them later... + + // Loop over the keys + for(y in keys){ + // We're only worried about attributes, not variables + if(!model.variables[keys[y]]){ + // Create space for the attribute in the tmp object + tmp[keys[y]] = tmp[keys[y]] ? tmp[keys[y]] : 0; + // Go over each of the variables + for(x in model.variables){ + // Does the variable exist in tmp *and* does attribute exist in this model? + if(model.variables[x][keys[y]] && tmp[x]){ + // Add it to tmp + tmp[keys[y]] += tmp[x] * model.variables[x][keys[y]]; + } + } + } + } + + // clear our key + vector_key = "base"; + // this makes sure that if we get + // the same vector more than once, + // we only count it once when finding + // the midpoint + for(j = 0; j < keys.length; j++){ + if(tmp[keys[j]]){ + vector_key += "-" + ((tmp[keys[j]] * 1000) | 0) / 1000; + } else { + vector_key += "-0"; + } + } + + // Check here to ensure it doesn't exist + if(!vectors[vector_key]){ + // Add the vector-key in + vectors[vector_key] = 1; + counter++; + + // Iterate over the keys + // and update our new constraints + for(j = 0; j < keys.length; j++){ + if(tmp[keys[j]]){ + new_constraints[keys[j]] += tmp[keys[j]]; + } + } + + // Push the solution into the paretos + // array after cleaning it of some + // excess data markers + + delete tmp.feasible; + delete tmp.result; + pareto.push(tmp); + } + } + + // Trying to find the mid-point + // divide each constraint by the + // number of constraints + // *midpoint formula* + // (x1 + x2 + x3) / 3 + for(i = 0; i < keys.length; i++){ + model.constraints[keys[i]] = {"equal": new_constraints[keys[i]] / counter}; + } + + // Give the model a fake thing to optimize on + model.optimize = "cheater-" + Math.random(); + model.opType = "max"; + + // And add the fake attribute to the variables + // in the model + for(i in model.variables){ + model.variables[i].cheater = 1; + } + + // Build out the object with all attributes + for(i in pareto){ + for(x in pareto[i]){ + obj[x] = obj[x] || {min: 1e99, max: -1e99}; + } + } + + // Give each pareto a full attribute list + // while getting the max and min values + // for each attribute + for(i in obj){ + for(x in pareto){ + if(pareto[x][i]){ + if(pareto[x][i] > obj[i].max){ + obj[i].max = pareto[x][i]; + } + if(pareto[x][i] < obj[i].min){ + obj[i].min = pareto[x][i]; + } + } else { + pareto[x][i] = 0; + obj[i].min = 0; + } + } + } + // Solve the model for the midpoints + tmp = solver.Solve(model, undefined, undefined, true); + + return { + midpoint: tmp, + vertices: pareto, + ranges: obj + }; + + }; + + /*global describe*/ + /*global require*/ + /*global module*/ + /*global it*/ + /*global console*/ + /*global process*/ + + + //------------------------------------------------------------------- + // SimplexJS + // https://github.com/ + // An Object-Oriented Linear Programming Solver + // + // By Justin Wolcott (c) + // Licensed under the MIT License. + //------------------------------------------------------------------- + + + + + + + var Constraint$2 = expressions.Constraint; + var Variable$2 = expressions.Variable; + var Numeral = expressions.Numeral; + var Term$2 = expressions.Term; + + // Place everything under the Solver Name Space + var Solver = function () { + + this.Model = Model_1; + this.branchAndCut = branchAndCut; + this.Constraint = Constraint$2; + this.Variable = Variable$2; + this.Numeral = Numeral; + this.Term = Term$2; + this.Tableau = Tableau$1; + + this.lastSolvedModel = null; + + /************************************************************* + * Method: Solve + * Scope: Public: + * Agruments: + * model: The model we want solver to operate on + * precision: If we're solving a MILP, how tight + * do we want to define an integer, given + * that 20.000000000000001 is not an integer. + * (defaults to 1e-9) + * full: *get better description* + * validate: if left blank, it will get ignored; otherwise + * it will run the model through all validation + * functions in the *Validate* module + **************************************************************/ + this.Solve = function (model, precision, full, validate) { + // Run our validations on the model + // if the model doesn't have a validate + // attribute set to false + if(validate){ + for(var test in Validation){ + model = Validation[test](model); + } + } + + // Make sure we at least have a model + if (!model) { + throw new Error("Solver requires a model to operate on"); + } + + if (model instanceof Model_1 === false) { + model = new Model_1(precision).loadJson(model); + } + + var solution = model.solve(); + this.lastSolvedModel = model; + solution.solutionSet = solution.generateSolutionSet(); + + // If the user asks for a full breakdown + // of the tableau (e.g. full === true) + // this will return it + if (full) { + return solution; + } else { + // Otherwise; give the user the bare + // minimum of info necessary to carry on + + var store = {}; + + // 1.) Add in feasibility to store; + store.feasible = solution.feasible; + + // 2.) Add in the objective value + store.result = solution.evaluation; + + store.bounded = solution.bounded; + + // 3.) Load all of the variable values + Object.keys(solution.solutionSet) + .map(function (d) { + store[d] = solution.solutionSet[d]; + }); + + return store; + } + + }; + + /************************************************************* + * Method: ReformatLP + * Scope: Public: + * Agruments: model: The model we want solver to operate on + * Purpose: Convert a friendly JSON model into a model for a + * real solving library...in this case + * lp_solver + **************************************************************/ + this.ReformatLP = Reformat; + + + /************************************************************* + * Method: MultiObjective + * Scope: Public: + * Agruments: + * model: The model we want solver to operate on + * detail: if false, or undefined; it will return the + * result of using the mid-point formula; otherwise + * it will return an object containing: + * + * 1. The results from the mid point formula + * 2. The solution for each objective solved + * in isolation (pareto) + * 3. The min and max of each variable along + * the frontier of the polytope (ranges) + * Purpose: Solve a model with multiple objective functions. + * Since a potential infinite number of solutions exist + * this naively returns the mid-point between + * + * Note: The model has to be changed a little to work with this. + * Before an *opType* was required. No more. The objective + * attribute of the model is now an object instead of a + * string. + * + * *EXAMPLE MODEL* + * + * model = { + * optimize: {scotch: "max", soda: "max"}, + * constraints: {fluid: {equal: 100}}, + * variables: { + * scotch: {fluid: 1, scotch: 1}, + * soda: {fluid: 1, soda: 1} + * } + * } + * + **************************************************************/ + this.MultiObjective = function(model){ + return Polyopt(this, model); + }; + }; + + // If the project is loading through require.js, use `define` and exit + if(typeof window === "object"){ + window.solver = new Solver(); + } + // Ensure that its available in node.js env + var main = new Solver(); + + // Order nodes such that the total number of crossings is minimized + + const crossings = "crossings"; + + function opt() { + let debug = false; + + function key(...nodes) { + return nodes + .map((n) => n.id) + .sort() + .join(debug ? " => " : "\0\0"); + } + + function perms(model, layer) { + layer.sort((n1, n2) => n1.id > n2.id || -1); + + layer.slice(0, layer.length - 1).forEach((n1, i) => + layer.slice(i + 1).forEach((n2) => { + const pair = key(n1, n2); + model.ints[pair] = 1; + model.constraints[pair] = { max: 1 }; + model.variables[pair] = { [pair]: 1 }; + }), + ); + + layer.slice(0, layer.length - 1).forEach((n1, i) => + layer.slice(i + 1).forEach((n2, j) => { + const pair1 = key(n1, n2); + layer.slice(i + j + 2).forEach((n3) => { + const pair2 = key(n1, n3); + const pair3 = key(n2, n3); + const triangle = key(n1, n2, n3); + + const triangleUp = triangle + "+"; + model.constraints[triangleUp] = { max: 1 }; + model.variables[pair1][triangleUp] = 1; + model.variables[pair2][triangleUp] = -1; + model.variables[pair3][triangleUp] = 1; + + const triangleDown = triangle + "-"; + model.constraints[triangleDown] = { min: 0 }; + model.variables[pair1][triangleDown] = 1; + model.variables[pair2][triangleDown] = -1; + model.variables[pair3][triangleDown] = 1; + }); + }), + ); + } + + function cross(model, layer) { + layer.slice(0, layer.length - 1).forEach((p1, i) => + layer.slice(i + 1).forEach((p2) => { + const pairp = key(p1, p2); + p1.children.forEach((c1) => + p2.children + .filter((c) => c !== c1) + .forEach((c2) => { + const pairc = key(c1, c2); + const slack = debug + ? `slack (${pairp}) (${pairc})` + : `${pairp}\0\0\0${pairc}`; + const slackUp = `${slack}${debug ? " " : "\0\0\0"}+`; + const slackDown = `${slack}${debug ? " " : "\0\0\0"}-`; + model.variables[slack] = { + [slackUp]: 1, + [slackDown]: 1, + [crossings]: 1, + }; + + const flip = +(c1.id > c2.id); + const sign = flip || -1; + + model.constraints[slackUp] = { min: flip }; + model.variables[pairp][slackUp] = 1; + model.variables[pairc][slackUp] = sign; + + model.constraints[slackDown] = { min: -flip }; + model.variables[pairp][slackDown] = -1; + model.variables[pairc][slackDown] = -sign; + }), + ); + }), + ); + } + + function decrossOpt(layers) { + // Initialize model + const model = { + optimize: crossings, + optType: "min", + constraints: {}, + variables: {}, + ints: {}, + }; + + // Add variables and permutation invariants + layers.forEach((lay) => perms(model, lay)); + + // Add crossing minimization + layers.slice(0, layers.length - 1).forEach((lay) => cross(model, lay)); + + // Solve objective + const ordering = main.Solve(model); + + // Sort layers + layers.forEach((layer) => + layer.sort( + (n1, n2) => (n1.id > n2.id || -1) * (ordering[key(n1, n2)] || -1), + ), + ); + + return layers; + } + + decrossOpt.debug = function(x) { + return arguments.length ? ((debug = x), decrossOpt) : debug; + }; + + return decrossOpt; + } + + function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + } + + function bisector(compare) { + if (compare.length === 1) compare = ascendingComparator(compare); + return { + left: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) < 0) lo = mid + 1; + else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (lo == null) lo = 0; + if (hi == null) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (compare(a[mid], x) > 0) hi = mid; + else lo = mid + 1; + } + return lo; + } + }; + } + + function ascendingComparator(f) { + return function(d, x) { + return ascending(f(d), x); + }; + } + + var ascendingBisect = bisector(ascending); + + function number(x) { + return x === null ? NaN : +x; + } + + function quantile(values, p, valueof) { + if (valueof == null) valueof = number; + if (!(n = values.length)) return; + if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); + if (p >= 1) return +valueof(values[n - 1], n - 1, values); + var n, + i = (n - 1) * p, + i0 = Math.floor(i), + value0 = +valueof(values[i0], i0, values), + value1 = +valueof(values[i0 + 1], i0 + 1, values); + return value0 + (value1 - value0) * (i - i0); + } + + function median(values, valueof) { + var n = values.length, + i = -1, + value, + numbers = []; + + if (valueof == null) { + while (++i < n) { + if (!isNaN(value = number(values[i]))) { + numbers.push(value); + } + } + } + + else { + while (++i < n) { + if (!isNaN(value = number(valueof(values[i], i, values)))) { + numbers.push(value); + } + } + } + + return quantile(numbers.sort(ascending), 0.5); + } + + function median$1() { + function twolayerMedian(topLayer, bottomLayer) { + bottomLayer.forEach((n) => (n._median = [])); + topLayer.forEach((n, i) => n.children.forEach((c) => c._median.push(i))); + bottomLayer.forEach((n) => (n._median = median(n._median) || 0)); + bottomLayer.sort((a, b) => a._median - b._median); + bottomLayer.forEach((n) => delete n._median); + } + + return twolayerMedian; + } + + // Order nodes using two layer algorithm + + // TODO Add number of passes, with 0 being keep passing up and down until no changes (is this guaranteed to never change?, maybe always terminate if no changes, so this can be set very high to almost achieve that effect) + // TODO Add optional greedy swapping of nodes after assignment + // TODO Add two layer noop. This only makes sense if there's a greedy swapping ability + + function twoLayer() { + let order = median$1(); + + function decrossTwoLayer(layers) { + layers + .slice(0, layers.length - 1) + .forEach((layer, i) => order(layer, layers[i + 1])); + return layers; + } + + decrossTwoLayer.order = function(x) { + return arguments.length ? ((order = x), decrossTwoLayer) : order; + }; + + return decrossTwoLayer; + } + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); + } + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var FastPriorityQueue_1 = createCommonjsModule(function (module) { + + var defaultcomparator = function(a, b) { + return a < b; + }; + + // the provided comparator function should take a, b and return *true* when a < b + function FastPriorityQueue(comparator) { + if (!(this instanceof FastPriorityQueue)) return new FastPriorityQueue(comparator); + this.array = []; + this.size = 0; + this.compare = comparator || defaultcomparator; + } + + FastPriorityQueue.prototype.clone = function() { + var fpq = new FastPriorityQueue(this.compare); + fpq.size = this.size; + for (var i = 0; i < this.size; i++) { + fpq.array.push(this.array[i]); + } + return fpq; + }; + + // Add an element into the queue + // runs in O(log n) time + FastPriorityQueue.prototype.add = function(myval) { + var i = this.size; + this.array[this.size] = myval; + this.size += 1; + var p; + var ap; + while (i > 0) { + p = (i - 1) >> 1; + ap = this.array[p]; + if (!this.compare(myval, ap)) { + break; + } + this.array[i] = ap; + i = p; + } + this.array[i] = myval; + }; + + // replace the content of the heap by provided array and "heapifies it" + FastPriorityQueue.prototype.heapify = function(arr) { + this.array = arr; + this.size = arr.length; + var i; + for (i = this.size >> 1; i >= 0; i--) { + this._percolateDown(i); + } + }; + + // for internal use + FastPriorityQueue.prototype._percolateUp = function(i, force) { + var myval = this.array[i]; + var p; + var ap; + while (i > 0) { + p = (i - 1) >> 1; + ap = this.array[p]; + // force will skip the compare + if (!force && !this.compare(myval, ap)) { + break; + } + this.array[i] = ap; + i = p; + } + this.array[i] = myval; + }; + + // for internal use + FastPriorityQueue.prototype._percolateDown = function(i) { + var size = this.size; + var hsize = this.size >>> 1; + var ai = this.array[i]; + var l; + var r; + var bestc; + while (i < hsize) { + l = (i << 1) + 1; + r = l + 1; + bestc = this.array[l]; + if (r < size) { + if (this.compare(this.array[r], bestc)) { + l = r; + bestc = this.array[r]; + } + } + if (!this.compare(bestc, ai)) { + break; + } + this.array[i] = bestc; + i = l; + } + this.array[i] = ai; + }; + + // internal + // _removeAt(index) will delete the given index from the queue, + // retaining balance. returns true if removed. + FastPriorityQueue.prototype._removeAt = function(index) { + if (this.isEmpty() || index > this.size - 1 || index < 0) return false; + + // impl1: + //this.array.splice(index, 1); + //this.heapify(this.array); + // impl2: + this._percolateUp(index, true); + this.poll(); + return true; + }; + + // remove(myval[, comparator]) will remove the given item from the + // queue, checked for equality by using compare if a new comparator isn't provided. + // (for exmaple, if you want to remove based on a seperate key value, not necessarily priority). + // return true if removed. + FastPriorityQueue.prototype.remove = function(myval, comparator) { + if (!comparator) { + comparator = this.compare; + } + if (this.isEmpty()) return false; + for (var i = 0; i < this.size; i++) { + if (comparator(this.array[i], myval) || comparator(myval, this.array[i])) { + continue; + } + // items are equal, remove + return this._removeAt(i); + } + return false; + }; + + // Look at the top of the queue (a smallest element) + // executes in constant time + // + // Calling peek on an empty priority queue returns + // the "undefined" value. + // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/undefined + // + FastPriorityQueue.prototype.peek = function() { + if (this.size == 0) return undefined; + return this.array[0]; + }; + + // remove the element on top of the heap (a smallest element) + // runs in logarithmic time + // + // If the priority queue is empty, the function returns the + // "undefined" value. + // https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/undefined + // + // For long-running and large priority queues, or priority queues + // storing large objects, you may want to call the trim function + // at strategic times to recover allocated memory. + FastPriorityQueue.prototype.poll = function() { + if (this.size == 0) return undefined; + var ans = this.array[0]; + if (this.size > 1) { + this.array[0] = this.array[--this.size]; + this._percolateDown(0 | 0); + } else { + this.size -= 1; + } + return ans; + }; + + // This function adds the provided value to the heap, while removing + // and returning the peek value (like poll). The size of the priority + // thus remains unchanged. + FastPriorityQueue.prototype.replaceTop = function(myval) { + if (this.size == 0) return undefined; + var ans = this.array[0]; + this.array[0] = myval; + this._percolateDown(0 | 0); + return ans; + }; + + // recover unused memory (for long-running priority queues) + FastPriorityQueue.prototype.trim = function() { + this.array = this.array.slice(0, this.size); + }; + + // Check whether the heap is empty + FastPriorityQueue.prototype.isEmpty = function() { + return this.size === 0; + }; + + // iterate over the items in order, pass a callback that receives (item, index) as args. + // TODO once we transpile, uncomment + // if (Symbol && Symbol.iterator) { + // FastPriorityQueue.prototype[Symbol.iterator] = function*() { + // if (this.isEmpty()) return; + // var fpq = this.clone(); + // while (!fpq.isEmpty()) { + // yield fpq.poll(); + // } + // }; + // } + FastPriorityQueue.prototype.forEach = function(callback) { + if (this.isEmpty() || typeof callback != 'function') return; + var i = 0; + var fpq = this.clone(); + while (!fpq.isEmpty()) { + callback(fpq.poll(), i++); + } + }; + + // return the k 'smallest' elements of the queue + // runs in O(k log k) time + // this is the equivalent of repeatedly calling poll, but + // it has a better computational complexity, which can be + // important for large data sets. + FastPriorityQueue.prototype.kSmallest = function(k) { + if (this.size == 0) return []; + var comparator = this.compare; + var arr = this.array; + var fpq = new FastPriorityQueue(function(a,b){ + return comparator(arr[a],arr[b]); + }); + k = Math.min(this.size, k); + var smallest = new Array(k); + var j = 0; + fpq.add(0); + while (j < k) { + var small = fpq.poll(); + smallest[j++] = this.array[small]; + var l = (small << 1) + 1; + var r = l + 1; + if (l < this.size) fpq.add(l); + if (r < this.size) fpq.add(r); + } + return smallest; + }; + + // just for illustration purposes + var main = function() { + // main code + var x = new FastPriorityQueue(function(a, b) { + return a < b; + }); + x.add(1); + x.add(0); + x.add(5); + x.add(4); + x.add(3); + while (!x.isEmpty()) { + console.log(x.poll()); + } + }; + + if (commonjsRequire.main === module) { + main(); + } + + module.exports = FastPriorityQueue; + }); + + // Assign layer to each node that constrains width + + function coffmanGraham() { + let maxWidth = 0; + + function layeringCoffmanGraham(dag) { + maxWidth = + maxWidth || Math.floor(Math.sqrt(dag.reduce((a) => a + 1, 0)) + 0.5); + + // Initialize node data + dag + .each((node) => { + node._before = []; + node._parents = []; + }) + .each((n) => n.children.forEach((c) => c._parents.push(n))); + + // Create queue + const queue = FastPriorityQueue_1((a, b) => { + for (let j = 0; j < a._before.length; ++j) { + if (j >= b._before.length) { + return false; + } else if (a._before[j] < b._before[j]) { + return true; + } else if (b._before[j] < a._before[j]) { + return false; + } + } + return true; + }); + + // Start with root nodes + dag.roots().forEach((n) => queue.add(n)); + let i = 0; + let layer = 0; + let width = 0; + let node; + while ((node = queue.poll())) { + if (width < maxWidth && node._parents.every((p) => p.layer < layer)) { + node.layer = layer; + width++; + } else { + node.layer = ++layer; + width = 1; + } + node.children.forEach((child) => { + child._before.push(i); + if (child._before.length === child._parents.length) { + child._before.sort((a, b) => b - a); + queue.add(child); + } + }); + i++; + } + + // Remove bookkeeping + dag.each((node) => { + delete node._before; + delete node._parents; + }); + return dag; + } + + layeringCoffmanGraham.width = function(x) { + return arguments.length + ? ((maxWidth = x), layeringCoffmanGraham) + : maxWidth; + }; + + return layeringCoffmanGraham; + } + + // Assign a value for the layer of each node that minimizes the length of the longest path + function longestPath() { + let topDown = true; + + function layeringLongestPath(dag) { + if (topDown) { + const maxHeight = Math.max( + ...dag + .height() + .roots() + .map((d) => d.value), + ); + dag.each((n) => { + n.layer = maxHeight - n.value; + }); + } else { + dag.depth(); + dag.each((n) => { + n.layer = n.value; + }); + } + return dag; + } + + layeringLongestPath.topDown = function(x) { + return arguments.length ? ((topDown = x), layeringLongestPath) : topDown; + }; + + return layeringLongestPath; + } + + // Assign a layer value for each node that minimizes the number of dummy nodes that need to be added + + function simplex$1() { + let debug = false; + + function layeringSimplex(dag) { + // use null prefixes to prevent clash + const prefix = debug ? "" : "\0"; + const delim = debug ? " -> " : "\0"; + + const variables = {}; + const ints = {}; + const constraints = {}; + dag.each((node) => { + const nid = `${prefix}${node.id}`; + ints[nid] = 1; + const variable = (variables[nid] = { opt: node.children.length }); + node.children.forEach((child) => { + const edge = `${node.id}${delim}${child.id}`; + constraints[edge] = { min: 1 }; + variable[edge] = -1; + }); + }); + dag.each((node) => { + node.children.forEach((child) => { + const variable = variables[`${prefix}${child.id}`]; + variable.opt--; + variable[`${node.id}${delim}${child.id}`] = 1; + }); + }); + const assignment = main.Solve({ + optimize: "opt", + opType: "max", + constraints: constraints, + variables: variables, + ints: ints, + }); + // lp solver doesn't assign some zeros + dag.each((n) => (n.layer = assignment[`${prefix}${n.id}`] || 0)); + return dag; + } + + layeringSimplex.debug = function(x) { + return arguments.length ? ((debug = x), layeringSimplex) : debug; + }; + + return layeringSimplex; + } + + // Assign a value for the layer of each node that is a topological ordering + function topological$1() { + // TODO Add option to optimally assign layer to minimize number of dummy + // nodes, similar to simplex. This might be combinatoric. + + function layeringTopological(dag) { + let layer = 0; + dag.eachBefore((n) => (n.layer = layer++)); + return dag; + } + + return layeringTopological; + } + + // Compute a sugiyama layout for a dag assigning each node an x and y + + function index() { + let debug = false; + let width = 1; + let height = 1; + let layering = simplex$1(); + let decross = twoLayer(); + let coord = greedy(); + let separation = defaultSeparation; + + // Takes a dag where nodes have a layer attribute, and adds dummy nodes so each + // layer is adjacent, and returns an array of each layer of nodes. + function createLayers(dag) { + const layers = []; + dag.descendants().forEach((node) => { + const layer = layers[node.layer] || (layers[node.layer] = []); + layer.push(node); + node.children = node.children.map((child) => { + if (child.layer > node.layer + 1) { + let last = child; + for (let l = child.layer - 1; l > node.layer; l--) { + const dummy = new Node( + `${node.id}${debug ? "->" : "\0"}${child.id}${ + debug ? " (" : "\0" + }${l}${debug ? ")" : ""}`, + undefined, + ); + dummy.children = [last]; + (layers[l] || (layers[l] = [])).push(dummy); + last = dummy; + } + return last; + } else { + return child; + } + }); + }); + return layers; + } + + function removeDummies(dag) { + dag.each((node) => { + if (node.data) { + node.children = node.children.map((child, i) => { + const points = [{ x: node.x, y: node.y }]; + while (!child.data) { + points.push({ x: child.x, y: child.y }); + [child] = child.children; + } + points.push({ x: child.x, y: child.y }); + node._childLinkData[i].points = points; + return child; + }); + } + }); + } + + function sugiyama(dag) { + // Compute layers + layering(dag); + // Verify layering + if (!dag.every((node) => node.children.every((c) => c.layer > node.layer))) + throw new Error("layering wasn't proper"); + // Create layers + const layers = createLayers(dag); + // Assign y + if (layers.length === 1) { + const [layer] = layers; + layer.forEach((n) => (n.y = height / 2)); + } else { + layers.forEach((layer, i) => + layer.forEach((n) => (n.y = (height * i) / (layers.length - 1))), + ); + } + if (layers.every((l) => l.length === 1)) { + // Next steps aren't necessary + // This will also be true if layers.length === 1 + layers.forEach(([n]) => (n.x = width / 2)); + } else { + // Minimize edge crossings + decross(layers); + // Assign coordinates + coord(layers, separation); + // Scale x + layers.forEach((layer) => layer.forEach((n) => (n.x *= width))); + } + // Remove dummy nodes and update edge data + removeDummies(dag); + return dag; + } + + sugiyama.debug = function(x) { + return arguments.length ? ((debug = x), sugiyama) : debug; + }; + + sugiyama.size = function(x) { + return arguments.length + ? (([width, height] = x), sugiyama) + : [width, height]; + }; + + sugiyama.layering = function(x) { + return arguments.length ? ((layering = x), sugiyama) : layering; + }; + + sugiyama.decross = function(x) { + return arguments.length ? ((decross = x), sugiyama) : decross; + }; + + sugiyama.coord = function(x) { + return arguments.length ? ((coord = x), sugiyama) : coord; + }; + + sugiyama.separation = function(x) { + return arguments.length ? ((separation = x), sugiyama) : separation; + }; + + return sugiyama; + } + + function defaultSeparation() { + return 1; + } + + function mean$2() { + function twolayerMean(topLayer, bottomLayer) { + bottomLayer.forEach((node) => { + node._mean = 0.0; + node._count = 0; + }); + topLayer.forEach((n, i) => + n.children.forEach((c) => (c._mean += (i - c._mean) / ++c._count)), + ); + bottomLayer.sort((a, b) => a._mean - b._mean); + bottomLayer.forEach((node) => { + delete node._mean; + delete node._count; + }); + } + + return twolayerMean; + } + + // Order nodes such that the total number of crossings is minimized + + const crossings$1 = "crossings"; + + function opt$1() { + let debug = false; + + function key(...nodes) { + return nodes + .map((n) => n.id) + .sort() + .join(debug ? " => " : "\0\0"); + } + + function perms(model, layer) { + layer.sort((n1, n2) => n1.id > n2.id || -1); + + layer.slice(0, layer.length - 1).forEach((n1, i) => + layer.slice(i + 1).forEach((n2) => { + const pair = key(n1, n2); + model.ints[pair] = 1; + model.constraints[pair] = { max: 1 }; + model.variables[pair] = { [pair]: 1 }; + }), + ); + + layer.slice(0, layer.length - 1).forEach((n1, i) => + layer.slice(i + 1).forEach((n2, j) => { + const pair1 = key(n1, n2); + layer.slice(i + j + 2).forEach((n3) => { + const pair2 = key(n1, n3); + const pair3 = key(n2, n3); + const triangle = key(n1, n2, n3); + + const triangleUp = triangle + "+"; + model.constraints[triangleUp] = { max: 1 }; + model.variables[pair1][triangleUp] = 1; + model.variables[pair2][triangleUp] = -1; + model.variables[pair3][triangleUp] = 1; + + const triangleDown = triangle + "-"; + model.constraints[triangleDown] = { min: 0 }; + model.variables[pair1][triangleDown] = 1; + model.variables[pair2][triangleDown] = -1; + model.variables[pair3][triangleDown] = 1; + }); + }), + ); + } + + function cross(model, layer) { + layer.slice(0, layer.length - 1).forEach((p1, i) => + layer.slice(i + 1).forEach((p2) => { + p1.children.forEach((c1) => + p2.children + .filter((c) => c !== c1) + .forEach((c2) => { + const pair = key(c1, c2); + model.variables[pair][crossings$1] = +(c1.id > c2.id) || -1; + }), + ); + }), + ); + } + + function twolayerOpt(topLayer, bottomLayer) { + // Initialize model + const model = { + optimize: crossings$1, + optType: "min", + constraints: {}, + variables: {}, + ints: {}, + }; + + // Add variables and permutation invariants + perms(model, bottomLayer); + + // Add crossing minimization + cross(model, topLayer); + + // Solve objective + const ordering = main.Solve(model); + + // Sort layers + bottomLayer.sort( + (n1, n2) => (n1.id > n2.id || -1) * (ordering[key(n1, n2)] || -1), + ); + } + + twolayerOpt.debug = function(x) { + return arguments.length ? ((debug = x), twolayerOpt) : debug; + }; + + return twolayerOpt; + } + + // Assign an index to links greedily + function greedy$1() { + function greedy(nodes) { + const pos = []; + const neg = []; + + nodes.forEach((node, layer) => { + node + .childLinks() + .sort(({ target: a }, { target: b }) => a.layer - b.layer) + .forEach(({ target, data }) => { + if (target.layer === layer + 1) { + data.index = 0; + } else { + const neg_index = + (neg.findIndex((i) => i <= layer) + 1 || neg.length + 1) - 1; + const pos_index = + (pos.findIndex((i) => i <= layer) + 1 || pos.length + 1) - 1; + if (neg_index < pos_index) { + // Default right + data.index = -neg_index - 1; + neg[neg_index] = target.layer - 1; + } else { + data.index = pos_index + 1; + pos[pos_index] = target.layer - 1; + } + } + }); + }); + } + + return greedy; + } + + // Compute a zherebko layout for a dag assigning each node an x and y + + function index$1() { + let width = 1; + let height = 1; + let indexer = greedy$1(); + + function zherebko(dag) { + // Topological Sort + const ordered = []; + dag.eachBefore((node, i) => { + node.layer = i; + ordered.push(node); + }); + + // Get indices + indexer(ordered); + + // Map to coordinates + let minIndex = 0; + let maxIndex = 0; + dag.eachLinks(({ data }) => { + minIndex = Math.min(minIndex, data.index); + maxIndex = Math.max(maxIndex, data.index); + }); + let maxLayer = ordered.length - 1; + dag.each((node) => { + node.x = (-minIndex / (maxIndex - minIndex)) * width; + node.y = (node.layer / maxLayer) * height; + }); + dag.eachLinks(({ source, target, data }) => { + const points = [{ x: source.x, y: source.y }]; + + const x = ((data.index - minIndex) / (maxIndex - minIndex)) * width; + const y1 = ((source.layer + 1) / maxLayer) * height; + const y2 = ((target.layer - 1) / maxLayer) * height; + if (target.layer - source.layer === 2) { + points.push({ x: x, y: y1 }); + } else if (target.layer - source.layer > 2) { + points.push({ x: x, y: y1 }, { x: x, y: y2 }); + } + + points.push({ x: target.x, y: target.y }); + data.points = points; + }); + return dag; + } + + zherebko.size = function(x) { + return arguments.length + ? (([width, height] = x), zherebko) + : [width, height]; + }; + + return zherebko; + } + + exports.coordCenter = center; + exports.coordGreedy = greedy; + exports.coordMinCurve = minCurve; + exports.coordTopological = topological; + exports.coordVert = vert; + exports.dagConnect = connect; + exports.dagHierarchy = hierarchy; + exports.dagStratify = dagStratify; + exports.decrossOpt = opt; + exports.decrossTwoLayer = twoLayer; + exports.layeringCoffmanGraham = coffmanGraham; + exports.layeringLongestPath = longestPath; + exports.layeringSimplex = simplex$1; + exports.layeringTopological = topological$1; + exports.sugiyama = index; + exports.twolayerMean = mean$2; + exports.twolayerMedian = median$1; + exports.twolayerOpt = opt$1; + exports.zherebko = index$1; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],31:[function(require,module,exports){ +// https://d3js.org/d3-dispatch/ v1.0.5 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var noop = {value: function() {}}; + +function dispatch() { + for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { + if (!(t = arguments[i] + "") || (t in _)) throw new Error("illegal type: " + t); + _[t] = []; + } + return new Dispatch(_); +} + +function Dispatch(_) { + this._ = _; +} + +function parseTypenames(typenames, types) { + return typenames.trim().split(/^|\s+/).map(function(t) { + var name = "", i = t.indexOf("."); + if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); + if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); + return {type: t, name: name}; + }); +} + +Dispatch.prototype = dispatch.prototype = { + constructor: Dispatch, + on: function(typename, callback) { + var _ = this._, + T = parseTypenames(typename + "", _), + t, + i = -1, + n = T.length; + + // If no callback was specified, return the callback of the given type and name. + if (arguments.length < 2) { + while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; + return; + } + + // If a type was specified, set the callback for the given type and name. + // Otherwise, if a null callback was specified, remove callbacks of the given name. + if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); + while (++i < n) { + if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); + else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); + } + + return this; + }, + copy: function() { + var copy = {}, _ = this._; + for (var t in _) copy[t] = _[t].slice(); + return new Dispatch(copy); + }, + call: function(type, that) { + if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; + if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); + for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); + }, + apply: function(type, that, args) { + if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); + for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); + } +}; + +function get(type, name) { + for (var i = 0, n = type.length, c; i < n; ++i) { + if ((c = type[i]).name === name) { + return c.value; + } + } +} + +function set(type, name, callback) { + for (var i = 0, n = type.length; i < n; ++i) { + if (type[i].name === name) { + type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); + break; + } + } + if (callback != null) type.push({name: name, value: callback}); + return type; +} + +exports.dispatch = dispatch; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],32:[function(require,module,exports){ +// https://d3js.org/d3-drag/ v1.2.3 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3)); +}(this, (function (exports,d3Selection,d3Dispatch) { 'use strict'; + +function nopropagation() { + d3Selection.event.stopImmediatePropagation(); +} + +function noevent() { + d3Selection.event.preventDefault(); + d3Selection.event.stopImmediatePropagation(); +} + +function nodrag(view) { + var root = view.document.documentElement, + selection = d3Selection.select(view).on("dragstart.drag", noevent, true); + if ("onselectstart" in root) { + selection.on("selectstart.drag", noevent, true); + } else { + root.__noselect = root.style.MozUserSelect; + root.style.MozUserSelect = "none"; + } +} + +function yesdrag(view, noclick) { + var root = view.document.documentElement, + selection = d3Selection.select(view).on("dragstart.drag", null); + if (noclick) { + selection.on("click.drag", noevent, true); + setTimeout(function() { selection.on("click.drag", null); }, 0); + } + if ("onselectstart" in root) { + selection.on("selectstart.drag", null); + } else { + root.style.MozUserSelect = root.__noselect; + delete root.__noselect; + } +} + +function constant(x) { + return function() { + return x; + }; +} + +function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { + this.target = target; + this.type = type; + this.subject = subject; + this.identifier = id; + this.active = active; + this.x = x; + this.y = y; + this.dx = dx; + this.dy = dy; + this._ = dispatch; +} + +DragEvent.prototype.on = function() { + var value = this._.on.apply(this._, arguments); + return value === this._ ? this : value; +}; + +// Ignore right-click, since that should open the context menu. +function defaultFilter() { + return !d3Selection.event.button; +} + +function defaultContainer() { + return this.parentNode; +} + +function defaultSubject(d) { + return d == null ? {x: d3Selection.event.x, y: d3Selection.event.y} : d; +} + +function defaultTouchable() { + return "ontouchstart" in this; +} + +function drag() { + var filter = defaultFilter, + container = defaultContainer, + subject = defaultSubject, + touchable = defaultTouchable, + gestures = {}, + listeners = d3Dispatch.dispatch("start", "drag", "end"), + active = 0, + mousedownx, + mousedowny, + mousemoving, + touchending, + clickDistance2 = 0; + + function drag(selection) { + selection + .on("mousedown.drag", mousedowned) + .filter(touchable) + .on("touchstart.drag", touchstarted) + .on("touchmove.drag", touchmoved) + .on("touchend.drag touchcancel.drag", touchended) + .style("touch-action", "none") + .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + + function mousedowned() { + if (touchending || !filter.apply(this, arguments)) return; + var gesture = beforestart("mouse", container.apply(this, arguments), d3Selection.mouse, this, arguments); + if (!gesture) return; + d3Selection.select(d3Selection.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); + nodrag(d3Selection.event.view); + nopropagation(); + mousemoving = false; + mousedownx = d3Selection.event.clientX; + mousedowny = d3Selection.event.clientY; + gesture("start"); + } + + function mousemoved() { + noevent(); + if (!mousemoving) { + var dx = d3Selection.event.clientX - mousedownx, dy = d3Selection.event.clientY - mousedowny; + mousemoving = dx * dx + dy * dy > clickDistance2; + } + gestures.mouse("drag"); + } + + function mouseupped() { + d3Selection.select(d3Selection.event.view).on("mousemove.drag mouseup.drag", null); + yesdrag(d3Selection.event.view, mousemoving); + noevent(); + gestures.mouse("end"); + } + + function touchstarted() { + if (!filter.apply(this, arguments)) return; + var touches = d3Selection.event.changedTouches, + c = container.apply(this, arguments), + n = touches.length, i, gesture; + + for (i = 0; i < n; ++i) { + if (gesture = beforestart(touches[i].identifier, c, d3Selection.touch, this, arguments)) { + nopropagation(); + gesture("start"); + } + } + } + + function touchmoved() { + var touches = d3Selection.event.changedTouches, + n = touches.length, i, gesture; + + for (i = 0; i < n; ++i) { + if (gesture = gestures[touches[i].identifier]) { + noevent(); + gesture("drag"); + } + } + } + + function touchended() { + var touches = d3Selection.event.changedTouches, + n = touches.length, i, gesture; + + if (touchending) clearTimeout(touchending); + touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! + for (i = 0; i < n; ++i) { + if (gesture = gestures[touches[i].identifier]) { + nopropagation(); + gesture("end"); + } + } + } + + function beforestart(id, container, point, that, args) { + var p = point(container, id), s, dx, dy, + sublisteners = listeners.copy(); + + if (!d3Selection.customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { + if ((d3Selection.event.subject = s = subject.apply(that, args)) == null) return false; + dx = s.x - p[0] || 0; + dy = s.y - p[1] || 0; + return true; + })) return; + + return function gesture(type) { + var p0 = p, n; + switch (type) { + case "start": gestures[id] = gesture, n = active++; break; + case "end": delete gestures[id], --active; // nobreak + case "drag": p = point(container, id), n = active; break; + } + d3Selection.customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); + }; + } + + drag.filter = function(_) { + return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), drag) : filter; + }; + + drag.container = function(_) { + return arguments.length ? (container = typeof _ === "function" ? _ : constant(_), drag) : container; + }; + + drag.subject = function(_) { + return arguments.length ? (subject = typeof _ === "function" ? _ : constant(_), drag) : subject; + }; + + drag.touchable = function(_) { + return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), drag) : touchable; + }; + + drag.on = function() { + var value = listeners.on.apply(listeners, arguments); + return value === listeners ? drag : value; + }; + + drag.clickDistance = function(_) { + return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); + }; + + return drag; +} + +exports.drag = drag; +exports.dragDisable = nodrag; +exports.dragEnable = yesdrag; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-dispatch":31,"d3-selection":47}],33:[function(require,module,exports){ +// https://d3js.org/d3-dsv/ v1.1.1 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var EOL = {}, + EOF = {}, + QUOTE = 34, + NEWLINE = 10, + RETURN = 13; + +function objectConverter(columns) { + return new Function("d", "return {" + columns.map(function(name, i) { + return JSON.stringify(name) + ": d[" + i + "]"; + }).join(",") + "}"); +} + +function customConverter(columns, f) { + var object = objectConverter(columns); + return function(row, i) { + return f(object(row), i, columns); + }; +} + +// Compute unique columns in order of discovery. +function inferColumns(rows) { + var columnSet = Object.create(null), + columns = []; + + rows.forEach(function(row) { + for (var column in row) { + if (!(column in columnSet)) { + columns.push(columnSet[column] = column); + } + } + }); + + return columns; +} + +function pad(value, width) { + var s = value + "", length = s.length; + return length < width ? new Array(width - length + 1).join(0) + s : s; +} + +function formatYear(year) { + return year < 0 ? "-" + pad(-year, 6) + : year > 9999 ? "+" + pad(year, 6) + : pad(year, 4); +} + +function formatDate(date) { + var hours = date.getUTCHours(), + minutes = date.getUTCMinutes(), + seconds = date.getUTCSeconds(), + milliseconds = date.getUTCMilliseconds(); + return isNaN(date) ? "Invalid Date" + : formatYear(date.getUTCFullYear(), 4) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2) + + (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z" + : seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z" + : minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z" + : ""); +} + +function dsv(delimiter) { + var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), + DELIMITER = delimiter.charCodeAt(0); + + function parse(text, f) { + var convert, columns, rows = parseRows(text, function(row, i) { + if (convert) return convert(row, i - 1); + columns = row, convert = f ? customConverter(row, f) : objectConverter(row); + }); + rows.columns = columns || []; + return rows; + } + + function parseRows(text, f) { + var rows = [], // output rows + N = text.length, + I = 0, // current character index + n = 0, // current line number + t, // current token + eof = N <= 0, // current token followed by EOF? + eol = false; // current token followed by EOL? + + // Strip the trailing newline. + if (text.charCodeAt(N - 1) === NEWLINE) --N; + if (text.charCodeAt(N - 1) === RETURN) --N; + + function token() { + if (eof) return EOF; + if (eol) return eol = false, EOL; + + // Unescape quotes. + var i, j = I, c; + if (text.charCodeAt(j) === QUOTE) { + while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); + if ((i = I) >= N) eof = true; + else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; + else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } + return text.slice(j + 1, i - 1).replace(/""/g, "\""); + } + + // Find next delimiter or newline. + while (I < N) { + if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; + else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } + else if (c !== DELIMITER) continue; + return text.slice(j, i); + } + + // Return last token before EOF. + return eof = true, text.slice(j, N); + } + + while ((t = token()) !== EOF) { + var row = []; + while (t !== EOL && t !== EOF) row.push(t), t = token(); + if (f && (row = f(row, n++)) == null) continue; + rows.push(row); + } + + return rows; + } + + function preformatBody(rows, columns) { + return rows.map(function(row) { + return columns.map(function(column) { + return formatValue(row[column]); + }).join(delimiter); + }); + } + + function format(rows, columns) { + if (columns == null) columns = inferColumns(rows); + return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n"); + } + + function formatBody(rows, columns) { + if (columns == null) columns = inferColumns(rows); + return preformatBody(rows, columns).join("\n"); + } + + function formatRows(rows) { + return rows.map(formatRow).join("\n"); + } + + function formatRow(row) { + return row.map(formatValue).join(delimiter); + } + + function formatValue(value) { + return value == null ? "" + : value instanceof Date ? formatDate(value) + : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\"" + : value; + } + + return { + parse: parse, + parseRows: parseRows, + format: format, + formatBody: formatBody, + formatRows: formatRows + }; +} + +var csv = dsv(","); + +var csvParse = csv.parse; +var csvParseRows = csv.parseRows; +var csvFormat = csv.format; +var csvFormatBody = csv.formatBody; +var csvFormatRows = csv.formatRows; + +var tsv = dsv("\t"); + +var tsvParse = tsv.parse; +var tsvParseRows = tsv.parseRows; +var tsvFormat = tsv.format; +var tsvFormatBody = tsv.formatBody; +var tsvFormatRows = tsv.formatRows; + +function autoType(object) { + for (var key in object) { + var value = object[key].trim(), number; + if (!value) value = null; + else if (value === "true") value = true; + else if (value === "false") value = false; + else if (value === "NaN") value = NaN; + else if (!isNaN(number = +value)) value = number; + else if (/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/.test(value)) value = new Date(value); + else continue; + object[key] = value; + } + return object; +} + +exports.dsvFormat = dsv; +exports.csvParse = csvParse; +exports.csvParseRows = csvParseRows; +exports.csvFormat = csvFormat; +exports.csvFormatBody = csvFormatBody; +exports.csvFormatRows = csvFormatRows; +exports.tsvParse = tsvParse; +exports.tsvParseRows = tsvParseRows; +exports.tsvFormat = tsvFormat; +exports.tsvFormatBody = tsvFormatBody; +exports.tsvFormatRows = tsvFormatRows; +exports.autoType = autoType; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],34:[function(require,module,exports){ +// https://d3js.org/d3-ease/ v1.0.5 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function linear(t) { + return +t; +} + +function quadIn(t) { + return t * t; +} + +function quadOut(t) { + return t * (2 - t); +} + +function quadInOut(t) { + return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; +} + +function cubicIn(t) { + return t * t * t; +} + +function cubicOut(t) { + return --t * t * t + 1; +} + +function cubicInOut(t) { + return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; +} + +var exponent = 3; + +var polyIn = (function custom(e) { + e = +e; + + function polyIn(t) { + return Math.pow(t, e); + } + + polyIn.exponent = custom; + + return polyIn; +})(exponent); + +var polyOut = (function custom(e) { + e = +e; + + function polyOut(t) { + return 1 - Math.pow(1 - t, e); + } + + polyOut.exponent = custom; + + return polyOut; +})(exponent); + +var polyInOut = (function custom(e) { + e = +e; + + function polyInOut(t) { + return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; + } + + polyInOut.exponent = custom; + + return polyInOut; +})(exponent); + +var pi = Math.PI, + halfPi = pi / 2; + +function sinIn(t) { + return 1 - Math.cos(t * halfPi); +} + +function sinOut(t) { + return Math.sin(t * halfPi); +} + +function sinInOut(t) { + return (1 - Math.cos(pi * t)) / 2; +} + +function expIn(t) { + return Math.pow(2, 10 * t - 10); +} + +function expOut(t) { + return 1 - Math.pow(2, -10 * t); +} + +function expInOut(t) { + return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2; +} + +function circleIn(t) { + return 1 - Math.sqrt(1 - t * t); +} + +function circleOut(t) { + return Math.sqrt(1 - --t * t); +} + +function circleInOut(t) { + return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; +} + +var b1 = 4 / 11, + b2 = 6 / 11, + b3 = 8 / 11, + b4 = 3 / 4, + b5 = 9 / 11, + b6 = 10 / 11, + b7 = 15 / 16, + b8 = 21 / 22, + b9 = 63 / 64, + b0 = 1 / b1 / b1; + +function bounceIn(t) { + return 1 - bounceOut(1 - t); +} + +function bounceOut(t) { + return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; +} + +function bounceInOut(t) { + return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; +} + +var overshoot = 1.70158; + +var backIn = (function custom(s) { + s = +s; + + function backIn(t) { + return t * t * ((s + 1) * t - s); + } + + backIn.overshoot = custom; + + return backIn; +})(overshoot); + +var backOut = (function custom(s) { + s = +s; + + function backOut(t) { + return --t * t * ((s + 1) * t + s) + 1; + } + + backOut.overshoot = custom; + + return backOut; +})(overshoot); + +var backInOut = (function custom(s) { + s = +s; + + function backInOut(t) { + return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; + } + + backInOut.overshoot = custom; + + return backInOut; +})(overshoot); + +var tau = 2 * Math.PI, + amplitude = 1, + period = 0.3; + +var elasticIn = (function custom(a, p) { + var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); + + function elasticIn(t) { + return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p); + } + + elasticIn.amplitude = function(a) { return custom(a, p * tau); }; + elasticIn.period = function(p) { return custom(a, p); }; + + return elasticIn; +})(amplitude, period); + +var elasticOut = (function custom(a, p) { + var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); + + function elasticOut(t) { + return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p); + } + + elasticOut.amplitude = function(a) { return custom(a, p * tau); }; + elasticOut.period = function(p) { return custom(a, p); }; + + return elasticOut; +})(amplitude, period); + +var elasticInOut = (function custom(a, p) { + var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); + + function elasticInOut(t) { + return ((t = t * 2 - 1) < 0 + ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) + : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2; + } + + elasticInOut.amplitude = function(a) { return custom(a, p * tau); }; + elasticInOut.period = function(p) { return custom(a, p); }; + + return elasticInOut; +})(amplitude, period); + +exports.easeLinear = linear; +exports.easeQuad = quadInOut; +exports.easeQuadIn = quadIn; +exports.easeQuadOut = quadOut; +exports.easeQuadInOut = quadInOut; +exports.easeCubic = cubicInOut; +exports.easeCubicIn = cubicIn; +exports.easeCubicOut = cubicOut; +exports.easeCubicInOut = cubicInOut; +exports.easePoly = polyInOut; +exports.easePolyIn = polyIn; +exports.easePolyOut = polyOut; +exports.easePolyInOut = polyInOut; +exports.easeSin = sinInOut; +exports.easeSinIn = sinIn; +exports.easeSinOut = sinOut; +exports.easeSinInOut = sinInOut; +exports.easeExp = expInOut; +exports.easeExpIn = expIn; +exports.easeExpOut = expOut; +exports.easeExpInOut = expInOut; +exports.easeCircle = circleInOut; +exports.easeCircleIn = circleIn; +exports.easeCircleOut = circleOut; +exports.easeCircleInOut = circleInOut; +exports.easeBounce = bounceOut; +exports.easeBounceIn = bounceIn; +exports.easeBounceOut = bounceOut; +exports.easeBounceInOut = bounceInOut; +exports.easeBack = backInOut; +exports.easeBackIn = backIn; +exports.easeBackOut = backOut; +exports.easeBackInOut = backInOut; +exports.easeElastic = elasticOut; +exports.easeElasticIn = elasticIn; +exports.easeElasticOut = elasticOut; +exports.easeElasticInOut = elasticInOut; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],35:[function(require,module,exports){ +// https://d3js.org/d3-fetch/ v1.1.2 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-dsv')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-dsv'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3)); +}(this, (function (exports,d3Dsv) { 'use strict'; + +function responseBlob(response) { + if (!response.ok) throw new Error(response.status + " " + response.statusText); + return response.blob(); +} + +function blob(input, init) { + return fetch(input, init).then(responseBlob); +} + +function responseArrayBuffer(response) { + if (!response.ok) throw new Error(response.status + " " + response.statusText); + return response.arrayBuffer(); +} + +function buffer(input, init) { + return fetch(input, init).then(responseArrayBuffer); +} + +function responseText(response) { + if (!response.ok) throw new Error(response.status + " " + response.statusText); + return response.text(); +} + +function text(input, init) { + return fetch(input, init).then(responseText); +} + +function dsvParse(parse) { + return function(input, init, row) { + if (arguments.length === 2 && typeof init === "function") row = init, init = undefined; + return text(input, init).then(function(response) { + return parse(response, row); + }); + }; +} + +function dsv(delimiter, input, init, row) { + if (arguments.length === 3 && typeof init === "function") row = init, init = undefined; + var format = d3Dsv.dsvFormat(delimiter); + return text(input, init).then(function(response) { + return format.parse(response, row); + }); +} + +var csv = dsvParse(d3Dsv.csvParse); +var tsv = dsvParse(d3Dsv.tsvParse); + +function image(input, init) { + return new Promise(function(resolve, reject) { + var image = new Image; + for (var key in init) image[key] = init[key]; + image.onerror = reject; + image.onload = function() { resolve(image); }; + image.src = input; + }); +} + +function responseJson(response) { + if (!response.ok) throw new Error(response.status + " " + response.statusText); + return response.json(); +} + +function json(input, init) { + return fetch(input, init).then(responseJson); +} + +function parser(type) { + return function(input, init) { + return text(input, init).then(function(text$$1) { + return (new DOMParser).parseFromString(text$$1, type); + }); + }; +} + +var xml = parser("application/xml"); + +var html = parser("text/html"); + +var svg = parser("image/svg+xml"); + +exports.blob = blob; +exports.buffer = buffer; +exports.dsv = dsv; +exports.csv = csv; +exports.tsv = tsv; +exports.image = image; +exports.json = json; +exports.text = text; +exports.xml = xml; +exports.html = html; +exports.svg = svg; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-dsv":33}],36:[function(require,module,exports){ +// https://d3js.org/d3-force/ v1.2.1 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-quadtree'), require('d3-collection'), require('d3-dispatch'), require('d3-timer')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-quadtree', 'd3-collection', 'd3-dispatch', 'd3-timer'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3)); +}(this, (function (exports,d3Quadtree,d3Collection,d3Dispatch,d3Timer) { 'use strict'; + +function center(x, y) { + var nodes; + + if (x == null) x = 0; + if (y == null) y = 0; + + function force() { + var i, + n = nodes.length, + node, + sx = 0, + sy = 0; + + for (i = 0; i < n; ++i) { + node = nodes[i], sx += node.x, sy += node.y; + } + + for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) { + node = nodes[i], node.x -= sx, node.y -= sy; + } + } + + force.initialize = function(_) { + nodes = _; + }; + + force.x = function(_) { + return arguments.length ? (x = +_, force) : x; + }; + + force.y = function(_) { + return arguments.length ? (y = +_, force) : y; + }; + + return force; +} + +function constant(x) { + return function() { + return x; + }; +} + +function jiggle() { + return (Math.random() - 0.5) * 1e-6; +} + +function x(d) { + return d.x + d.vx; +} + +function y(d) { + return d.y + d.vy; +} + +function collide(radius) { + var nodes, + radii, + strength = 1, + iterations = 1; + + if (typeof radius !== "function") radius = constant(radius == null ? 1 : +radius); + + function force() { + var i, n = nodes.length, + tree, + node, + xi, + yi, + ri, + ri2; + + for (var k = 0; k < iterations; ++k) { + tree = d3Quadtree.quadtree(nodes, x, y).visitAfter(prepare); + for (i = 0; i < n; ++i) { + node = nodes[i]; + ri = radii[node.index], ri2 = ri * ri; + xi = node.x + node.vx; + yi = node.y + node.vy; + tree.visit(apply); + } + } + + function apply(quad, x0, y0, x1, y1) { + var data = quad.data, rj = quad.r, r = ri + rj; + if (data) { + if (data.index > node.index) { + var x = xi - data.x - data.vx, + y = yi - data.y - data.vy, + l = x * x + y * y; + if (l < r * r) { + if (x === 0) x = jiggle(), l += x * x; + if (y === 0) y = jiggle(), l += y * y; + l = (r - (l = Math.sqrt(l))) / l * strength; + node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); + node.vy += (y *= l) * r; + data.vx -= x * (r = 1 - r); + data.vy -= y * r; + } + } + return; + } + return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; + } + } + + function prepare(quad) { + if (quad.data) return quad.r = radii[quad.data.index]; + for (var i = quad.r = 0; i < 4; ++i) { + if (quad[i] && quad[i].r > quad.r) { + quad.r = quad[i].r; + } + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length, node; + radii = new Array(n); + for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.iterations = function(_) { + return arguments.length ? (iterations = +_, force) : iterations; + }; + + force.strength = function(_) { + return arguments.length ? (strength = +_, force) : strength; + }; + + force.radius = function(_) { + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; + }; + + return force; +} + +function index(d) { + return d.index; +} + +function find(nodeById, nodeId) { + var node = nodeById.get(nodeId); + if (!node) throw new Error("missing: " + nodeId); + return node; +} + +function link(links) { + var id = index, + strength = defaultStrength, + strengths, + distance = constant(30), + distances, + nodes, + count, + bias, + iterations = 1; + + if (links == null) links = []; + + function defaultStrength(link) { + return 1 / Math.min(count[link.source.index], count[link.target.index]); + } + + function force(alpha) { + for (var k = 0, n = links.length; k < iterations; ++k) { + for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { + link = links[i], source = link.source, target = link.target; + x = target.x + target.vx - source.x - source.vx || jiggle(); + y = target.y + target.vy - source.y - source.vy || jiggle(); + l = Math.sqrt(x * x + y * y); + l = (l - distances[i]) / l * alpha * strengths[i]; + x *= l, y *= l; + target.vx -= x * (b = bias[i]); + target.vy -= y * b; + source.vx += x * (b = 1 - b); + source.vy += y * b; + } + } + } + + function initialize() { + if (!nodes) return; + + var i, + n = nodes.length, + m = links.length, + nodeById = d3Collection.map(nodes, id), + link; + + for (i = 0, count = new Array(n); i < m; ++i) { + link = links[i], link.index = i; + if (typeof link.source !== "object") link.source = find(nodeById, link.source); + if (typeof link.target !== "object") link.target = find(nodeById, link.target); + count[link.source.index] = (count[link.source.index] || 0) + 1; + count[link.target.index] = (count[link.target.index] || 0) + 1; + } + + for (i = 0, bias = new Array(m); i < m; ++i) { + link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); + } + + strengths = new Array(m), initializeStrength(); + distances = new Array(m), initializeDistance(); + } + + function initializeStrength() { + if (!nodes) return; + + for (var i = 0, n = links.length; i < n; ++i) { + strengths[i] = +strength(links[i], i, links); + } + } + + function initializeDistance() { + if (!nodes) return; + + for (var i = 0, n = links.length; i < n; ++i) { + distances[i] = +distance(links[i], i, links); + } + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.links = function(_) { + return arguments.length ? (links = _, initialize(), force) : links; + }; + + force.id = function(_) { + return arguments.length ? (id = _, force) : id; + }; + + force.iterations = function(_) { + return arguments.length ? (iterations = +_, force) : iterations; + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initializeStrength(), force) : strength; + }; + + force.distance = function(_) { + return arguments.length ? (distance = typeof _ === "function" ? _ : constant(+_), initializeDistance(), force) : distance; + }; + + return force; +} + +function x$1(d) { + return d.x; +} + +function y$1(d) { + return d.y; +} + +var initialRadius = 10, + initialAngle = Math.PI * (3 - Math.sqrt(5)); + +function simulation(nodes) { + var simulation, + alpha = 1, + alphaMin = 0.001, + alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), + alphaTarget = 0, + velocityDecay = 0.6, + forces = d3Collection.map(), + stepper = d3Timer.timer(step), + event = d3Dispatch.dispatch("tick", "end"); + + if (nodes == null) nodes = []; + + function step() { + tick(); + event.call("tick", simulation); + if (alpha < alphaMin) { + stepper.stop(); + event.call("end", simulation); + } + } + + function tick(iterations) { + var i, n = nodes.length, node; + + if (iterations === undefined) iterations = 1; + + for (var k = 0; k < iterations; ++k) { + alpha += (alphaTarget - alpha) * alphaDecay; + + forces.each(function (force) { + force(alpha); + }); + + for (i = 0; i < n; ++i) { + node = nodes[i]; + if (node.fx == null) node.x += node.vx *= velocityDecay; + else node.x = node.fx, node.vx = 0; + if (node.fy == null) node.y += node.vy *= velocityDecay; + else node.y = node.fy, node.vy = 0; + } + } + + return simulation; + } + + function initializeNodes() { + for (var i = 0, n = nodes.length, node; i < n; ++i) { + node = nodes[i], node.index = i; + if (node.fx != null) node.x = node.fx; + if (node.fy != null) node.y = node.fy; + if (isNaN(node.x) || isNaN(node.y)) { + var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle; + node.x = radius * Math.cos(angle); + node.y = radius * Math.sin(angle); + } + if (isNaN(node.vx) || isNaN(node.vy)) { + node.vx = node.vy = 0; + } + } + } + + function initializeForce(force) { + if (force.initialize) force.initialize(nodes); + return force; + } + + initializeNodes(); + + return simulation = { + tick: tick, + + restart: function() { + return stepper.restart(step), simulation; + }, + + stop: function() { + return stepper.stop(), simulation; + }, + + nodes: function(_) { + return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes; + }, + + alpha: function(_) { + return arguments.length ? (alpha = +_, simulation) : alpha; + }, + + alphaMin: function(_) { + return arguments.length ? (alphaMin = +_, simulation) : alphaMin; + }, + + alphaDecay: function(_) { + return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; + }, + + alphaTarget: function(_) { + return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; + }, + + velocityDecay: function(_) { + return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; + }, + + force: function(name, _) { + return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); + }, + + find: function(x, y, radius) { + var i = 0, + n = nodes.length, + dx, + dy, + d2, + node, + closest; + + if (radius == null) radius = Infinity; + else radius *= radius; + + for (i = 0; i < n; ++i) { + node = nodes[i]; + dx = x - node.x; + dy = y - node.y; + d2 = dx * dx + dy * dy; + if (d2 < radius) closest = node, radius = d2; + } + + return closest; + }, + + on: function(name, _) { + return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); + } + }; +} + +function manyBody() { + var nodes, + node, + alpha, + strength = constant(-30), + strengths, + distanceMin2 = 1, + distanceMax2 = Infinity, + theta2 = 0.81; + + function force(_) { + var i, n = nodes.length, tree = d3Quadtree.quadtree(nodes, x$1, y$1).visitAfter(accumulate); + for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length, node; + strengths = new Array(n); + for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); + } + + function accumulate(quad) { + var strength = 0, q, c, weight = 0, x, y, i; + + // For internal nodes, accumulate forces from child quadrants. + if (quad.length) { + for (x = y = i = 0; i < 4; ++i) { + if ((q = quad[i]) && (c = Math.abs(q.value))) { + strength += q.value, weight += c, x += c * q.x, y += c * q.y; + } + } + quad.x = x / weight; + quad.y = y / weight; + } + + // For leaf nodes, accumulate forces from coincident quadrants. + else { + q = quad; + q.x = q.data.x; + q.y = q.data.y; + do strength += strengths[q.data.index]; + while (q = q.next); + } + + quad.value = strength; + } + + function apply(quad, x1, _, x2) { + if (!quad.value) return true; + + var x = quad.x - node.x, + y = quad.y - node.y, + w = x2 - x1, + l = x * x + y * y; + + // Apply the Barnes-Hut approximation if possible. + // Limit forces for very close nodes; randomize direction if coincident. + if (w * w / theta2 < l) { + if (l < distanceMax2) { + if (x === 0) x = jiggle(), l += x * x; + if (y === 0) y = jiggle(), l += y * y; + if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); + node.vx += x * quad.value * alpha / l; + node.vy += y * quad.value * alpha / l; + } + return true; + } + + // Otherwise, process points directly. + else if (quad.length || l >= distanceMax2) return; + + // Limit forces for very close nodes; randomize direction if coincident. + if (quad.data !== node || quad.next) { + if (x === 0) x = jiggle(), l += x * x; + if (y === 0) y = jiggle(), l += y * y; + if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); + } + + do if (quad.data !== node) { + w = strengths[quad.data.index] * alpha / l; + node.vx += x * w; + node.vy += y * w; + } while (quad = quad.next); + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.distanceMin = function(_) { + return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); + }; + + force.distanceMax = function(_) { + return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); + }; + + force.theta = function(_) { + return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); + }; + + return force; +} + +function radial(radius, x, y) { + var nodes, + strength = constant(0.1), + strengths, + radiuses; + + if (typeof radius !== "function") radius = constant(+radius); + if (x == null) x = 0; + if (y == null) y = 0; + + function force(alpha) { + for (var i = 0, n = nodes.length; i < n; ++i) { + var node = nodes[i], + dx = node.x - x || 1e-6, + dy = node.y - y || 1e-6, + r = Math.sqrt(dx * dx + dy * dy), + k = (radiuses[i] - r) * strengths[i] * alpha / r; + node.vx += dx * k; + node.vy += dy * k; + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length; + strengths = new Array(n); + radiuses = new Array(n); + for (i = 0; i < n; ++i) { + radiuses[i] = +radius(nodes[i], i, nodes); + strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); + } + } + + force.initialize = function(_) { + nodes = _, initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.radius = function(_) { + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), initialize(), force) : radius; + }; + + force.x = function(_) { + return arguments.length ? (x = +_, force) : x; + }; + + force.y = function(_) { + return arguments.length ? (y = +_, force) : y; + }; + + return force; +} + +function x$2(x) { + var strength = constant(0.1), + nodes, + strengths, + xz; + + if (typeof x !== "function") x = constant(x == null ? 0 : +x); + + function force(alpha) { + for (var i = 0, n = nodes.length, node; i < n; ++i) { + node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length; + strengths = new Array(n); + xz = new Array(n); + for (i = 0; i < n; ++i) { + strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); + } + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.x = function(_) { + return arguments.length ? (x = typeof _ === "function" ? _ : constant(+_), initialize(), force) : x; + }; + + return force; +} + +function y$2(y) { + var strength = constant(0.1), + nodes, + strengths, + yz; + + if (typeof y !== "function") y = constant(y == null ? 0 : +y); + + function force(alpha) { + for (var i = 0, n = nodes.length, node; i < n; ++i) { + node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; + } + } + + function initialize() { + if (!nodes) return; + var i, n = nodes.length; + strengths = new Array(n); + yz = new Array(n); + for (i = 0; i < n; ++i) { + strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); + } + } + + force.initialize = function(_) { + nodes = _; + initialize(); + }; + + force.strength = function(_) { + return arguments.length ? (strength = typeof _ === "function" ? _ : constant(+_), initialize(), force) : strength; + }; + + force.y = function(_) { + return arguments.length ? (y = typeof _ === "function" ? _ : constant(+_), initialize(), force) : y; + }; + + return force; +} + +exports.forceCenter = center; +exports.forceCollide = collide; +exports.forceLink = link; +exports.forceManyBody = manyBody; +exports.forceRadial = radial; +exports.forceSimulation = simulation; +exports.forceX = x$2; +exports.forceY = y$2; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-collection":27,"d3-dispatch":31,"d3-quadtree":43,"d3-timer":51}],37:[function(require,module,exports){ +// https://d3js.org/d3-format/ v1.3.2 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +// Computes the decimal coefficient and exponent of the specified number x with +// significant digits p, where x is positive and p is in [1, 21] or undefined. +// For example, formatDecimal(1.23) returns ["123", 0]. +function formatDecimal(x, p) { + if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity + var i, coefficient = x.slice(0, i); + + // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ + // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). + return [ + coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, + +x.slice(i + 1) + ]; +} + +function exponent(x) { + return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; +} + +function formatGroup(grouping, thousands) { + return function(value, width) { + var i = value.length, + t = [], + j = 0, + g = grouping[0], + length = 0; + + while (i > 0 && g > 0) { + if (length + g + 1 > width) g = Math.max(1, width - length); + t.push(value.substring(i -= g, i + g)); + if ((length += g + 1) > width) break; + g = grouping[j = (j + 1) % grouping.length]; + } + + return t.reverse().join(thousands); + }; +} + +function formatNumerals(numerals) { + return function(value) { + return value.replace(/[0-9]/g, function(i) { + return numerals[+i]; + }); + }; +} + +// [[fill]align][sign][symbol][0][width][,][.precision][~][type] +var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; + +function formatSpecifier(specifier) { + return new FormatSpecifier(specifier); +} + +formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof + +function FormatSpecifier(specifier) { + if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); + var match; + this.fill = match[1] || " "; + this.align = match[2] || ">"; + this.sign = match[3] || "-"; + this.symbol = match[4] || ""; + this.zero = !!match[5]; + this.width = match[6] && +match[6]; + this.comma = !!match[7]; + this.precision = match[8] && +match[8].slice(1); + this.trim = !!match[9]; + this.type = match[10] || ""; +} + +FormatSpecifier.prototype.toString = function() { + return this.fill + + this.align + + this.sign + + this.symbol + + (this.zero ? "0" : "") + + (this.width == null ? "" : Math.max(1, this.width | 0)) + + (this.comma ? "," : "") + + (this.precision == null ? "" : "." + Math.max(0, this.precision | 0)) + + (this.trim ? "~" : "") + + this.type; +}; + +// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. +function formatTrim(s) { + out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { + switch (s[i]) { + case ".": i0 = i1 = i; break; + case "0": if (i0 === 0) i0 = i; i1 = i; break; + default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break; + } + } + return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; +} + +var prefixExponent; + +function formatPrefixAuto(x, p) { + var d = formatDecimal(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1], + i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, + n = coefficient.length; + return i === n ? coefficient + : i > n ? coefficient + new Array(i - n + 1).join("0") + : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) + : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! +} + +function formatRounded(x, p) { + var d = formatDecimal(x, p); + if (!d) return x + ""; + var coefficient = d[0], + exponent = d[1]; + return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient + : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) + : coefficient + new Array(exponent - coefficient.length + 2).join("0"); +} + +var formatTypes = { + "%": function(x, p) { return (x * 100).toFixed(p); }, + "b": function(x) { return Math.round(x).toString(2); }, + "c": function(x) { return x + ""; }, + "d": function(x) { return Math.round(x).toString(10); }, + "e": function(x, p) { return x.toExponential(p); }, + "f": function(x, p) { return x.toFixed(p); }, + "g": function(x, p) { return x.toPrecision(p); }, + "o": function(x) { return Math.round(x).toString(8); }, + "p": function(x, p) { return formatRounded(x * 100, p); }, + "r": formatRounded, + "s": formatPrefixAuto, + "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, + "x": function(x) { return Math.round(x).toString(16); } +}; + +function identity(x) { + return x; +} + +var prefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"]; + +function formatLocale(locale) { + var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity, + currency = locale.currency, + decimal = locale.decimal, + numerals = locale.numerals ? formatNumerals(locale.numerals) : identity, + percent = locale.percent || "%"; + + function newFormat(specifier) { + specifier = formatSpecifier(specifier); + + var fill = specifier.fill, + align = specifier.align, + sign = specifier.sign, + symbol = specifier.symbol, + zero = specifier.zero, + width = specifier.width, + comma = specifier.comma, + precision = specifier.precision, + trim = specifier.trim, + type = specifier.type; + + // The "n" type is an alias for ",g". + if (type === "n") comma = true, type = "g"; + + // The "" type, and any invalid type, is an alias for ".12~g". + else if (!formatTypes[type]) precision == null && (precision = 12), trim = true, type = "g"; + + // If zero fill is specified, padding goes after sign and before digits. + if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; + + // Compute the prefix and suffix. + // For SI-prefix, the suffix is lazily computed. + var prefix = symbol === "$" ? currency[0] : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", + suffix = symbol === "$" ? currency[1] : /[%p]/.test(type) ? percent : ""; + + // What format function should we use? + // Is this an integer type? + // Can this type generate exponential notation? + var formatType = formatTypes[type], + maybeSuffix = /[defgprs%]/.test(type); + + // Set the default precision if not specified, + // or clamp the specified precision to the supported range. + // For significant precision, it must be in [1, 21]. + // For fixed precision, it must be in [0, 20]. + precision = precision == null ? 6 + : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) + : Math.max(0, Math.min(20, precision)); + + function format(value) { + var valuePrefix = prefix, + valueSuffix = suffix, + i, n, c; + + if (type === "c") { + valueSuffix = formatType(value) + valueSuffix; + value = ""; + } else { + value = +value; + + // Perform the initial formatting. + var valueNegative = value < 0; + value = formatType(Math.abs(value), precision); + + // Trim insignificant zeros. + if (trim) value = formatTrim(value); + + // If a negative value rounds to zero during formatting, treat as positive. + if (valueNegative && +value === 0) valueNegative = false; + + // Compute the prefix and suffix. + valuePrefix = (valueNegative ? (sign === "(" ? sign : "-") : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; + valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); + + // Break the formatted value into the integer “value” part that can be + // grouped, and fractional or exponential “suffix” part that is not. + if (maybeSuffix) { + i = -1, n = value.length; + while (++i < n) { + if (c = value.charCodeAt(i), 48 > c || c > 57) { + valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; + value = value.slice(0, i); + break; + } + } + } + } + + // If the fill character is not "0", grouping is applied before padding. + if (comma && !zero) value = group(value, Infinity); + + // Compute the padding. + var length = valuePrefix.length + value.length + valueSuffix.length, + padding = length < width ? new Array(width - length + 1).join(fill) : ""; + + // If the fill character is "0", grouping is applied after padding. + if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; + + // Reconstruct the final output based on the desired alignment. + switch (align) { + case "<": value = valuePrefix + value + valueSuffix + padding; break; + case "=": value = valuePrefix + padding + value + valueSuffix; break; + case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; + default: value = padding + valuePrefix + value + valueSuffix; break; + } + + return numerals(value); + } + + format.toString = function() { + return specifier + ""; + }; + + return format; + } + + function formatPrefix(specifier, value) { + var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), + e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3, + k = Math.pow(10, -e), + prefix = prefixes[8 + e / 3]; + return function(value) { + return f(k * value) + prefix; + }; + } + + return { + format: newFormat, + formatPrefix: formatPrefix + }; +} + +var locale; + +defaultLocale({ + decimal: ".", + thousands: ",", + grouping: [3], + currency: ["$", ""] +}); + +function defaultLocale(definition) { + locale = formatLocale(definition); + exports.format = locale.format; + exports.formatPrefix = locale.formatPrefix; + return locale; +} + +function precisionFixed(step) { + return Math.max(0, -exponent(Math.abs(step))); +} + +function precisionPrefix(step, value) { + return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step))); +} + +function precisionRound(step, max) { + step = Math.abs(step), max = Math.abs(max) - step; + return Math.max(0, exponent(max) - exponent(step)) + 1; +} + +exports.formatDefaultLocale = defaultLocale; +exports.formatLocale = formatLocale; +exports.formatSpecifier = formatSpecifier; +exports.precisionFixed = precisionFixed; +exports.precisionPrefix = precisionPrefix; +exports.precisionRound = precisionRound; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],38:[function(require,module,exports){ +// https://d3js.org/d3-geo/ v1.11.3 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3)); +}(this, (function (exports,d3Array) { 'use strict'; + +// Adds floating point numbers with twice the normal precision. +// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and +// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) +// 305–363 (1997). +// Code adapted from GeographicLib by Charles F. F. Karney, +// http://geographiclib.sourceforge.net/ + +function adder() { + return new Adder; +} + +function Adder() { + this.reset(); +} + +Adder.prototype = { + constructor: Adder, + reset: function() { + this.s = // rounded value + this.t = 0; // exact error + }, + add: function(y) { + add(temp, y, this.t); + add(this, temp.s, this.s); + if (this.s) this.t += temp.t; + else this.s = temp.t; + }, + valueOf: function() { + return this.s; + } +}; + +var temp = new Adder; + +function add(adder, a, b) { + var x = adder.s = a + b, + bv = x - a, + av = x - bv; + adder.t = (a - av) + (b - bv); +} + +var epsilon = 1e-6; +var epsilon2 = 1e-12; +var pi = Math.PI; +var halfPi = pi / 2; +var quarterPi = pi / 4; +var tau = pi * 2; + +var degrees = 180 / pi; +var radians = pi / 180; + +var abs = Math.abs; +var atan = Math.atan; +var atan2 = Math.atan2; +var cos = Math.cos; +var ceil = Math.ceil; +var exp = Math.exp; +var log = Math.log; +var pow = Math.pow; +var sin = Math.sin; +var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; +var sqrt = Math.sqrt; +var tan = Math.tan; + +function acos(x) { + return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); +} + +function asin(x) { + return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x); +} + +function haversin(x) { + return (x = sin(x / 2)) * x; +} + +function noop() {} + +function streamGeometry(geometry, stream) { + if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { + streamGeometryType[geometry.type](geometry, stream); + } +} + +var streamObjectType = { + Feature: function(object, stream) { + streamGeometry(object.geometry, stream); + }, + FeatureCollection: function(object, stream) { + var features = object.features, i = -1, n = features.length; + while (++i < n) streamGeometry(features[i].geometry, stream); + } +}; + +var streamGeometryType = { + Sphere: function(object, stream) { + stream.sphere(); + }, + Point: function(object, stream) { + object = object.coordinates; + stream.point(object[0], object[1], object[2]); + }, + MultiPoint: function(object, stream) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); + }, + LineString: function(object, stream) { + streamLine(object.coordinates, stream, 0); + }, + MultiLineString: function(object, stream) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) streamLine(coordinates[i], stream, 0); + }, + Polygon: function(object, stream) { + streamPolygon(object.coordinates, stream); + }, + MultiPolygon: function(object, stream) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) streamPolygon(coordinates[i], stream); + }, + GeometryCollection: function(object, stream) { + var geometries = object.geometries, i = -1, n = geometries.length; + while (++i < n) streamGeometry(geometries[i], stream); + } +}; + +function streamLine(coordinates, stream, closed) { + var i = -1, n = coordinates.length - closed, coordinate; + stream.lineStart(); + while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); + stream.lineEnd(); +} + +function streamPolygon(coordinates, stream) { + var i = -1, n = coordinates.length; + stream.polygonStart(); + while (++i < n) streamLine(coordinates[i], stream, 1); + stream.polygonEnd(); +} + +function geoStream(object, stream) { + if (object && streamObjectType.hasOwnProperty(object.type)) { + streamObjectType[object.type](object, stream); + } else { + streamGeometry(object, stream); + } +} + +var areaRingSum = adder(); + +var areaSum = adder(), + lambda00, + phi00, + lambda0, + cosPhi0, + sinPhi0; + +var areaStream = { + point: noop, + lineStart: noop, + lineEnd: noop, + polygonStart: function() { + areaRingSum.reset(); + areaStream.lineStart = areaRingStart; + areaStream.lineEnd = areaRingEnd; + }, + polygonEnd: function() { + var areaRing = +areaRingSum; + areaSum.add(areaRing < 0 ? tau + areaRing : areaRing); + this.lineStart = this.lineEnd = this.point = noop; + }, + sphere: function() { + areaSum.add(tau); + } +}; + +function areaRingStart() { + areaStream.point = areaPointFirst; +} + +function areaRingEnd() { + areaPoint(lambda00, phi00); +} + +function areaPointFirst(lambda, phi) { + areaStream.point = areaPoint; + lambda00 = lambda, phi00 = phi; + lambda *= radians, phi *= radians; + lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi); +} + +function areaPoint(lambda, phi) { + lambda *= radians, phi *= radians; + phi = phi / 2 + quarterPi; // half the angular distance from south pole + + // Spherical excess E for a spherical triangle with vertices: south pole, + // previous point, current point. Uses a formula derived from Cagnoli’s + // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). + var dLambda = lambda - lambda0, + sdLambda = dLambda >= 0 ? 1 : -1, + adLambda = sdLambda * dLambda, + cosPhi = cos(phi), + sinPhi = sin(phi), + k = sinPhi0 * sinPhi, + u = cosPhi0 * cosPhi + k * cos(adLambda), + v = k * sdLambda * sin(adLambda); + areaRingSum.add(atan2(v, u)); + + // Advance the previous points. + lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; +} + +function area(object) { + areaSum.reset(); + geoStream(object, areaStream); + return areaSum * 2; +} + +function spherical(cartesian) { + return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; +} + +function cartesian(spherical) { + var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi); + return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)]; +} + +function cartesianDot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} + +function cartesianCross(a, b) { + return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; +} + +// TODO return a +function cartesianAddInPlace(a, b) { + a[0] += b[0], a[1] += b[1], a[2] += b[2]; +} + +function cartesianScale(vector, k) { + return [vector[0] * k, vector[1] * k, vector[2] * k]; +} + +// TODO return d +function cartesianNormalizeInPlace(d) { + var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); + d[0] /= l, d[1] /= l, d[2] /= l; +} + +var lambda0$1, phi0, lambda1, phi1, // bounds + lambda2, // previous lambda-coordinate + lambda00$1, phi00$1, // first point + p0, // previous 3D point + deltaSum = adder(), + ranges, + range; + +var boundsStream = { + point: boundsPoint, + lineStart: boundsLineStart, + lineEnd: boundsLineEnd, + polygonStart: function() { + boundsStream.point = boundsRingPoint; + boundsStream.lineStart = boundsRingStart; + boundsStream.lineEnd = boundsRingEnd; + deltaSum.reset(); + areaStream.polygonStart(); + }, + polygonEnd: function() { + areaStream.polygonEnd(); + boundsStream.point = boundsPoint; + boundsStream.lineStart = boundsLineStart; + boundsStream.lineEnd = boundsLineEnd; + if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); + else if (deltaSum > epsilon) phi1 = 90; + else if (deltaSum < -epsilon) phi0 = -90; + range[0] = lambda0$1, range[1] = lambda1; + } +}; + +function boundsPoint(lambda, phi) { + ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); + if (phi < phi0) phi0 = phi; + if (phi > phi1) phi1 = phi; +} + +function linePoint(lambda, phi) { + var p = cartesian([lambda * radians, phi * radians]); + if (p0) { + var normal = cartesianCross(p0, p), + equatorial = [normal[1], -normal[0], 0], + inflection = cartesianCross(equatorial, normal); + cartesianNormalizeInPlace(inflection); + inflection = spherical(inflection); + var delta = lambda - lambda2, + sign$$1 = delta > 0 ? 1 : -1, + lambdai = inflection[0] * degrees * sign$$1, + phii, + antimeridian = abs(delta) > 180; + if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { + phii = inflection[1] * degrees; + if (phii > phi1) phi1 = phii; + } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) { + phii = -inflection[1] * degrees; + if (phii < phi0) phi0 = phii; + } else { + if (phi < phi0) phi0 = phi; + if (phi > phi1) phi1 = phi; + } + if (antimeridian) { + if (lambda < lambda2) { + if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; + } else { + if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; + } + } else { + if (lambda1 >= lambda0$1) { + if (lambda < lambda0$1) lambda0$1 = lambda; + if (lambda > lambda1) lambda1 = lambda; + } else { + if (lambda > lambda2) { + if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; + } else { + if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; + } + } + } + } else { + ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); + } + if (phi < phi0) phi0 = phi; + if (phi > phi1) phi1 = phi; + p0 = p, lambda2 = lambda; +} + +function boundsLineStart() { + boundsStream.point = linePoint; +} + +function boundsLineEnd() { + range[0] = lambda0$1, range[1] = lambda1; + boundsStream.point = boundsPoint; + p0 = null; +} + +function boundsRingPoint(lambda, phi) { + if (p0) { + var delta = lambda - lambda2; + deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); + } else { + lambda00$1 = lambda, phi00$1 = phi; + } + areaStream.point(lambda, phi); + linePoint(lambda, phi); +} + +function boundsRingStart() { + areaStream.lineStart(); +} + +function boundsRingEnd() { + boundsRingPoint(lambda00$1, phi00$1); + areaStream.lineEnd(); + if (abs(deltaSum) > epsilon) lambda0$1 = -(lambda1 = 180); + range[0] = lambda0$1, range[1] = lambda1; + p0 = null; +} + +// Finds the left-right distance between two longitudes. +// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want +// the distance between ±180° to be 360°. +function angle(lambda0, lambda1) { + return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; +} + +function rangeCompare(a, b) { + return a[0] - b[0]; +} + +function rangeContains(range, x) { + return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; +} + +function bounds(feature) { + var i, n, a, b, merged, deltaMax, delta; + + phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); + ranges = []; + geoStream(feature, boundsStream); + + // First, sort ranges by their minimum longitudes. + if (n = ranges.length) { + ranges.sort(rangeCompare); + + // Then, merge any ranges that overlap. + for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { + b = ranges[i]; + if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { + if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; + if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; + } else { + merged.push(a = b); + } + } + + // Finally, find the largest gap between the merged ranges. + // The final bounding box will be the inverse of this gap. + for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { + b = merged[i]; + if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; + } + } + + ranges = range = null; + + return lambda0$1 === Infinity || phi0 === Infinity + ? [[NaN, NaN], [NaN, NaN]] + : [[lambda0$1, phi0], [lambda1, phi1]]; +} + +var W0, W1, + X0, Y0, Z0, + X1, Y1, Z1, + X2, Y2, Z2, + lambda00$2, phi00$2, // first point + x0, y0, z0; // previous point + +var centroidStream = { + sphere: noop, + point: centroidPoint, + lineStart: centroidLineStart, + lineEnd: centroidLineEnd, + polygonStart: function() { + centroidStream.lineStart = centroidRingStart; + centroidStream.lineEnd = centroidRingEnd; + }, + polygonEnd: function() { + centroidStream.lineStart = centroidLineStart; + centroidStream.lineEnd = centroidLineEnd; + } +}; + +// Arithmetic mean of Cartesian vectors. +function centroidPoint(lambda, phi) { + lambda *= radians, phi *= radians; + var cosPhi = cos(phi); + centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)); +} + +function centroidPointCartesian(x, y, z) { + ++W0; + X0 += (x - X0) / W0; + Y0 += (y - Y0) / W0; + Z0 += (z - Z0) / W0; +} + +function centroidLineStart() { + centroidStream.point = centroidLinePointFirst; +} + +function centroidLinePointFirst(lambda, phi) { + lambda *= radians, phi *= radians; + var cosPhi = cos(phi); + x0 = cosPhi * cos(lambda); + y0 = cosPhi * sin(lambda); + z0 = sin(phi); + centroidStream.point = centroidLinePoint; + centroidPointCartesian(x0, y0, z0); +} + +function centroidLinePoint(lambda, phi) { + lambda *= radians, phi *= radians; + var cosPhi = cos(phi), + x = cosPhi * cos(lambda), + y = cosPhi * sin(lambda), + z = sin(phi), + w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); + W1 += w; + X1 += w * (x0 + (x0 = x)); + Y1 += w * (y0 + (y0 = y)); + Z1 += w * (z0 + (z0 = z)); + centroidPointCartesian(x0, y0, z0); +} + +function centroidLineEnd() { + centroidStream.point = centroidPoint; +} + +// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, +// J. Applied Mechanics 42, 239 (1975). +function centroidRingStart() { + centroidStream.point = centroidRingPointFirst; +} + +function centroidRingEnd() { + centroidRingPoint(lambda00$2, phi00$2); + centroidStream.point = centroidPoint; +} + +function centroidRingPointFirst(lambda, phi) { + lambda00$2 = lambda, phi00$2 = phi; + lambda *= radians, phi *= radians; + centroidStream.point = centroidRingPoint; + var cosPhi = cos(phi); + x0 = cosPhi * cos(lambda); + y0 = cosPhi * sin(lambda); + z0 = sin(phi); + centroidPointCartesian(x0, y0, z0); +} + +function centroidRingPoint(lambda, phi) { + lambda *= radians, phi *= radians; + var cosPhi = cos(phi), + x = cosPhi * cos(lambda), + y = cosPhi * sin(lambda), + z = sin(phi), + cx = y0 * z - z0 * y, + cy = z0 * x - x0 * z, + cz = x0 * y - y0 * x, + m = sqrt(cx * cx + cy * cy + cz * cz), + w = asin(m), // line weight = angle + v = m && -w / m; // area weight multiplier + X2 += v * cx; + Y2 += v * cy; + Z2 += v * cz; + W1 += w; + X1 += w * (x0 + (x0 = x)); + Y1 += w * (y0 + (y0 = y)); + Z1 += w * (z0 + (z0 = z)); + centroidPointCartesian(x0, y0, z0); +} + +function centroid(object) { + W0 = W1 = + X0 = Y0 = Z0 = + X1 = Y1 = Z1 = + X2 = Y2 = Z2 = 0; + geoStream(object, centroidStream); + + var x = X2, + y = Y2, + z = Z2, + m = x * x + y * y + z * z; + + // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. + if (m < epsilon2) { + x = X1, y = Y1, z = Z1; + // If the feature has zero length, fall back to arithmetic mean of point vectors. + if (W1 < epsilon) x = X0, y = Y0, z = Z0; + m = x * x + y * y + z * z; + // If the feature still has an undefined ccentroid, then return. + if (m < epsilon2) return [NaN, NaN]; + } + + return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees]; +} + +function constant(x) { + return function() { + return x; + }; +} + +function compose(a, b) { + + function compose(x, y) { + return x = a(x, y), b(x[0], x[1]); + } + + if (a.invert && b.invert) compose.invert = function(x, y) { + return x = b.invert(x, y), x && a.invert(x[0], x[1]); + }; + + return compose; +} + +function rotationIdentity(lambda, phi) { + return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi]; +} + +rotationIdentity.invert = rotationIdentity; + +function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { + return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) + : rotationLambda(deltaLambda)) + : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) + : rotationIdentity); +} + +function forwardRotationLambda(deltaLambda) { + return function(lambda, phi) { + return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi]; + }; +} + +function rotationLambda(deltaLambda) { + var rotation = forwardRotationLambda(deltaLambda); + rotation.invert = forwardRotationLambda(-deltaLambda); + return rotation; +} + +function rotationPhiGamma(deltaPhi, deltaGamma) { + var cosDeltaPhi = cos(deltaPhi), + sinDeltaPhi = sin(deltaPhi), + cosDeltaGamma = cos(deltaGamma), + sinDeltaGamma = sin(deltaGamma); + + function rotation(lambda, phi) { + var cosPhi = cos(phi), + x = cos(lambda) * cosPhi, + y = sin(lambda) * cosPhi, + z = sin(phi), + k = z * cosDeltaPhi + x * sinDeltaPhi; + return [ + atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), + asin(k * cosDeltaGamma + y * sinDeltaGamma) + ]; + } + + rotation.invert = function(lambda, phi) { + var cosPhi = cos(phi), + x = cos(lambda) * cosPhi, + y = sin(lambda) * cosPhi, + z = sin(phi), + k = z * cosDeltaGamma - y * sinDeltaGamma; + return [ + atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), + asin(k * cosDeltaPhi - x * sinDeltaPhi) + ]; + }; + + return rotation; +} + +function rotation(rotate) { + rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); + + function forward(coordinates) { + coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); + return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; + } + + forward.invert = function(coordinates) { + coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); + return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates; + }; + + return forward; +} + +// Generates a circle centered at [0°, 0°], with a given radius and precision. +function circleStream(stream, radius, delta, direction, t0, t1) { + if (!delta) return; + var cosRadius = cos(radius), + sinRadius = sin(radius), + step = direction * delta; + if (t0 == null) { + t0 = radius + direction * tau; + t1 = radius - step / 2; + } else { + t0 = circleRadius(cosRadius, t0); + t1 = circleRadius(cosRadius, t1); + if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau; + } + for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { + point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]); + stream.point(point[0], point[1]); + } +} + +// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. +function circleRadius(cosRadius, point) { + point = cartesian(point), point[0] -= cosRadius; + cartesianNormalizeInPlace(point); + var radius = acos(-point[1]); + return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau; +} + +function circle() { + var center = constant([0, 0]), + radius = constant(90), + precision = constant(6), + ring, + rotate, + stream = {point: point}; + + function point(x, y) { + ring.push(x = rotate(x, y)); + x[0] *= degrees, x[1] *= degrees; + } + + function circle() { + var c = center.apply(this, arguments), + r = radius.apply(this, arguments) * radians, + p = precision.apply(this, arguments) * radians; + ring = []; + rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; + circleStream(stream, r, p, 1); + c = {type: "Polygon", coordinates: [ring]}; + ring = rotate = null; + return c; + } + + circle.center = function(_) { + return arguments.length ? (center = typeof _ === "function" ? _ : constant([+_[0], +_[1]]), circle) : center; + }; + + circle.radius = function(_) { + return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), circle) : radius; + }; + + circle.precision = function(_) { + return arguments.length ? (precision = typeof _ === "function" ? _ : constant(+_), circle) : precision; + }; + + return circle; +} + +function clipBuffer() { + var lines = [], + line; + return { + point: function(x, y) { + line.push([x, y]); + }, + lineStart: function() { + lines.push(line = []); + }, + lineEnd: noop, + rejoin: function() { + if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); + }, + result: function() { + var result = lines; + lines = []; + line = null; + return result; + } + }; +} + +function pointEqual(a, b) { + return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon; +} + +function Intersection(point, points, other, entry) { + this.x = point; + this.z = points; + this.o = other; // another intersection + this.e = entry; // is an entry? + this.v = false; // visited + this.n = this.p = null; // next & previous +} + +// A generalized polygon clipping algorithm: given a polygon that has been cut +// into its visible line segments, and rejoins the segments by interpolating +// along the clip edge. +function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { + var subject = [], + clip = [], + i, + n; + + segments.forEach(function(segment) { + if ((n = segment.length - 1) <= 0) return; + var n, p0 = segment[0], p1 = segment[n], x; + + // If the first and last points of a segment are coincident, then treat as a + // closed ring. TODO if all rings are closed, then the winding order of the + // exterior ring should be checked. + if (pointEqual(p0, p1)) { + stream.lineStart(); + for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); + stream.lineEnd(); + return; + } + + subject.push(x = new Intersection(p0, segment, null, true)); + clip.push(x.o = new Intersection(p0, null, x, false)); + subject.push(x = new Intersection(p1, segment, null, false)); + clip.push(x.o = new Intersection(p1, null, x, true)); + }); + + if (!subject.length) return; + + clip.sort(compareIntersection); + link(subject); + link(clip); + + for (i = 0, n = clip.length; i < n; ++i) { + clip[i].e = startInside = !startInside; + } + + var start = subject[0], + points, + point; + + while (1) { + // Find first unvisited intersection. + var current = start, + isSubject = true; + while (current.v) if ((current = current.n) === start) return; + points = current.z; + stream.lineStart(); + do { + current.v = current.o.v = true; + if (current.e) { + if (isSubject) { + for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); + } else { + interpolate(current.x, current.n.x, 1, stream); + } + current = current.n; + } else { + if (isSubject) { + points = current.p.z; + for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); + } else { + interpolate(current.x, current.p.x, -1, stream); + } + current = current.p; + } + current = current.o; + points = current.z; + isSubject = !isSubject; + } while (!current.v); + stream.lineEnd(); + } +} + +function link(array) { + if (!(n = array.length)) return; + var n, + i = 0, + a = array[0], + b; + while (++i < n) { + a.n = b = array[i]; + b.p = a; + a = b; + } + a.n = b = array[0]; + b.p = a; +} + +var sum = adder(); + +function polygonContains(polygon, point) { + var lambda = point[0], + phi = point[1], + sinPhi = sin(phi), + normal = [sin(lambda), -cos(lambda), 0], + angle = 0, + winding = 0; + + sum.reset(); + + if (sinPhi === 1) phi = halfPi + epsilon; + else if (sinPhi === -1) phi = -halfPi - epsilon; + + for (var i = 0, n = polygon.length; i < n; ++i) { + if (!(m = (ring = polygon[i]).length)) continue; + var ring, + m, + point0 = ring[m - 1], + lambda0 = point0[0], + phi0 = point0[1] / 2 + quarterPi, + sinPhi0 = sin(phi0), + cosPhi0 = cos(phi0); + + for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { + var point1 = ring[j], + lambda1 = point1[0], + phi1 = point1[1] / 2 + quarterPi, + sinPhi1 = sin(phi1), + cosPhi1 = cos(phi1), + delta = lambda1 - lambda0, + sign$$1 = delta >= 0 ? 1 : -1, + absDelta = sign$$1 * delta, + antimeridian = absDelta > pi, + k = sinPhi0 * sinPhi1; + + sum.add(atan2(k * sign$$1 * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta))); + angle += antimeridian ? delta + sign$$1 * tau : delta; + + // Are the longitudes either side of the point’s meridian (lambda), + // and are the latitudes smaller than the parallel (phi)? + if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { + var arc = cartesianCross(cartesian(point0), cartesian(point1)); + cartesianNormalizeInPlace(arc); + var intersection = cartesianCross(normal, arc); + cartesianNormalizeInPlace(intersection); + var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); + if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { + winding += antimeridian ^ delta >= 0 ? 1 : -1; + } + } + } + } + + // First, determine whether the South pole is inside or outside: + // + // It is inside if: + // * the polygon winds around it in a clockwise direction. + // * the polygon does not (cumulatively) wind around it, but has a negative + // (counter-clockwise) area. + // + // Second, count the (signed) number of times a segment crosses a lambda + // from the point to the South pole. If it is zero, then the point is the + // same side as the South pole. + + return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1); +} + +function clip(pointVisible, clipLine, interpolate, start) { + return function(sink) { + var line = clipLine(sink), + ringBuffer = clipBuffer(), + ringSink = clipLine(ringBuffer), + polygonStarted = false, + polygon, + segments, + ring; + + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + clip.point = pointRing; + clip.lineStart = ringStart; + clip.lineEnd = ringEnd; + segments = []; + polygon = []; + }, + polygonEnd: function() { + clip.point = point; + clip.lineStart = lineStart; + clip.lineEnd = lineEnd; + segments = d3Array.merge(segments); + var startInside = polygonContains(polygon, start); + if (segments.length) { + if (!polygonStarted) sink.polygonStart(), polygonStarted = true; + clipRejoin(segments, compareIntersection, startInside, interpolate, sink); + } else if (startInside) { + if (!polygonStarted) sink.polygonStart(), polygonStarted = true; + sink.lineStart(); + interpolate(null, null, 1, sink); + sink.lineEnd(); + } + if (polygonStarted) sink.polygonEnd(), polygonStarted = false; + segments = polygon = null; + }, + sphere: function() { + sink.polygonStart(); + sink.lineStart(); + interpolate(null, null, 1, sink); + sink.lineEnd(); + sink.polygonEnd(); + } + }; + + function point(lambda, phi) { + if (pointVisible(lambda, phi)) sink.point(lambda, phi); + } + + function pointLine(lambda, phi) { + line.point(lambda, phi); + } + + function lineStart() { + clip.point = pointLine; + line.lineStart(); + } + + function lineEnd() { + clip.point = point; + line.lineEnd(); + } + + function pointRing(lambda, phi) { + ring.push([lambda, phi]); + ringSink.point(lambda, phi); + } + + function ringStart() { + ringSink.lineStart(); + ring = []; + } + + function ringEnd() { + pointRing(ring[0][0], ring[0][1]); + ringSink.lineEnd(); + + var clean = ringSink.clean(), + ringSegments = ringBuffer.result(), + i, n = ringSegments.length, m, + segment, + point; + + ring.pop(); + polygon.push(ring); + ring = null; + + if (!n) return; + + // No intersections. + if (clean & 1) { + segment = ringSegments[0]; + if ((m = segment.length - 1) > 0) { + if (!polygonStarted) sink.polygonStart(), polygonStarted = true; + sink.lineStart(); + for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); + sink.lineEnd(); + } + return; + } + + // Rejoin connected segments. + // TODO reuse ringBuffer.rejoin()? + if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); + + segments.push(ringSegments.filter(validSegment)); + } + + return clip; + }; +} + +function validSegment(segment) { + return segment.length > 1; +} + +// Intersections are sorted along the clip edge. For both antimeridian cutting +// and circle clipping, the same comparison is used. +function compareIntersection(a, b) { + return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1]) + - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]); +} + +var clipAntimeridian = clip( + function() { return true; }, + clipAntimeridianLine, + clipAntimeridianInterpolate, + [-pi, -halfPi] +); + +// Takes a line and cuts into visible segments. Return values: 0 - there were +// intersections or the line was empty; 1 - no intersections; 2 - there were +// intersections, and the first and last segments should be rejoined. +function clipAntimeridianLine(stream) { + var lambda0 = NaN, + phi0 = NaN, + sign0 = NaN, + clean; // no intersections + + return { + lineStart: function() { + stream.lineStart(); + clean = 1; + }, + point: function(lambda1, phi1) { + var sign1 = lambda1 > 0 ? pi : -pi, + delta = abs(lambda1 - lambda0); + if (abs(delta - pi) < epsilon) { // line crosses a pole + stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi); + stream.point(sign0, phi0); + stream.lineEnd(); + stream.lineStart(); + stream.point(sign1, phi0); + stream.point(lambda1, phi0); + clean = 0; + } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian + if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies + if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon; + phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); + stream.point(sign0, phi0); + stream.lineEnd(); + stream.lineStart(); + stream.point(sign1, phi0); + clean = 0; + } + stream.point(lambda0 = lambda1, phi0 = phi1); + sign0 = sign1; + }, + lineEnd: function() { + stream.lineEnd(); + lambda0 = phi0 = NaN; + }, + clean: function() { + return 2 - clean; // if intersections, rejoin first and last segments + } + }; +} + +function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { + var cosPhi0, + cosPhi1, + sinLambda0Lambda1 = sin(lambda0 - lambda1); + return abs(sinLambda0Lambda1) > epsilon + ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1) + - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0)) + / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) + : (phi0 + phi1) / 2; +} + +function clipAntimeridianInterpolate(from, to, direction, stream) { + var phi; + if (from == null) { + phi = direction * halfPi; + stream.point(-pi, phi); + stream.point(0, phi); + stream.point(pi, phi); + stream.point(pi, 0); + stream.point(pi, -phi); + stream.point(0, -phi); + stream.point(-pi, -phi); + stream.point(-pi, 0); + stream.point(-pi, phi); + } else if (abs(from[0] - to[0]) > epsilon) { + var lambda = from[0] < to[0] ? pi : -pi; + phi = direction * lambda / 2; + stream.point(-lambda, phi); + stream.point(0, phi); + stream.point(lambda, phi); + } else { + stream.point(to[0], to[1]); + } +} + +function clipCircle(radius) { + var cr = cos(radius), + delta = 6 * radians, + smallRadius = cr > 0, + notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case + + function interpolate(from, to, direction, stream) { + circleStream(stream, radius, delta, direction, from, to); + } + + function visible(lambda, phi) { + return cos(lambda) * cos(phi) > cr; + } + + // Takes a line and cuts into visible segments. Return values used for polygon + // clipping: 0 - there were intersections or the line was empty; 1 - no + // intersections 2 - there were intersections, and the first and last segments + // should be rejoined. + function clipLine(stream) { + var point0, // previous point + c0, // code for previous point + v0, // visibility of previous point + v00, // visibility of first point + clean; // no intersections + return { + lineStart: function() { + v00 = v0 = false; + clean = 1; + }, + point: function(lambda, phi) { + var point1 = [lambda, phi], + point2, + v = visible(lambda, phi), + c = smallRadius + ? v ? 0 : code(lambda, phi) + : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0; + if (!point0 && (v00 = v0 = v)) stream.lineStart(); + // Handle degeneracies. + // TODO ignore if not clipping polygons. + if (v !== v0) { + point2 = intersect(point0, point1); + if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { + point1[0] += epsilon; + point1[1] += epsilon; + v = visible(point1[0], point1[1]); + } + } + if (v !== v0) { + clean = 0; + if (v) { + // outside going in + stream.lineStart(); + point2 = intersect(point1, point0); + stream.point(point2[0], point2[1]); + } else { + // inside going out + point2 = intersect(point0, point1); + stream.point(point2[0], point2[1]); + stream.lineEnd(); + } + point0 = point2; + } else if (notHemisphere && point0 && smallRadius ^ v) { + var t; + // If the codes for two points are different, or are both zero, + // and there this segment intersects with the small circle. + if (!(c & c0) && (t = intersect(point1, point0, true))) { + clean = 0; + if (smallRadius) { + stream.lineStart(); + stream.point(t[0][0], t[0][1]); + stream.point(t[1][0], t[1][1]); + stream.lineEnd(); + } else { + stream.point(t[1][0], t[1][1]); + stream.lineEnd(); + stream.lineStart(); + stream.point(t[0][0], t[0][1]); + } + } + } + if (v && (!point0 || !pointEqual(point0, point1))) { + stream.point(point1[0], point1[1]); + } + point0 = point1, v0 = v, c0 = c; + }, + lineEnd: function() { + if (v0) stream.lineEnd(); + point0 = null; + }, + // Rejoin first and last segments if there were intersections and the first + // and last points were visible. + clean: function() { + return clean | ((v00 && v0) << 1); + } + }; + } + + // Intersects the great circle between a and b with the clip circle. + function intersect(a, b, two) { + var pa = cartesian(a), + pb = cartesian(b); + + // We have two planes, n1.p = d1 and n2.p = d2. + // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). + var n1 = [1, 0, 0], // normal + n2 = cartesianCross(pa, pb), + n2n2 = cartesianDot(n2, n2), + n1n2 = n2[0], // cartesianDot(n1, n2), + determinant = n2n2 - n1n2 * n1n2; + + // Two polar points. + if (!determinant) return !two && a; + + var c1 = cr * n2n2 / determinant, + c2 = -cr * n1n2 / determinant, + n1xn2 = cartesianCross(n1, n2), + A = cartesianScale(n1, c1), + B = cartesianScale(n2, c2); + cartesianAddInPlace(A, B); + + // Solve |p(t)|^2 = 1. + var u = n1xn2, + w = cartesianDot(A, u), + uu = cartesianDot(u, u), + t2 = w * w - uu * (cartesianDot(A, A) - 1); + + if (t2 < 0) return; + + var t = sqrt(t2), + q = cartesianScale(u, (-w - t) / uu); + cartesianAddInPlace(q, A); + q = spherical(q); + + if (!two) return q; + + // Two intersection points. + var lambda0 = a[0], + lambda1 = b[0], + phi0 = a[1], + phi1 = b[1], + z; + + if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; + + var delta = lambda1 - lambda0, + polar = abs(delta - pi) < epsilon, + meridian = polar || delta < epsilon; + + if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; + + // Check that the first point is between a and b. + if (meridian + ? polar + ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1) + : phi0 <= q[1] && q[1] <= phi1 + : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) { + var q1 = cartesianScale(u, (-w + t) / uu); + cartesianAddInPlace(q1, A); + return [q, spherical(q1)]; + } + } + + // Generates a 4-bit vector representing the location of a point relative to + // the small circle's bounding box. + function code(lambda, phi) { + var r = smallRadius ? radius : pi - radius, + code = 0; + if (lambda < -r) code |= 1; // left + else if (lambda > r) code |= 2; // right + if (phi < -r) code |= 4; // below + else if (phi > r) code |= 8; // above + return code; + } + + return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]); +} + +function clipLine(a, b, x0, y0, x1, y1) { + var ax = a[0], + ay = a[1], + bx = b[0], + by = b[1], + t0 = 0, + t1 = 1, + dx = bx - ax, + dy = by - ay, + r; + + r = x0 - ax; + if (!dx && r > 0) return; + r /= dx; + if (dx < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dx > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + + r = x1 - ax; + if (!dx && r < 0) return; + r /= dx; + if (dx < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dx > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + + r = y0 - ay; + if (!dy && r > 0) return; + r /= dy; + if (dy < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dy > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + + r = y1 - ay; + if (!dy && r < 0) return; + r /= dy; + if (dy < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dy > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + + if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; + if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; + return true; +} + +var clipMax = 1e9, clipMin = -clipMax; + +// TODO Use d3-polygon’s polygonContains here for the ring check? +// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? + +function clipRectangle(x0, y0, x1, y1) { + + function visible(x, y) { + return x0 <= x && x <= x1 && y0 <= y && y <= y1; + } + + function interpolate(from, to, direction, stream) { + var a = 0, a1 = 0; + if (from == null + || (a = corner(from, direction)) !== (a1 = corner(to, direction)) + || comparePoint(from, to) < 0 ^ direction > 0) { + do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); + while ((a = (a + direction + 4) % 4) !== a1); + } else { + stream.point(to[0], to[1]); + } + } + + function corner(p, direction) { + return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3 + : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1 + : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0 + : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon + } + + function compareIntersection(a, b) { + return comparePoint(a.x, b.x); + } + + function comparePoint(a, b) { + var ca = corner(a, 1), + cb = corner(b, 1); + return ca !== cb ? ca - cb + : ca === 0 ? b[1] - a[1] + : ca === 1 ? a[0] - b[0] + : ca === 2 ? a[1] - b[1] + : b[0] - a[0]; + } + + return function(stream) { + var activeStream = stream, + bufferStream = clipBuffer(), + segments, + polygon, + ring, + x__, y__, v__, // first point + x_, y_, v_, // previous point + first, + clean; + + var clipStream = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: polygonStart, + polygonEnd: polygonEnd + }; + + function point(x, y) { + if (visible(x, y)) activeStream.point(x, y); + } + + function polygonInside() { + var winding = 0; + + for (var i = 0, n = polygon.length; i < n; ++i) { + for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { + a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; + if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } + else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } + } + } + + return winding; + } + + // Buffer geometry within a polygon and then clip it en masse. + function polygonStart() { + activeStream = bufferStream, segments = [], polygon = [], clean = true; + } + + function polygonEnd() { + var startInside = polygonInside(), + cleanInside = clean && startInside, + visible = (segments = d3Array.merge(segments)).length; + if (cleanInside || visible) { + stream.polygonStart(); + if (cleanInside) { + stream.lineStart(); + interpolate(null, null, 1, stream); + stream.lineEnd(); + } + if (visible) { + clipRejoin(segments, compareIntersection, startInside, interpolate, stream); + } + stream.polygonEnd(); + } + activeStream = stream, segments = polygon = ring = null; + } + + function lineStart() { + clipStream.point = linePoint; + if (polygon) polygon.push(ring = []); + first = true; + v_ = false; + x_ = y_ = NaN; + } + + // TODO rather than special-case polygons, simply handle them separately. + // Ideally, coincident intersection points should be jittered to avoid + // clipping issues. + function lineEnd() { + if (segments) { + linePoint(x__, y__); + if (v__ && v_) bufferStream.rejoin(); + segments.push(bufferStream.result()); + } + clipStream.point = point; + if (v_) activeStream.lineEnd(); + } + + function linePoint(x, y) { + var v = visible(x, y); + if (polygon) ring.push([x, y]); + if (first) { + x__ = x, y__ = y, v__ = v; + first = false; + if (v) { + activeStream.lineStart(); + activeStream.point(x, y); + } + } else { + if (v && v_) activeStream.point(x, y); + else { + var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], + b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; + if (clipLine(a, b, x0, y0, x1, y1)) { + if (!v_) { + activeStream.lineStart(); + activeStream.point(a[0], a[1]); + } + activeStream.point(b[0], b[1]); + if (!v) activeStream.lineEnd(); + clean = false; + } else if (v) { + activeStream.lineStart(); + activeStream.point(x, y); + clean = false; + } + } + } + x_ = x, y_ = y, v_ = v; + } + + return clipStream; + }; +} + +function extent() { + var x0 = 0, + y0 = 0, + x1 = 960, + y1 = 500, + cache, + cacheStream, + clip; + + return clip = { + stream: function(stream) { + return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); + }, + extent: function(_) { + return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; + } + }; +} + +var lengthSum = adder(), + lambda0$2, + sinPhi0$1, + cosPhi0$1; + +var lengthStream = { + sphere: noop, + point: noop, + lineStart: lengthLineStart, + lineEnd: noop, + polygonStart: noop, + polygonEnd: noop +}; + +function lengthLineStart() { + lengthStream.point = lengthPointFirst; + lengthStream.lineEnd = lengthLineEnd; +} + +function lengthLineEnd() { + lengthStream.point = lengthStream.lineEnd = noop; +} + +function lengthPointFirst(lambda, phi) { + lambda *= radians, phi *= radians; + lambda0$2 = lambda, sinPhi0$1 = sin(phi), cosPhi0$1 = cos(phi); + lengthStream.point = lengthPoint; +} + +function lengthPoint(lambda, phi) { + lambda *= radians, phi *= radians; + var sinPhi = sin(phi), + cosPhi = cos(phi), + delta = abs(lambda - lambda0$2), + cosDelta = cos(delta), + sinDelta = sin(delta), + x = cosPhi * sinDelta, + y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, + z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; + lengthSum.add(atan2(sqrt(x * x + y * y), z)); + lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; +} + +function length(object) { + lengthSum.reset(); + geoStream(object, lengthStream); + return +lengthSum; +} + +var coordinates = [null, null], + object = {type: "LineString", coordinates: coordinates}; + +function distance(a, b) { + coordinates[0] = a; + coordinates[1] = b; + return length(object); +} + +var containsObjectType = { + Feature: function(object, point) { + return containsGeometry(object.geometry, point); + }, + FeatureCollection: function(object, point) { + var features = object.features, i = -1, n = features.length; + while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; + return false; + } +}; + +var containsGeometryType = { + Sphere: function() { + return true; + }, + Point: function(object, point) { + return containsPoint(object.coordinates, point); + }, + MultiPoint: function(object, point) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) if (containsPoint(coordinates[i], point)) return true; + return false; + }, + LineString: function(object, point) { + return containsLine(object.coordinates, point); + }, + MultiLineString: function(object, point) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) if (containsLine(coordinates[i], point)) return true; + return false; + }, + Polygon: function(object, point) { + return containsPolygon(object.coordinates, point); + }, + MultiPolygon: function(object, point) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) if (containsPolygon(coordinates[i], point)) return true; + return false; + }, + GeometryCollection: function(object, point) { + var geometries = object.geometries, i = -1, n = geometries.length; + while (++i < n) if (containsGeometry(geometries[i], point)) return true; + return false; + } +}; + +function containsGeometry(geometry, point) { + return geometry && containsGeometryType.hasOwnProperty(geometry.type) + ? containsGeometryType[geometry.type](geometry, point) + : false; +} + +function containsPoint(coordinates, point) { + return distance(coordinates, point) === 0; +} + +function containsLine(coordinates, point) { + var ab = distance(coordinates[0], coordinates[1]), + ao = distance(coordinates[0], point), + ob = distance(point, coordinates[1]); + return ao + ob <= ab + epsilon; +} + +function containsPolygon(coordinates, point) { + return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); +} + +function ringRadians(ring) { + return ring = ring.map(pointRadians), ring.pop(), ring; +} + +function pointRadians(point) { + return [point[0] * radians, point[1] * radians]; +} + +function contains(object, point) { + return (object && containsObjectType.hasOwnProperty(object.type) + ? containsObjectType[object.type] + : containsGeometry)(object, point); +} + +function graticuleX(y0, y1, dy) { + var y = d3Array.range(y0, y1 - epsilon, dy).concat(y1); + return function(x) { return y.map(function(y) { return [x, y]; }); }; +} + +function graticuleY(x0, x1, dx) { + var x = d3Array.range(x0, x1 - epsilon, dx).concat(x1); + return function(y) { return x.map(function(x) { return [x, y]; }); }; +} + +function graticule() { + var x1, x0, X1, X0, + y1, y0, Y1, Y0, + dx = 10, dy = dx, DX = 90, DY = 360, + x, y, X, Y, + precision = 2.5; + + function graticule() { + return {type: "MultiLineString", coordinates: lines()}; + } + + function lines() { + return d3Array.range(ceil(X0 / DX) * DX, X1, DX).map(X) + .concat(d3Array.range(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) + .concat(d3Array.range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x)) + .concat(d3Array.range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y)); + } + + graticule.lines = function() { + return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); + }; + + graticule.outline = function() { + return { + type: "Polygon", + coordinates: [ + X(X0).concat( + Y(Y1).slice(1), + X(X1).reverse().slice(1), + Y(Y0).reverse().slice(1)) + ] + }; + }; + + graticule.extent = function(_) { + if (!arguments.length) return graticule.extentMinor(); + return graticule.extentMajor(_).extentMinor(_); + }; + + graticule.extentMajor = function(_) { + if (!arguments.length) return [[X0, Y0], [X1, Y1]]; + X0 = +_[0][0], X1 = +_[1][0]; + Y0 = +_[0][1], Y1 = +_[1][1]; + if (X0 > X1) _ = X0, X0 = X1, X1 = _; + if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; + return graticule.precision(precision); + }; + + graticule.extentMinor = function(_) { + if (!arguments.length) return [[x0, y0], [x1, y1]]; + x0 = +_[0][0], x1 = +_[1][0]; + y0 = +_[0][1], y1 = +_[1][1]; + if (x0 > x1) _ = x0, x0 = x1, x1 = _; + if (y0 > y1) _ = y0, y0 = y1, y1 = _; + return graticule.precision(precision); + }; + + graticule.step = function(_) { + if (!arguments.length) return graticule.stepMinor(); + return graticule.stepMajor(_).stepMinor(_); + }; + + graticule.stepMajor = function(_) { + if (!arguments.length) return [DX, DY]; + DX = +_[0], DY = +_[1]; + return graticule; + }; + + graticule.stepMinor = function(_) { + if (!arguments.length) return [dx, dy]; + dx = +_[0], dy = +_[1]; + return graticule; + }; + + graticule.precision = function(_) { + if (!arguments.length) return precision; + precision = +_; + x = graticuleX(y0, y1, 90); + y = graticuleY(x0, x1, precision); + X = graticuleX(Y0, Y1, 90); + Y = graticuleY(X0, X1, precision); + return graticule; + }; + + return graticule + .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]]) + .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]); +} + +function graticule10() { + return graticule()(); +} + +function interpolate(a, b) { + var x0 = a[0] * radians, + y0 = a[1] * radians, + x1 = b[0] * radians, + y1 = b[1] * radians, + cy0 = cos(y0), + sy0 = sin(y0), + cy1 = cos(y1), + sy1 = sin(y1), + kx0 = cy0 * cos(x0), + ky0 = cy0 * sin(x0), + kx1 = cy1 * cos(x1), + ky1 = cy1 * sin(x1), + d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), + k = sin(d); + + var interpolate = d ? function(t) { + var B = sin(t *= d) / k, + A = sin(d - t) / k, + x = A * kx0 + B * kx1, + y = A * ky0 + B * ky1, + z = A * sy0 + B * sy1; + return [ + atan2(y, x) * degrees, + atan2(z, sqrt(x * x + y * y)) * degrees + ]; + } : function() { + return [x0 * degrees, y0 * degrees]; + }; + + interpolate.distance = d; + + return interpolate; +} + +function identity(x) { + return x; +} + +var areaSum$1 = adder(), + areaRingSum$1 = adder(), + x00, + y00, + x0$1, + y0$1; + +var areaStream$1 = { + point: noop, + lineStart: noop, + lineEnd: noop, + polygonStart: function() { + areaStream$1.lineStart = areaRingStart$1; + areaStream$1.lineEnd = areaRingEnd$1; + }, + polygonEnd: function() { + areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop; + areaSum$1.add(abs(areaRingSum$1)); + areaRingSum$1.reset(); + }, + result: function() { + var area = areaSum$1 / 2; + areaSum$1.reset(); + return area; + } +}; + +function areaRingStart$1() { + areaStream$1.point = areaPointFirst$1; +} + +function areaPointFirst$1(x, y) { + areaStream$1.point = areaPoint$1; + x00 = x0$1 = x, y00 = y0$1 = y; +} + +function areaPoint$1(x, y) { + areaRingSum$1.add(y0$1 * x - x0$1 * y); + x0$1 = x, y0$1 = y; +} + +function areaRingEnd$1() { + areaPoint$1(x00, y00); +} + +var x0$2 = Infinity, + y0$2 = x0$2, + x1 = -x0$2, + y1 = x1; + +var boundsStream$1 = { + point: boundsPoint$1, + lineStart: noop, + lineEnd: noop, + polygonStart: noop, + polygonEnd: noop, + result: function() { + var bounds = [[x0$2, y0$2], [x1, y1]]; + x1 = y1 = -(y0$2 = x0$2 = Infinity); + return bounds; + } +}; + +function boundsPoint$1(x, y) { + if (x < x0$2) x0$2 = x; + if (x > x1) x1 = x; + if (y < y0$2) y0$2 = y; + if (y > y1) y1 = y; +} + +// TODO Enforce positive area for exterior, negative area for interior? + +var X0$1 = 0, + Y0$1 = 0, + Z0$1 = 0, + X1$1 = 0, + Y1$1 = 0, + Z1$1 = 0, + X2$1 = 0, + Y2$1 = 0, + Z2$1 = 0, + x00$1, + y00$1, + x0$3, + y0$3; + +var centroidStream$1 = { + point: centroidPoint$1, + lineStart: centroidLineStart$1, + lineEnd: centroidLineEnd$1, + polygonStart: function() { + centroidStream$1.lineStart = centroidRingStart$1; + centroidStream$1.lineEnd = centroidRingEnd$1; + }, + polygonEnd: function() { + centroidStream$1.point = centroidPoint$1; + centroidStream$1.lineStart = centroidLineStart$1; + centroidStream$1.lineEnd = centroidLineEnd$1; + }, + result: function() { + var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] + : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] + : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] + : [NaN, NaN]; + X0$1 = Y0$1 = Z0$1 = + X1$1 = Y1$1 = Z1$1 = + X2$1 = Y2$1 = Z2$1 = 0; + return centroid; + } +}; + +function centroidPoint$1(x, y) { + X0$1 += x; + Y0$1 += y; + ++Z0$1; +} + +function centroidLineStart$1() { + centroidStream$1.point = centroidPointFirstLine; +} + +function centroidPointFirstLine(x, y) { + centroidStream$1.point = centroidPointLine; + centroidPoint$1(x0$3 = x, y0$3 = y); +} + +function centroidPointLine(x, y) { + var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); + X1$1 += z * (x0$3 + x) / 2; + Y1$1 += z * (y0$3 + y) / 2; + Z1$1 += z; + centroidPoint$1(x0$3 = x, y0$3 = y); +} + +function centroidLineEnd$1() { + centroidStream$1.point = centroidPoint$1; +} + +function centroidRingStart$1() { + centroidStream$1.point = centroidPointFirstRing; +} + +function centroidRingEnd$1() { + centroidPointRing(x00$1, y00$1); +} + +function centroidPointFirstRing(x, y) { + centroidStream$1.point = centroidPointRing; + centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); +} + +function centroidPointRing(x, y) { + var dx = x - x0$3, + dy = y - y0$3, + z = sqrt(dx * dx + dy * dy); + + X1$1 += z * (x0$3 + x) / 2; + Y1$1 += z * (y0$3 + y) / 2; + Z1$1 += z; + + z = y0$3 * x - x0$3 * y; + X2$1 += z * (x0$3 + x); + Y2$1 += z * (y0$3 + y); + Z2$1 += z * 3; + centroidPoint$1(x0$3 = x, y0$3 = y); +} + +function PathContext(context) { + this._context = context; +} + +PathContext.prototype = { + _radius: 4.5, + pointRadius: function(_) { + return this._radius = _, this; + }, + polygonStart: function() { + this._line = 0; + }, + polygonEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + if (this._line === 0) this._context.closePath(); + this._point = NaN; + }, + point: function(x, y) { + switch (this._point) { + case 0: { + this._context.moveTo(x, y); + this._point = 1; + break; + } + case 1: { + this._context.lineTo(x, y); + break; + } + default: { + this._context.moveTo(x + this._radius, y); + this._context.arc(x, y, this._radius, 0, tau); + break; + } + } + }, + result: noop +}; + +var lengthSum$1 = adder(), + lengthRing, + x00$2, + y00$2, + x0$4, + y0$4; + +var lengthStream$1 = { + point: noop, + lineStart: function() { + lengthStream$1.point = lengthPointFirst$1; + }, + lineEnd: function() { + if (lengthRing) lengthPoint$1(x00$2, y00$2); + lengthStream$1.point = noop; + }, + polygonStart: function() { + lengthRing = true; + }, + polygonEnd: function() { + lengthRing = null; + }, + result: function() { + var length = +lengthSum$1; + lengthSum$1.reset(); + return length; + } +}; + +function lengthPointFirst$1(x, y) { + lengthStream$1.point = lengthPoint$1; + x00$2 = x0$4 = x, y00$2 = y0$4 = y; +} + +function lengthPoint$1(x, y) { + x0$4 -= x, y0$4 -= y; + lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); + x0$4 = x, y0$4 = y; +} + +function PathString() { + this._string = []; +} + +PathString.prototype = { + _radius: 4.5, + _circle: circle$1(4.5), + pointRadius: function(_) { + if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; + return this; + }, + polygonStart: function() { + this._line = 0; + }, + polygonEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + if (this._line === 0) this._string.push("Z"); + this._point = NaN; + }, + point: function(x, y) { + switch (this._point) { + case 0: { + this._string.push("M", x, ",", y); + this._point = 1; + break; + } + case 1: { + this._string.push("L", x, ",", y); + break; + } + default: { + if (this._circle == null) this._circle = circle$1(this._radius); + this._string.push("M", x, ",", y, this._circle); + break; + } + } + }, + result: function() { + if (this._string.length) { + var result = this._string.join(""); + this._string = []; + return result; + } else { + return null; + } + } +}; + +function circle$1(radius) { + return "m0," + radius + + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + + "z"; +} + +function index(projection, context) { + var pointRadius = 4.5, + projectionStream, + contextStream; + + function path(object) { + if (object) { + if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); + geoStream(object, projectionStream(contextStream)); + } + return contextStream.result(); + } + + path.area = function(object) { + geoStream(object, projectionStream(areaStream$1)); + return areaStream$1.result(); + }; + + path.measure = function(object) { + geoStream(object, projectionStream(lengthStream$1)); + return lengthStream$1.result(); + }; + + path.bounds = function(object) { + geoStream(object, projectionStream(boundsStream$1)); + return boundsStream$1.result(); + }; + + path.centroid = function(object) { + geoStream(object, projectionStream(centroidStream$1)); + return centroidStream$1.result(); + }; + + path.projection = function(_) { + return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection; + }; + + path.context = function(_) { + if (!arguments.length) return context; + contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); + if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); + return path; + }; + + path.pointRadius = function(_) { + if (!arguments.length) return pointRadius; + pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); + return path; + }; + + return path.projection(projection).context(context); +} + +function transform(methods) { + return { + stream: transformer(methods) + }; +} + +function transformer(methods) { + return function(stream) { + var s = new TransformStream; + for (var key in methods) s[key] = methods[key]; + s.stream = stream; + return s; + }; +} + +function TransformStream() {} + +TransformStream.prototype = { + constructor: TransformStream, + point: function(x, y) { this.stream.point(x, y); }, + sphere: function() { this.stream.sphere(); }, + lineStart: function() { this.stream.lineStart(); }, + lineEnd: function() { this.stream.lineEnd(); }, + polygonStart: function() { this.stream.polygonStart(); }, + polygonEnd: function() { this.stream.polygonEnd(); } +}; + +function fit(projection, fitBounds, object) { + var clip = projection.clipExtent && projection.clipExtent(); + projection.scale(150).translate([0, 0]); + if (clip != null) projection.clipExtent(null); + geoStream(object, projection.stream(boundsStream$1)); + fitBounds(boundsStream$1.result()); + if (clip != null) projection.clipExtent(clip); + return projection; +} + +function fitExtent(projection, extent, object) { + return fit(projection, function(b) { + var w = extent[1][0] - extent[0][0], + h = extent[1][1] - extent[0][1], + k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), + x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, + y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; + projection.scale(150 * k).translate([x, y]); + }, object); +} + +function fitSize(projection, size, object) { + return fitExtent(projection, [[0, 0], size], object); +} + +function fitWidth(projection, width, object) { + return fit(projection, function(b) { + var w = +width, + k = w / (b[1][0] - b[0][0]), + x = (w - k * (b[1][0] + b[0][0])) / 2, + y = -k * b[0][1]; + projection.scale(150 * k).translate([x, y]); + }, object); +} + +function fitHeight(projection, height, object) { + return fit(projection, function(b) { + var h = +height, + k = h / (b[1][1] - b[0][1]), + x = -k * b[0][0], + y = (h - k * (b[1][1] + b[0][1])) / 2; + projection.scale(150 * k).translate([x, y]); + }, object); +} + +var maxDepth = 16, // maximum depth of subdivision + cosMinDistance = cos(30 * radians); // cos(minimum angular distance) + +function resample(project, delta2) { + return +delta2 ? resample$1(project, delta2) : resampleNone(project); +} + +function resampleNone(project) { + return transformer({ + point: function(x, y) { + x = project(x, y); + this.stream.point(x[0], x[1]); + } + }); +} + +function resample$1(project, delta2) { + + function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { + var dx = x1 - x0, + dy = y1 - y0, + d2 = dx * dx + dy * dy; + if (d2 > 4 * delta2 && depth--) { + var a = a0 + a1, + b = b0 + b1, + c = c0 + c1, + m = sqrt(a * a + b * b + c * c), + phi2 = asin(c /= m), + lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a), + p = project(lambda2, phi2), + x2 = p[0], + y2 = p[1], + dx2 = x2 - x0, + dy2 = y2 - y0, + dz = dy * dx2 - dx * dy2; + if (dz * dz / d2 > delta2 // perpendicular projected distance + || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end + || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance + resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); + stream.point(x2, y2); + resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); + } + } + } + return function(stream) { + var lambda00, x00, y00, a00, b00, c00, // first point + lambda0, x0, y0, a0, b0, c0; // previous point + + var resampleStream = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, + polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } + }; + + function point(x, y) { + x = project(x, y); + stream.point(x[0], x[1]); + } + + function lineStart() { + x0 = NaN; + resampleStream.point = linePoint; + stream.lineStart(); + } + + function linePoint(lambda, phi) { + var c = cartesian([lambda, phi]), p = project(lambda, phi); + resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); + stream.point(x0, y0); + } + + function lineEnd() { + resampleStream.point = point; + stream.lineEnd(); + } + + function ringStart() { + lineStart(); + resampleStream.point = ringPoint; + resampleStream.lineEnd = ringEnd; + } + + function ringPoint(lambda, phi) { + linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; + resampleStream.point = linePoint; + } + + function ringEnd() { + resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); + resampleStream.lineEnd = lineEnd; + lineEnd(); + } + + return resampleStream; + }; +} + +var transformRadians = transformer({ + point: function(x, y) { + this.stream.point(x * radians, y * radians); + } +}); + +function transformRotate(rotate) { + return transformer({ + point: function(x, y) { + var r = rotate(x, y); + return this.stream.point(r[0], r[1]); + } + }); +} + +function scaleTranslate(k, dx, dy) { + function transform$$1(x, y) { + return [dx + k * x, dy - k * y]; + } + transform$$1.invert = function(x, y) { + return [(x - dx) / k, (dy - y) / k]; + }; + return transform$$1; +} + +function scaleTranslateRotate(k, dx, dy, alpha) { + var cosAlpha = cos(alpha), + sinAlpha = sin(alpha), + a = cosAlpha * k, + b = sinAlpha * k, + ai = cosAlpha / k, + bi = sinAlpha / k, + ci = (sinAlpha * dy - cosAlpha * dx) / k, + fi = (sinAlpha * dx + cosAlpha * dy) / k; + function transform$$1(x, y) { + return [a * x - b * y + dx, dy - b * x - a * y]; + } + transform$$1.invert = function(x, y) { + return [ai * x - bi * y + ci, fi - bi * x - ai * y]; + }; + return transform$$1; +} + +function projection(project) { + return projectionMutator(function() { return project; })(); +} + +function projectionMutator(projectAt) { + var project, + k = 150, // scale + x = 480, y = 250, // translate + lambda = 0, phi = 0, // center + deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate + alpha = 0, // post-rotate + theta = null, preclip = clipAntimeridian, // pre-clip angle + x0 = null, y0, x1, y1, postclip = identity, // post-clip extent + delta2 = 0.5, // precision + projectResample, + projectTransform, + projectRotateTransform, + cache, + cacheStream; + + function projection(point) { + return projectRotateTransform(point[0] * radians, point[1] * radians); + } + + function invert(point) { + point = projectRotateTransform.invert(point[0], point[1]); + return point && [point[0] * degrees, point[1] * degrees]; + } + + projection.stream = function(stream) { + return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); + }; + + projection.preclip = function(_) { + return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; + }; + + projection.postclip = function(_) { + return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; + }; + + projection.clipAngle = function(_) { + return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees; + }; + + projection.clipExtent = function(_) { + return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; + }; + + projection.scale = function(_) { + return arguments.length ? (k = +_, recenter()) : k; + }; + + projection.translate = function(_) { + return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; + }; + + projection.center = function(_) { + return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees]; + }; + + projection.rotate = function(_) { + return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees]; + }; + + projection.angle = function(_) { + return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees; + }; + + projection.precision = function(_) { + return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); + }; + + projection.fitExtent = function(extent, object) { + return fitExtent(projection, extent, object); + }; + + projection.fitSize = function(size, object) { + return fitSize(projection, size, object); + }; + + projection.fitWidth = function(width, object) { + return fitWidth(projection, width, object); + }; + + projection.fitHeight = function(height, object) { + return fitHeight(projection, height, object); + }; + + function recenter() { + var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)), + transform$$1 = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha); + rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); + projectTransform = compose(project, transform$$1); + projectRotateTransform = compose(rotate, projectTransform); + projectResample = resample(projectTransform, delta2); + return reset(); + } + + function reset() { + cache = cacheStream = null; + return projection; + } + + return function() { + project = projectAt.apply(this, arguments); + projection.invert = project.invert && invert; + return recenter(); + }; +} + +function conicProjection(projectAt) { + var phi0 = 0, + phi1 = pi / 3, + m = projectionMutator(projectAt), + p = m(phi0, phi1); + + p.parallels = function(_) { + return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees]; + }; + + return p; +} + +function cylindricalEqualAreaRaw(phi0) { + var cosPhi0 = cos(phi0); + + function forward(lambda, phi) { + return [lambda * cosPhi0, sin(phi) / cosPhi0]; + } + + forward.invert = function(x, y) { + return [x / cosPhi0, asin(y * cosPhi0)]; + }; + + return forward; +} + +function conicEqualAreaRaw(y0, y1) { + var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2; + + // Are the parallels symmetrical around the Equator? + if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0); + + var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; + + function project(x, y) { + var r = sqrt(c - 2 * n * sin(y)) / n; + return [r * sin(x *= n), r0 - r * cos(x)]; + } + + project.invert = function(x, y) { + var r0y = r0 - y; + return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; + }; + + return project; +} + +function conicEqualArea() { + return conicProjection(conicEqualAreaRaw) + .scale(155.424) + .center([0, 33.6442]); +} + +function albers() { + return conicEqualArea() + .parallels([29.5, 45.5]) + .scale(1070) + .translate([480, 250]) + .rotate([96, 0]) + .center([-0.6, 38.7]); +} + +// The projections must have mutually exclusive clip regions on the sphere, +// as this will avoid emitting interleaving lines and polygons. +function multiplex(streams) { + var n = streams.length; + return { + point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, + sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, + lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, + lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, + polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, + polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } + }; +} + +// A composite projection for the United States, configured by default for +// 960×500. The projection also works quite well at 960×600 if you change the +// scale to 1285 and adjust the translate accordingly. The set of standard +// parallels for each region comes from USGS, which is published here: +// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers +function albersUsa() { + var cache, + cacheStream, + lower48 = albers(), lower48Point, + alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 + hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 + point, pointStream = {point: function(x, y) { point = [x, y]; }}; + + function albersUsa(coordinates) { + var x = coordinates[0], y = coordinates[1]; + return point = null, + (lower48Point.point(x, y), point) + || (alaskaPoint.point(x, y), point) + || (hawaiiPoint.point(x, y), point); + } + + albersUsa.invert = function(coordinates) { + var k = lower48.scale(), + t = lower48.translate(), + x = (coordinates[0] - t[0]) / k, + y = (coordinates[1] - t[1]) / k; + return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska + : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii + : lower48).invert(coordinates); + }; + + albersUsa.stream = function(stream) { + return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); + }; + + albersUsa.precision = function(_) { + if (!arguments.length) return lower48.precision(); + lower48.precision(_), alaska.precision(_), hawaii.precision(_); + return reset(); + }; + + albersUsa.scale = function(_) { + if (!arguments.length) return lower48.scale(); + lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); + return albersUsa.translate(lower48.translate()); + }; + + albersUsa.translate = function(_) { + if (!arguments.length) return lower48.translate(); + var k = lower48.scale(), x = +_[0], y = +_[1]; + + lower48Point = lower48 + .translate(_) + .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) + .stream(pointStream); + + alaskaPoint = alaska + .translate([x - 0.307 * k, y + 0.201 * k]) + .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]]) + .stream(pointStream); + + hawaiiPoint = hawaii + .translate([x - 0.205 * k, y + 0.212 * k]) + .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]]) + .stream(pointStream); + + return reset(); + }; + + albersUsa.fitExtent = function(extent, object) { + return fitExtent(albersUsa, extent, object); + }; + + albersUsa.fitSize = function(size, object) { + return fitSize(albersUsa, size, object); + }; + + albersUsa.fitWidth = function(width, object) { + return fitWidth(albersUsa, width, object); + }; + + albersUsa.fitHeight = function(height, object) { + return fitHeight(albersUsa, height, object); + }; + + function reset() { + cache = cacheStream = null; + return albersUsa; + } + + return albersUsa.scale(1070); +} + +function azimuthalRaw(scale) { + return function(x, y) { + var cx = cos(x), + cy = cos(y), + k = scale(cx * cy); + return [ + k * cy * sin(x), + k * sin(y) + ]; + } +} + +function azimuthalInvert(angle) { + return function(x, y) { + var z = sqrt(x * x + y * y), + c = angle(z), + sc = sin(c), + cc = cos(c); + return [ + atan2(x * sc, z * cc), + asin(z && y * sc / z) + ]; + } +} + +var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { + return sqrt(2 / (1 + cxcy)); +}); + +azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { + return 2 * asin(z / 2); +}); + +function azimuthalEqualArea() { + return projection(azimuthalEqualAreaRaw) + .scale(124.75) + .clipAngle(180 - 1e-3); +} + +var azimuthalEquidistantRaw = azimuthalRaw(function(c) { + return (c = acos(c)) && c / sin(c); +}); + +azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { + return z; +}); + +function azimuthalEquidistant() { + return projection(azimuthalEquidistantRaw) + .scale(79.4188) + .clipAngle(180 - 1e-3); +} + +function mercatorRaw(lambda, phi) { + return [lambda, log(tan((halfPi + phi) / 2))]; +} + +mercatorRaw.invert = function(x, y) { + return [x, 2 * atan(exp(y)) - halfPi]; +}; + +function mercator() { + return mercatorProjection(mercatorRaw) + .scale(961 / tau); +} + +function mercatorProjection(project) { + var m = projection(project), + center = m.center, + scale = m.scale, + translate = m.translate, + clipExtent = m.clipExtent, + x0 = null, y0, x1, y1; // clip extent + + m.scale = function(_) { + return arguments.length ? (scale(_), reclip()) : scale(); + }; + + m.translate = function(_) { + return arguments.length ? (translate(_), reclip()) : translate(); + }; + + m.center = function(_) { + return arguments.length ? (center(_), reclip()) : center(); + }; + + m.clipExtent = function(_) { + return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; + }; + + function reclip() { + var k = pi * scale(), + t = m(rotation(m.rotate()).invert([0, 0])); + return clipExtent(x0 == null + ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw + ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] + : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); + } + + return reclip(); +} + +function tany(y) { + return tan((halfPi + y) / 2); +} + +function conicConformalRaw(y0, y1) { + var cy0 = cos(y0), + n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)), + f = cy0 * pow(tany(y0), n) / n; + + if (!n) return mercatorRaw; + + function project(x, y) { + if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; } + else { if (y > halfPi - epsilon) y = halfPi - epsilon; } + var r = f / pow(tany(y), n); + return [r * sin(n * x), f - r * cos(n * x)]; + } + + project.invert = function(x, y) { + var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); + return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi]; + }; + + return project; +} + +function conicConformal() { + return conicProjection(conicConformalRaw) + .scale(109.5) + .parallels([30, 30]); +} + +function equirectangularRaw(lambda, phi) { + return [lambda, phi]; +} + +equirectangularRaw.invert = equirectangularRaw; + +function equirectangular() { + return projection(equirectangularRaw) + .scale(152.63); +} + +function conicEquidistantRaw(y0, y1) { + var cy0 = cos(y0), + n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0), + g = cy0 / n + y0; + + if (abs(n) < epsilon) return equirectangularRaw; + + function project(x, y) { + var gy = g - y, nx = n * x; + return [gy * sin(nx), g - gy * cos(nx)]; + } + + project.invert = function(x, y) { + var gy = g - y; + return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; + }; + + return project; +} + +function conicEquidistant() { + return conicProjection(conicEquidistantRaw) + .scale(131.154) + .center([0, 13.9389]); +} + +var A1 = 1.340264, + A2 = -0.081106, + A3 = 0.000893, + A4 = 0.003796, + M = sqrt(3) / 2, + iterations = 12; + +function equalEarthRaw(lambda, phi) { + var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2; + return [ + lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), + l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) + ]; +} + +equalEarthRaw.invert = function(x, y) { + var l = y, l2 = l * l, l6 = l2 * l2 * l2; + for (var i = 0, delta, fy, fpy; i < iterations; ++i) { + fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; + fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); + l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; + if (abs(delta) < epsilon2) break; + } + return [ + M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l), + asin(sin(l) / M) + ]; +}; + +function equalEarth() { + return projection(equalEarthRaw) + .scale(177.158); +} + +function gnomonicRaw(x, y) { + var cy = cos(y), k = cos(x) * cy; + return [cy * sin(x) / k, sin(y) / k]; +} + +gnomonicRaw.invert = azimuthalInvert(atan); + +function gnomonic() { + return projection(gnomonicRaw) + .scale(144.049) + .clipAngle(60); +} + +function scaleTranslate$1(kx, ky, tx, ty) { + return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({ + point: function(x, y) { + this.stream.point(x * kx + tx, y * ky + ty); + } + }); +} + +function identity$1() { + var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity, // scale, translate and reflect + x0 = null, y0, x1, y1, // clip extent + postclip = identity, + cache, + cacheStream, + projection; + + function reset() { + cache = cacheStream = null; + return projection; + } + + return projection = { + stream: function(stream) { + return cache && cacheStream === stream ? cache : cache = transform$$1(postclip(cacheStream = stream)); + }, + postclip: function(_) { + return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; + }, + clipExtent: function(_) { + return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; + }, + scale: function(_) { + return arguments.length ? (transform$$1 = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k; + }, + translate: function(_) { + return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; + }, + reflectX: function(_) { + return arguments.length ? (transform$$1 = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; + }, + reflectY: function(_) { + return arguments.length ? (transform$$1 = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; + }, + fitExtent: function(extent, object) { + return fitExtent(projection, extent, object); + }, + fitSize: function(size, object) { + return fitSize(projection, size, object); + }, + fitWidth: function(width, object) { + return fitWidth(projection, width, object); + }, + fitHeight: function(height, object) { + return fitHeight(projection, height, object); + } + }; +} + +function naturalEarth1Raw(lambda, phi) { + var phi2 = phi * phi, phi4 = phi2 * phi2; + return [ + lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), + phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) + ]; +} + +naturalEarth1Raw.invert = function(x, y) { + var phi = y, i = 25, delta; + do { + var phi2 = phi * phi, phi4 = phi2 * phi2; + phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / + (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); + } while (abs(delta) > epsilon && --i > 0); + return [ + x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), + phi + ]; +}; + +function naturalEarth1() { + return projection(naturalEarth1Raw) + .scale(175.295); +} + +function orthographicRaw(x, y) { + return [cos(y) * sin(x), sin(y)]; +} + +orthographicRaw.invert = azimuthalInvert(asin); + +function orthographic() { + return projection(orthographicRaw) + .scale(249.5) + .clipAngle(90 + epsilon); +} + +function stereographicRaw(x, y) { + var cy = cos(y), k = 1 + cos(x) * cy; + return [cy * sin(x) / k, sin(y) / k]; +} + +stereographicRaw.invert = azimuthalInvert(function(z) { + return 2 * atan(z); +}); + +function stereographic() { + return projection(stereographicRaw) + .scale(250) + .clipAngle(142); +} + +function transverseMercatorRaw(lambda, phi) { + return [log(tan((halfPi + phi) / 2)), -lambda]; +} + +transverseMercatorRaw.invert = function(x, y) { + return [-y, 2 * atan(exp(x)) - halfPi]; +}; + +function transverseMercator() { + var m = mercatorProjection(transverseMercatorRaw), + center = m.center, + rotate = m.rotate; + + m.center = function(_) { + return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); + }; + + m.rotate = function(_) { + return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); + }; + + return rotate([0, 0, 90]) + .scale(159.155); +} + +exports.geoArea = area; +exports.geoBounds = bounds; +exports.geoCentroid = centroid; +exports.geoCircle = circle; +exports.geoClipAntimeridian = clipAntimeridian; +exports.geoClipCircle = clipCircle; +exports.geoClipExtent = extent; +exports.geoClipRectangle = clipRectangle; +exports.geoContains = contains; +exports.geoDistance = distance; +exports.geoGraticule = graticule; +exports.geoGraticule10 = graticule10; +exports.geoInterpolate = interpolate; +exports.geoLength = length; +exports.geoPath = index; +exports.geoAlbers = albers; +exports.geoAlbersUsa = albersUsa; +exports.geoAzimuthalEqualArea = azimuthalEqualArea; +exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; +exports.geoAzimuthalEquidistant = azimuthalEquidistant; +exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; +exports.geoConicConformal = conicConformal; +exports.geoConicConformalRaw = conicConformalRaw; +exports.geoConicEqualArea = conicEqualArea; +exports.geoConicEqualAreaRaw = conicEqualAreaRaw; +exports.geoConicEquidistant = conicEquidistant; +exports.geoConicEquidistantRaw = conicEquidistantRaw; +exports.geoEqualEarth = equalEarth; +exports.geoEqualEarthRaw = equalEarthRaw; +exports.geoEquirectangular = equirectangular; +exports.geoEquirectangularRaw = equirectangularRaw; +exports.geoGnomonic = gnomonic; +exports.geoGnomonicRaw = gnomonicRaw; +exports.geoIdentity = identity$1; +exports.geoProjection = projection; +exports.geoProjectionMutator = projectionMutator; +exports.geoMercator = mercator; +exports.geoMercatorRaw = mercatorRaw; +exports.geoNaturalEarth1 = naturalEarth1; +exports.geoNaturalEarth1Raw = naturalEarth1Raw; +exports.geoOrthographic = orthographic; +exports.geoOrthographicRaw = orthographicRaw; +exports.geoStereographic = stereographic; +exports.geoStereographicRaw = stereographicRaw; +exports.geoTransverseMercator = transverseMercator; +exports.geoTransverseMercatorRaw = transverseMercatorRaw; +exports.geoRotation = rotation; +exports.geoStream = geoStream; +exports.geoTransform = transform; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-array":23}],39:[function(require,module,exports){ +// https://d3js.org/d3-hierarchy/ v1.1.8 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function defaultSeparation(a, b) { + return a.parent === b.parent ? 1 : 2; +} + +function meanX(children) { + return children.reduce(meanXReduce, 0) / children.length; +} + +function meanXReduce(x, c) { + return x + c.x; +} + +function maxY(children) { + return 1 + children.reduce(maxYReduce, 0); +} + +function maxYReduce(y, c) { + return Math.max(y, c.y); +} + +function leafLeft(node) { + var children; + while (children = node.children) node = children[0]; + return node; +} + +function leafRight(node) { + var children; + while (children = node.children) node = children[children.length - 1]; + return node; +} + +function cluster() { + var separation = defaultSeparation, + dx = 1, + dy = 1, + nodeSize = false; + + function cluster(root) { + var previousNode, + x = 0; + + // First walk, computing the initial x & y values. + root.eachAfter(function(node) { + var children = node.children; + if (children) { + node.x = meanX(children); + node.y = maxY(children); + } else { + node.x = previousNode ? x += separation(node, previousNode) : 0; + node.y = 0; + previousNode = node; + } + }); + + var left = leafLeft(root), + right = leafRight(root), + x0 = left.x - separation(left, right) / 2, + x1 = right.x + separation(right, left) / 2; + + // Second walk, normalizing x & y to the desired size. + return root.eachAfter(nodeSize ? function(node) { + node.x = (node.x - root.x) * dx; + node.y = (root.y - node.y) * dy; + } : function(node) { + node.x = (node.x - x0) / (x1 - x0) * dx; + node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; + }); + } + + cluster.separation = function(x) { + return arguments.length ? (separation = x, cluster) : separation; + }; + + cluster.size = function(x) { + return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); + }; + + cluster.nodeSize = function(x) { + return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); + }; + + return cluster; +} + +function count(node) { + var sum = 0, + children = node.children, + i = children && children.length; + if (!i) sum = 1; + else while (--i >= 0) sum += children[i].value; + node.value = sum; +} + +function node_count() { + return this.eachAfter(count); +} + +function node_each(callback) { + var node = this, current, next = [node], children, i, n; + do { + current = next.reverse(), next = []; + while (node = current.pop()) { + callback(node), children = node.children; + if (children) for (i = 0, n = children.length; i < n; ++i) { + next.push(children[i]); + } + } + } while (next.length); + return this; +} + +function node_eachBefore(callback) { + var node = this, nodes = [node], children, i; + while (node = nodes.pop()) { + callback(node), children = node.children; + if (children) for (i = children.length - 1; i >= 0; --i) { + nodes.push(children[i]); + } + } + return this; +} + +function node_eachAfter(callback) { + var node = this, nodes = [node], next = [], children, i, n; + while (node = nodes.pop()) { + next.push(node), children = node.children; + if (children) for (i = 0, n = children.length; i < n; ++i) { + nodes.push(children[i]); + } + } + while (node = next.pop()) { + callback(node); + } + return this; +} + +function node_sum(value) { + return this.eachAfter(function(node) { + var sum = +value(node.data) || 0, + children = node.children, + i = children && children.length; + while (--i >= 0) sum += children[i].value; + node.value = sum; + }); +} + +function node_sort(compare) { + return this.eachBefore(function(node) { + if (node.children) { + node.children.sort(compare); + } + }); +} + +function node_path(end) { + var start = this, + ancestor = leastCommonAncestor(start, end), + nodes = [start]; + while (start !== ancestor) { + start = start.parent; + nodes.push(start); + } + var k = nodes.length; + while (end !== ancestor) { + nodes.splice(k, 0, end); + end = end.parent; + } + return nodes; +} + +function leastCommonAncestor(a, b) { + if (a === b) return a; + var aNodes = a.ancestors(), + bNodes = b.ancestors(), + c = null; + a = aNodes.pop(); + b = bNodes.pop(); + while (a === b) { + c = a; + a = aNodes.pop(); + b = bNodes.pop(); + } + return c; +} + +function node_ancestors() { + var node = this, nodes = [node]; + while (node = node.parent) { + nodes.push(node); + } + return nodes; +} + +function node_descendants() { + var nodes = []; + this.each(function(node) { + nodes.push(node); + }); + return nodes; +} + +function node_leaves() { + var leaves = []; + this.eachBefore(function(node) { + if (!node.children) { + leaves.push(node); + } + }); + return leaves; +} + +function node_links() { + var root = this, links = []; + root.each(function(node) { + if (node !== root) { // Don’t include the root’s parent, if any. + links.push({source: node.parent, target: node}); + } + }); + return links; +} + +function hierarchy(data, children) { + var root = new Node(data), + valued = +data.value && (root.value = data.value), + node, + nodes = [root], + child, + childs, + i, + n; + + if (children == null) children = defaultChildren; + + while (node = nodes.pop()) { + if (valued) node.value = +node.data.value; + if ((childs = children(node.data)) && (n = childs.length)) { + node.children = new Array(n); + for (i = n - 1; i >= 0; --i) { + nodes.push(child = node.children[i] = new Node(childs[i])); + child.parent = node; + child.depth = node.depth + 1; + } + } + } + + return root.eachBefore(computeHeight); +} + +function node_copy() { + return hierarchy(this).eachBefore(copyData); +} + +function defaultChildren(d) { + return d.children; +} + +function copyData(node) { + node.data = node.data.data; +} + +function computeHeight(node) { + var height = 0; + do node.height = height; + while ((node = node.parent) && (node.height < ++height)); +} + +function Node(data) { + this.data = data; + this.depth = + this.height = 0; + this.parent = null; +} + +Node.prototype = hierarchy.prototype = { + constructor: Node, + count: node_count, + each: node_each, + eachAfter: node_eachAfter, + eachBefore: node_eachBefore, + sum: node_sum, + sort: node_sort, + path: node_path, + ancestors: node_ancestors, + descendants: node_descendants, + leaves: node_leaves, + links: node_links, + copy: node_copy +}; + +var slice = Array.prototype.slice; + +function shuffle(array) { + var m = array.length, + t, + i; + + while (m) { + i = Math.random() * m-- | 0; + t = array[m]; + array[m] = array[i]; + array[i] = t; + } + + return array; +} + +function enclose(circles) { + var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e; + + while (i < n) { + p = circles[i]; + if (e && enclosesWeak(e, p)) ++i; + else e = encloseBasis(B = extendBasis(B, p)), i = 0; + } + + return e; +} + +function extendBasis(B, p) { + var i, j; + + if (enclosesWeakAll(p, B)) return [p]; + + // If we get here then B must have at least one element. + for (i = 0; i < B.length; ++i) { + if (enclosesNot(p, B[i]) + && enclosesWeakAll(encloseBasis2(B[i], p), B)) { + return [B[i], p]; + } + } + + // If we get here then B must have at least two elements. + for (i = 0; i < B.length - 1; ++i) { + for (j = i + 1; j < B.length; ++j) { + if (enclosesNot(encloseBasis2(B[i], B[j]), p) + && enclosesNot(encloseBasis2(B[i], p), B[j]) + && enclosesNot(encloseBasis2(B[j], p), B[i]) + && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { + return [B[i], B[j], p]; + } + } + } + + // If we get here then something is very wrong. + throw new Error; +} + +function enclosesNot(a, b) { + var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; + return dr < 0 || dr * dr < dx * dx + dy * dy; +} + +function enclosesWeak(a, b) { + var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y; + return dr > 0 && dr * dr > dx * dx + dy * dy; +} + +function enclosesWeakAll(a, B) { + for (var i = 0; i < B.length; ++i) { + if (!enclosesWeak(a, B[i])) { + return false; + } + } + return true; +} + +function encloseBasis(B) { + switch (B.length) { + case 1: return encloseBasis1(B[0]); + case 2: return encloseBasis2(B[0], B[1]); + case 3: return encloseBasis3(B[0], B[1], B[2]); + } +} + +function encloseBasis1(a) { + return { + x: a.x, + y: a.y, + r: a.r + }; +} + +function encloseBasis2(a, b) { + var x1 = a.x, y1 = a.y, r1 = a.r, + x2 = b.x, y2 = b.y, r2 = b.r, + x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, + l = Math.sqrt(x21 * x21 + y21 * y21); + return { + x: (x1 + x2 + x21 / l * r21) / 2, + y: (y1 + y2 + y21 / l * r21) / 2, + r: (l + r1 + r2) / 2 + }; +} + +function encloseBasis3(a, b, c) { + var x1 = a.x, y1 = a.y, r1 = a.r, + x2 = b.x, y2 = b.y, r2 = b.r, + x3 = c.x, y3 = c.y, r3 = c.r, + a2 = x1 - x2, + a3 = x1 - x3, + b2 = y1 - y2, + b3 = y1 - y3, + c2 = r2 - r1, + c3 = r3 - r1, + d1 = x1 * x1 + y1 * y1 - r1 * r1, + d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, + d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, + ab = a3 * b2 - a2 * b3, + xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, + xb = (b3 * c2 - b2 * c3) / ab, + ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, + yb = (a2 * c3 - a3 * c2) / ab, + A = xb * xb + yb * yb - 1, + B = 2 * (r1 + xa * xb + ya * yb), + C = xa * xa + ya * ya - r1 * r1, + r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); + return { + x: x1 + xa + xb * r, + y: y1 + ya + yb * r, + r: r + }; +} + +function place(b, a, c) { + var dx = b.x - a.x, x, a2, + dy = b.y - a.y, y, b2, + d2 = dx * dx + dy * dy; + if (d2) { + a2 = a.r + c.r, a2 *= a2; + b2 = b.r + c.r, b2 *= b2; + if (a2 > b2) { + x = (d2 + b2 - a2) / (2 * d2); + y = Math.sqrt(Math.max(0, b2 / d2 - x * x)); + c.x = b.x - x * dx - y * dy; + c.y = b.y - x * dy + y * dx; + } else { + x = (d2 + a2 - b2) / (2 * d2); + y = Math.sqrt(Math.max(0, a2 / d2 - x * x)); + c.x = a.x + x * dx - y * dy; + c.y = a.y + x * dy + y * dx; + } + } else { + c.x = a.x + c.r; + c.y = a.y; + } +} + +function intersects(a, b) { + var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y; + return dr > 0 && dr * dr > dx * dx + dy * dy; +} + +function score(node) { + var a = node._, + b = node.next._, + ab = a.r + b.r, + dx = (a.x * b.r + b.x * a.r) / ab, + dy = (a.y * b.r + b.y * a.r) / ab; + return dx * dx + dy * dy; +} + +function Node$1(circle) { + this._ = circle; + this.next = null; + this.previous = null; +} + +function packEnclose(circles) { + if (!(n = circles.length)) return 0; + + var a, b, c, n, aa, ca, i, j, k, sj, sk; + + // Place the first circle. + a = circles[0], a.x = 0, a.y = 0; + if (!(n > 1)) return a.r; + + // Place the second circle. + b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; + if (!(n > 2)) return a.r + b.r; + + // Place the third circle. + place(b, a, c = circles[2]); + + // Initialize the front-chain using the first three circles a, b and c. + a = new Node$1(a), b = new Node$1(b), c = new Node$1(c); + a.next = c.previous = b; + b.next = a.previous = c; + c.next = b.previous = a; + + // Attempt to place each remaining circle… + pack: for (i = 3; i < n; ++i) { + place(a._, b._, c = circles[i]), c = new Node$1(c); + + // Find the closest intersecting circle on the front-chain, if any. + // “Closeness” is determined by linear distance along the front-chain. + // “Ahead” or “behind” is likewise determined by linear distance. + j = b.next, k = a.previous, sj = b._.r, sk = a._.r; + do { + if (sj <= sk) { + if (intersects(j._, c._)) { + b = j, a.next = b, b.previous = a, --i; + continue pack; + } + sj += j._.r, j = j.next; + } else { + if (intersects(k._, c._)) { + a = k, a.next = b, b.previous = a, --i; + continue pack; + } + sk += k._.r, k = k.previous; + } + } while (j !== k.next); + + // Success! Insert the new circle c between a and b. + c.previous = a, c.next = b, a.next = b.previous = b = c; + + // Compute the new closest circle pair to the centroid. + aa = score(a); + while ((c = c.next) !== b) { + if ((ca = score(c)) < aa) { + a = c, aa = ca; + } + } + b = a.next; + } + + // Compute the enclosing circle of the front chain. + a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a); + + // Translate the circles to put the enclosing circle around the origin. + for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; + + return c.r; +} + +function siblings(circles) { + packEnclose(circles); + return circles; +} + +function optional(f) { + return f == null ? null : required(f); +} + +function required(f) { + if (typeof f !== "function") throw new Error; + return f; +} + +function constantZero() { + return 0; +} + +function constant(x) { + return function() { + return x; + }; +} + +function defaultRadius(d) { + return Math.sqrt(d.value); +} + +function index() { + var radius = null, + dx = 1, + dy = 1, + padding = constantZero; + + function pack(root) { + root.x = dx / 2, root.y = dy / 2; + if (radius) { + root.eachBefore(radiusLeaf(radius)) + .eachAfter(packChildren(padding, 0.5)) + .eachBefore(translateChild(1)); + } else { + root.eachBefore(radiusLeaf(defaultRadius)) + .eachAfter(packChildren(constantZero, 1)) + .eachAfter(packChildren(padding, root.r / Math.min(dx, dy))) + .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); + } + return root; + } + + pack.radius = function(x) { + return arguments.length ? (radius = optional(x), pack) : radius; + }; + + pack.size = function(x) { + return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; + }; + + pack.padding = function(x) { + return arguments.length ? (padding = typeof x === "function" ? x : constant(+x), pack) : padding; + }; + + return pack; +} + +function radiusLeaf(radius) { + return function(node) { + if (!node.children) { + node.r = Math.max(0, +radius(node) || 0); + } + }; +} + +function packChildren(padding, k) { + return function(node) { + if (children = node.children) { + var children, + i, + n = children.length, + r = padding(node) * k || 0, + e; + + if (r) for (i = 0; i < n; ++i) children[i].r += r; + e = packEnclose(children); + if (r) for (i = 0; i < n; ++i) children[i].r -= r; + node.r = e + r; + } + }; +} + +function translateChild(k) { + return function(node) { + var parent = node.parent; + node.r *= k; + if (parent) { + node.x = parent.x + k * node.x; + node.y = parent.y + k * node.y; + } + }; +} + +function roundNode(node) { + node.x0 = Math.round(node.x0); + node.y0 = Math.round(node.y0); + node.x1 = Math.round(node.x1); + node.y1 = Math.round(node.y1); +} + +function treemapDice(parent, x0, y0, x1, y1) { + var nodes = parent.children, + node, + i = -1, + n = nodes.length, + k = parent.value && (x1 - x0) / parent.value; + + while (++i < n) { + node = nodes[i], node.y0 = y0, node.y1 = y1; + node.x0 = x0, node.x1 = x0 += node.value * k; + } +} + +function partition() { + var dx = 1, + dy = 1, + padding = 0, + round = false; + + function partition(root) { + var n = root.height + 1; + root.x0 = + root.y0 = padding; + root.x1 = dx; + root.y1 = dy / n; + root.eachBefore(positionNode(dy, n)); + if (round) root.eachBefore(roundNode); + return root; + } + + function positionNode(dy, n) { + return function(node) { + if (node.children) { + treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); + } + var x0 = node.x0, + y0 = node.y0, + x1 = node.x1 - padding, + y1 = node.y1 - padding; + if (x1 < x0) x0 = x1 = (x0 + x1) / 2; + if (y1 < y0) y0 = y1 = (y0 + y1) / 2; + node.x0 = x0; + node.y0 = y0; + node.x1 = x1; + node.y1 = y1; + }; + } + + partition.round = function(x) { + return arguments.length ? (round = !!x, partition) : round; + }; + + partition.size = function(x) { + return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; + }; + + partition.padding = function(x) { + return arguments.length ? (padding = +x, partition) : padding; + }; + + return partition; +} + +var keyPrefix = "$", // Protect against keys like “__proto__”. + preroot = {depth: -1}, + ambiguous = {}; + +function defaultId(d) { + return d.id; +} + +function defaultParentId(d) { + return d.parentId; +} + +function stratify() { + var id = defaultId, + parentId = defaultParentId; + + function stratify(data) { + var d, + i, + n = data.length, + root, + parent, + node, + nodes = new Array(n), + nodeId, + nodeKey, + nodeByKey = {}; + + for (i = 0; i < n; ++i) { + d = data[i], node = nodes[i] = new Node(d); + if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { + nodeKey = keyPrefix + (node.id = nodeId); + nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node; + } + } + + for (i = 0; i < n; ++i) { + node = nodes[i], nodeId = parentId(data[i], i, data); + if (nodeId == null || !(nodeId += "")) { + if (root) throw new Error("multiple roots"); + root = node; + } else { + parent = nodeByKey[keyPrefix + nodeId]; + if (!parent) throw new Error("missing: " + nodeId); + if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); + if (parent.children) parent.children.push(node); + else parent.children = [node]; + node.parent = parent; + } + } + + if (!root) throw new Error("no root"); + root.parent = preroot; + root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); + root.parent = null; + if (n > 0) throw new Error("cycle"); + + return root; + } + + stratify.id = function(x) { + return arguments.length ? (id = required(x), stratify) : id; + }; + + stratify.parentId = function(x) { + return arguments.length ? (parentId = required(x), stratify) : parentId; + }; + + return stratify; +} + +function defaultSeparation$1(a, b) { + return a.parent === b.parent ? 1 : 2; +} + +// function radialSeparation(a, b) { +// return (a.parent === b.parent ? 1 : 2) / a.depth; +// } + +// This function is used to traverse the left contour of a subtree (or +// subforest). It returns the successor of v on this contour. This successor is +// either given by the leftmost child of v or by the thread of v. The function +// returns null if and only if v is on the highest level of its subtree. +function nextLeft(v) { + var children = v.children; + return children ? children[0] : v.t; +} + +// This function works analogously to nextLeft. +function nextRight(v) { + var children = v.children; + return children ? children[children.length - 1] : v.t; +} + +// Shifts the current subtree rooted at w+. This is done by increasing +// prelim(w+) and mod(w+) by shift. +function moveSubtree(wm, wp, shift) { + var change = shift / (wp.i - wm.i); + wp.c -= change; + wp.s += shift; + wm.c += change; + wp.z += shift; + wp.m += shift; +} + +// All other shifts, applied to the smaller subtrees between w- and w+, are +// performed by this function. To prepare the shifts, we have to adjust +// change(w+), shift(w+), and change(w-). +function executeShifts(v) { + var shift = 0, + change = 0, + children = v.children, + i = children.length, + w; + while (--i >= 0) { + w = children[i]; + w.z += shift; + w.m += shift; + shift += w.s + (change += w.c); + } +} + +// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, +// returns the specified (default) ancestor. +function nextAncestor(vim, v, ancestor) { + return vim.a.parent === v.parent ? vim.a : ancestor; +} + +function TreeNode(node, i) { + this._ = node; + this.parent = null; + this.children = null; + this.A = null; // default ancestor + this.a = this; // ancestor + this.z = 0; // prelim + this.m = 0; // mod + this.c = 0; // change + this.s = 0; // shift + this.t = null; // thread + this.i = i; // number +} + +TreeNode.prototype = Object.create(Node.prototype); + +function treeRoot(root) { + var tree = new TreeNode(root, 0), + node, + nodes = [tree], + child, + children, + i, + n; + + while (node = nodes.pop()) { + if (children = node._.children) { + node.children = new Array(n = children.length); + for (i = n - 1; i >= 0; --i) { + nodes.push(child = node.children[i] = new TreeNode(children[i], i)); + child.parent = node; + } + } + } + + (tree.parent = new TreeNode(null, 0)).children = [tree]; + return tree; +} + +// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm +function tree() { + var separation = defaultSeparation$1, + dx = 1, + dy = 1, + nodeSize = null; + + function tree(root) { + var t = treeRoot(root); + + // Compute the layout using Buchheim et al.’s algorithm. + t.eachAfter(firstWalk), t.parent.m = -t.z; + t.eachBefore(secondWalk); + + // If a fixed node size is specified, scale x and y. + if (nodeSize) root.eachBefore(sizeNode); + + // If a fixed tree size is specified, scale x and y based on the extent. + // Compute the left-most, right-most, and depth-most nodes for extents. + else { + var left = root, + right = root, + bottom = root; + root.eachBefore(function(node) { + if (node.x < left.x) left = node; + if (node.x > right.x) right = node; + if (node.depth > bottom.depth) bottom = node; + }); + var s = left === right ? 1 : separation(left, right) / 2, + tx = s - left.x, + kx = dx / (right.x + s + tx), + ky = dy / (bottom.depth || 1); + root.eachBefore(function(node) { + node.x = (node.x + tx) * kx; + node.y = node.depth * ky; + }); + } + + return root; + } + + // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is + // applied recursively to the children of v, as well as the function + // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the + // node v is placed to the midpoint of its outermost children. + function firstWalk(v) { + var children = v.children, + siblings = v.parent.children, + w = v.i ? siblings[v.i - 1] : null; + if (children) { + executeShifts(v); + var midpoint = (children[0].z + children[children.length - 1].z) / 2; + if (w) { + v.z = w.z + separation(v._, w._); + v.m = v.z - midpoint; + } else { + v.z = midpoint; + } + } else if (w) { + v.z = w.z + separation(v._, w._); + } + v.parent.A = apportion(v, w, v.parent.A || siblings[0]); + } + + // Computes all real x-coordinates by summing up the modifiers recursively. + function secondWalk(v) { + v._.x = v.z + v.parent.m; + v.m += v.parent.m; + } + + // The core of the algorithm. Here, a new subtree is combined with the + // previous subtrees. Threads are used to traverse the inside and outside + // contours of the left and right subtree up to the highest common level. The + // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the + // superscript o means outside and i means inside, the subscript - means left + // subtree and + means right subtree. For summing up the modifiers along the + // contour, we use respective variables si+, si-, so-, and so+. Whenever two + // nodes of the inside contours conflict, we compute the left one of the + // greatest uncommon ancestors using the function ANCESTOR and call MOVE + // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. + // Finally, we add a new thread (if necessary). + function apportion(v, w, ancestor) { + if (w) { + var vip = v, + vop = v, + vim = w, + vom = vip.parent.children[0], + sip = vip.m, + sop = vop.m, + sim = vim.m, + som = vom.m, + shift; + while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { + vom = nextLeft(vom); + vop = nextRight(vop); + vop.a = v; + shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); + if (shift > 0) { + moveSubtree(nextAncestor(vim, v, ancestor), v, shift); + sip += shift; + sop += shift; + } + sim += vim.m; + sip += vip.m; + som += vom.m; + sop += vop.m; + } + if (vim && !nextRight(vop)) { + vop.t = vim; + vop.m += sim - sop; + } + if (vip && !nextLeft(vom)) { + vom.t = vip; + vom.m += sip - som; + ancestor = v; + } + } + return ancestor; + } + + function sizeNode(node) { + node.x *= dx; + node.y = node.depth * dy; + } + + tree.separation = function(x) { + return arguments.length ? (separation = x, tree) : separation; + }; + + tree.size = function(x) { + return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); + }; + + tree.nodeSize = function(x) { + return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); + }; + + return tree; +} + +function treemapSlice(parent, x0, y0, x1, y1) { + var nodes = parent.children, + node, + i = -1, + n = nodes.length, + k = parent.value && (y1 - y0) / parent.value; + + while (++i < n) { + node = nodes[i], node.x0 = x0, node.x1 = x1; + node.y0 = y0, node.y1 = y0 += node.value * k; + } +} + +var phi = (1 + Math.sqrt(5)) / 2; + +function squarifyRatio(ratio, parent, x0, y0, x1, y1) { + var rows = [], + nodes = parent.children, + row, + nodeValue, + i0 = 0, + i1 = 0, + n = nodes.length, + dx, dy, + value = parent.value, + sumValue, + minValue, + maxValue, + newRatio, + minRatio, + alpha, + beta; + + while (i0 < n) { + dx = x1 - x0, dy = y1 - y0; + + // Find the next non-empty node. + do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); + minValue = maxValue = sumValue; + alpha = Math.max(dy / dx, dx / dy) / (value * ratio); + beta = sumValue * sumValue * alpha; + minRatio = Math.max(maxValue / beta, beta / minValue); + + // Keep adding nodes while the aspect ratio maintains or improves. + for (; i1 < n; ++i1) { + sumValue += nodeValue = nodes[i1].value; + if (nodeValue < minValue) minValue = nodeValue; + if (nodeValue > maxValue) maxValue = nodeValue; + beta = sumValue * sumValue * alpha; + newRatio = Math.max(maxValue / beta, beta / minValue); + if (newRatio > minRatio) { sumValue -= nodeValue; break; } + minRatio = newRatio; + } + + // Position and record the row orientation. + rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); + if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); + else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); + value -= sumValue, i0 = i1; + } + + return rows; +} + +var squarify = (function custom(ratio) { + + function squarify(parent, x0, y0, x1, y1) { + squarifyRatio(ratio, parent, x0, y0, x1, y1); + } + + squarify.ratio = function(x) { + return custom((x = +x) > 1 ? x : 1); + }; + + return squarify; +})(phi); + +function index$1() { + var tile = squarify, + round = false, + dx = 1, + dy = 1, + paddingStack = [0], + paddingInner = constantZero, + paddingTop = constantZero, + paddingRight = constantZero, + paddingBottom = constantZero, + paddingLeft = constantZero; + + function treemap(root) { + root.x0 = + root.y0 = 0; + root.x1 = dx; + root.y1 = dy; + root.eachBefore(positionNode); + paddingStack = [0]; + if (round) root.eachBefore(roundNode); + return root; + } + + function positionNode(node) { + var p = paddingStack[node.depth], + x0 = node.x0 + p, + y0 = node.y0 + p, + x1 = node.x1 - p, + y1 = node.y1 - p; + if (x1 < x0) x0 = x1 = (x0 + x1) / 2; + if (y1 < y0) y0 = y1 = (y0 + y1) / 2; + node.x0 = x0; + node.y0 = y0; + node.x1 = x1; + node.y1 = y1; + if (node.children) { + p = paddingStack[node.depth + 1] = paddingInner(node) / 2; + x0 += paddingLeft(node) - p; + y0 += paddingTop(node) - p; + x1 -= paddingRight(node) - p; + y1 -= paddingBottom(node) - p; + if (x1 < x0) x0 = x1 = (x0 + x1) / 2; + if (y1 < y0) y0 = y1 = (y0 + y1) / 2; + tile(node, x0, y0, x1, y1); + } + } + + treemap.round = function(x) { + return arguments.length ? (round = !!x, treemap) : round; + }; + + treemap.size = function(x) { + return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; + }; + + treemap.tile = function(x) { + return arguments.length ? (tile = required(x), treemap) : tile; + }; + + treemap.padding = function(x) { + return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); + }; + + treemap.paddingInner = function(x) { + return arguments.length ? (paddingInner = typeof x === "function" ? x : constant(+x), treemap) : paddingInner; + }; + + treemap.paddingOuter = function(x) { + return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); + }; + + treemap.paddingTop = function(x) { + return arguments.length ? (paddingTop = typeof x === "function" ? x : constant(+x), treemap) : paddingTop; + }; + + treemap.paddingRight = function(x) { + return arguments.length ? (paddingRight = typeof x === "function" ? x : constant(+x), treemap) : paddingRight; + }; + + treemap.paddingBottom = function(x) { + return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant(+x), treemap) : paddingBottom; + }; + + treemap.paddingLeft = function(x) { + return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant(+x), treemap) : paddingLeft; + }; + + return treemap; +} + +function binary(parent, x0, y0, x1, y1) { + var nodes = parent.children, + i, n = nodes.length, + sum, sums = new Array(n + 1); + + for (sums[0] = sum = i = 0; i < n; ++i) { + sums[i + 1] = sum += nodes[i].value; + } + + partition(0, n, parent.value, x0, y0, x1, y1); + + function partition(i, j, value, x0, y0, x1, y1) { + if (i >= j - 1) { + var node = nodes[i]; + node.x0 = x0, node.y0 = y0; + node.x1 = x1, node.y1 = y1; + return; + } + + var valueOffset = sums[i], + valueTarget = (value / 2) + valueOffset, + k = i + 1, + hi = j - 1; + + while (k < hi) { + var mid = k + hi >>> 1; + if (sums[mid] < valueTarget) k = mid + 1; + else hi = mid; + } + + if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; + + var valueLeft = sums[k] - valueOffset, + valueRight = value - valueLeft; + + if ((x1 - x0) > (y1 - y0)) { + var xk = (x0 * valueRight + x1 * valueLeft) / value; + partition(i, k, valueLeft, x0, y0, xk, y1); + partition(k, j, valueRight, xk, y0, x1, y1); + } else { + var yk = (y0 * valueRight + y1 * valueLeft) / value; + partition(i, k, valueLeft, x0, y0, x1, yk); + partition(k, j, valueRight, x0, yk, x1, y1); + } + } +} + +function sliceDice(parent, x0, y0, x1, y1) { + (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); +} + +var resquarify = (function custom(ratio) { + + function resquarify(parent, x0, y0, x1, y1) { + if ((rows = parent._squarify) && (rows.ratio === ratio)) { + var rows, + row, + nodes, + i, + j = -1, + n, + m = rows.length, + value = parent.value; + + while (++j < m) { + row = rows[j], nodes = row.children; + for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; + if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value); + else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1); + value -= row.value; + } + } else { + parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); + rows.ratio = ratio; + } + } + + resquarify.ratio = function(x) { + return custom((x = +x) > 1 ? x : 1); + }; + + return resquarify; +})(phi); + +exports.cluster = cluster; +exports.hierarchy = hierarchy; +exports.pack = index; +exports.packSiblings = siblings; +exports.packEnclose = enclose; +exports.partition = partition; +exports.stratify = stratify; +exports.tree = tree; +exports.treemap = index$1; +exports.treemapBinary = binary; +exports.treemapDice = treemapDice; +exports.treemapSlice = treemapSlice; +exports.treemapSliceDice = sliceDice; +exports.treemapSquarify = squarify; +exports.treemapResquarify = resquarify; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],40:[function(require,module,exports){ +// https://d3js.org/d3-interpolate/ v1.3.2 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3)); +}(this, (function (exports,d3Color) { 'use strict'; + +function basis(t1, v0, v1, v2, v3) { + var t2 = t1 * t1, t3 = t2 * t1; + return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + + (4 - 6 * t2 + 3 * t3) * v1 + + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + + t3 * v3) / 6; +} + +function basis$1(values) { + var n = values.length - 1; + return function(t) { + var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), + v1 = values[i], + v2 = values[i + 1], + v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, + v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; + return basis((t - i / n) * n, v0, v1, v2, v3); + }; +} + +function basisClosed(values) { + var n = values.length; + return function(t) { + var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), + v0 = values[(i + n - 1) % n], + v1 = values[i % n], + v2 = values[(i + 1) % n], + v3 = values[(i + 2) % n]; + return basis((t - i / n) * n, v0, v1, v2, v3); + }; +} + +function constant(x) { + return function() { + return x; + }; +} + +function linear(a, d) { + return function(t) { + return a + t * d; + }; +} + +function exponential(a, b, y) { + return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { + return Math.pow(a + t * b, y); + }; +} + +function hue(a, b) { + var d = b - a; + return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a); +} + +function gamma(y) { + return (y = +y) === 1 ? nogamma : function(a, b) { + return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a); + }; +} + +function nogamma(a, b) { + var d = b - a; + return d ? linear(a, d) : constant(isNaN(a) ? b : a); +} + +var rgb = (function rgbGamma(y) { + var color = gamma(y); + + function rgb(start, end) { + var r = color((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r), + g = color(start.g, end.g), + b = color(start.b, end.b), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.r = r(t); + start.g = g(t); + start.b = b(t); + start.opacity = opacity(t); + return start + ""; + }; + } + + rgb.gamma = rgbGamma; + + return rgb; +})(1); + +function rgbSpline(spline) { + return function(colors) { + var n = colors.length, + r = new Array(n), + g = new Array(n), + b = new Array(n), + i, color; + for (i = 0; i < n; ++i) { + color = d3Color.rgb(colors[i]); + r[i] = color.r || 0; + g[i] = color.g || 0; + b[i] = color.b || 0; + } + r = spline(r); + g = spline(g); + b = spline(b); + color.opacity = 1; + return function(t) { + color.r = r(t); + color.g = g(t); + color.b = b(t); + return color + ""; + }; + }; +} + +var rgbBasis = rgbSpline(basis$1); +var rgbBasisClosed = rgbSpline(basisClosed); + +function array(a, b) { + var nb = b ? b.length : 0, + na = a ? Math.min(nb, a.length) : 0, + x = new Array(na), + c = new Array(nb), + i; + + for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]); + for (; i < nb; ++i) c[i] = b[i]; + + return function(t) { + for (i = 0; i < na; ++i) c[i] = x[i](t); + return c; + }; +} + +function date(a, b) { + var d = new Date; + return a = +a, b -= a, function(t) { + return d.setTime(a + b * t), d; + }; +} + +function number(a, b) { + return a = +a, b -= a, function(t) { + return a + b * t; + }; +} + +function object(a, b) { + var i = {}, + c = {}, + k; + + if (a === null || typeof a !== "object") a = {}; + if (b === null || typeof b !== "object") b = {}; + + for (k in b) { + if (k in a) { + i[k] = value(a[k], b[k]); + } else { + c[k] = b[k]; + } + } + + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; +} + +var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, + reB = new RegExp(reA.source, "g"); + +function zero(b) { + return function() { + return b; + }; +} + +function one(b) { + return function(t) { + return b(t) + ""; + }; +} + +function string(a, b) { + var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b + am, // current match in a + bm, // current match in b + bs, // string preceding current number in b, if any + i = -1, // index in s + s = [], // string constants and placeholders + q = []; // number interpolators + + // Coerce inputs to strings. + a = a + "", b = b + ""; + + // Interpolate pairs of numbers in a & b. + while ((am = reA.exec(a)) + && (bm = reB.exec(b))) { + if ((bs = bm.index) > bi) { // a string precedes the next number in b + bs = b.slice(bi, bs); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match + if (s[i]) s[i] += bm; // coalesce with previous string + else s[++i] = bm; + } else { // interpolate non-matching numbers + s[++i] = null; + q.push({i: i, x: number(am, bm)}); + } + bi = reB.lastIndex; + } + + // Add remains of b. + if (bi < b.length) { + bs = b.slice(bi); + if (s[i]) s[i] += bs; // coalesce with previous string + else s[++i] = bs; + } + + // Special optimization for only a single match. + // Otherwise, interpolate each of the numbers and rejoin the string. + return s.length < 2 ? (q[0] + ? one(q[0].x) + : zero(b)) + : (b = q.length, function(t) { + for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }); +} + +function value(a, b) { + var t = typeof b, c; + return b == null || t === "boolean" ? constant(b) + : (t === "number" ? number + : t === "string" ? ((c = d3Color.color(b)) ? (b = c, rgb) : string) + : b instanceof d3Color.color ? rgb + : b instanceof Date ? date + : Array.isArray(b) ? array + : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object + : number)(a, b); +} + +function discrete(range) { + var n = range.length; + return function(t) { + return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; + }; +} + +function hue$1(a, b) { + var i = hue(+a, +b); + return function(t) { + var x = i(t); + return x - 360 * Math.floor(x / 360); + }; +} + +function round(a, b) { + return a = +a, b -= a, function(t) { + return Math.round(a + b * t); + }; +} + +var degrees = 180 / Math.PI; + +var identity = { + translateX: 0, + translateY: 0, + rotate: 0, + skewX: 0, + scaleX: 1, + scaleY: 1 +}; + +function decompose(a, b, c, d, e, f) { + var scaleX, scaleY, skewX; + if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; + if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; + if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; + if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; + return { + translateX: e, + translateY: f, + rotate: Math.atan2(b, a) * degrees, + skewX: Math.atan(skewX) * degrees, + scaleX: scaleX, + scaleY: scaleY + }; +} + +var cssNode, + cssRoot, + cssView, + svgNode; + +function parseCss(value) { + if (value === "none") return identity; + if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; + cssNode.style.transform = value; + value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); + cssRoot.removeChild(cssNode); + value = value.slice(7, -1).split(","); + return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); +} + +function parseSvg(value) { + if (value == null) return identity; + if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); + svgNode.setAttribute("transform", value); + if (!(value = svgNode.transform.baseVal.consolidate())) return identity; + value = value.matrix; + return decompose(value.a, value.b, value.c, value.d, value.e, value.f); +} + +function interpolateTransform(parse, pxComma, pxParen, degParen) { + + function pop(s) { + return s.length ? s.pop() + " " : ""; + } + + function translate(xa, ya, xb, yb, s, q) { + if (xa !== xb || ya !== yb) { + var i = s.push("translate(", null, pxComma, null, pxParen); + q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)}); + } else if (xb || yb) { + s.push("translate(" + xb + pxComma + yb + pxParen); + } + } + + function rotate(a, b, s, q) { + if (a !== b) { + if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path + q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: number(a, b)}); + } else if (b) { + s.push(pop(s) + "rotate(" + b + degParen); + } + } + + function skewX(a, b, s, q) { + if (a !== b) { + q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: number(a, b)}); + } else if (b) { + s.push(pop(s) + "skewX(" + b + degParen); + } + } + + function scale(xa, ya, xb, yb, s, q) { + if (xa !== xb || ya !== yb) { + var i = s.push(pop(s) + "scale(", null, ",", null, ")"); + q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)}); + } else if (xb !== 1 || yb !== 1) { + s.push(pop(s) + "scale(" + xb + "," + yb + ")"); + } + } + + return function(a, b) { + var s = [], // string constants and placeholders + q = []; // number interpolators + a = parse(a), b = parse(b); + translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); + rotate(a.rotate, b.rotate, s, q); + skewX(a.skewX, b.skewX, s, q); + scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); + a = b = null; // gc + return function(t) { + var i = -1, n = q.length, o; + while (++i < n) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + }; +} + +var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); +var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); + +var rho = Math.SQRT2, + rho2 = 2, + rho4 = 4, + epsilon2 = 1e-12; + +function cosh(x) { + return ((x = Math.exp(x)) + 1 / x) / 2; +} + +function sinh(x) { + return ((x = Math.exp(x)) - 1 / x) / 2; +} + +function tanh(x) { + return ((x = Math.exp(2 * x)) - 1) / (x + 1); +} + +// p0 = [ux0, uy0, w0] +// p1 = [ux1, uy1, w1] +function zoom(p0, p1) { + var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], + ux1 = p1[0], uy1 = p1[1], w1 = p1[2], + dx = ux1 - ux0, + dy = uy1 - uy0, + d2 = dx * dx + dy * dy, + i, + S; + + // Special case for u0 ≅ u1. + if (d2 < epsilon2) { + S = Math.log(w1 / w0) / rho; + i = function(t) { + return [ + ux0 + t * dx, + uy0 + t * dy, + w0 * Math.exp(rho * t * S) + ]; + }; + } + + // General case. + else { + var d1 = Math.sqrt(d2), + b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), + b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), + r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), + r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); + S = (r1 - r0) / rho; + i = function(t) { + var s = t * S, + coshr0 = cosh(r0), + u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); + return [ + ux0 + u * dx, + uy0 + u * dy, + w0 * coshr0 / cosh(rho * s + r0) + ]; + }; + } + + i.duration = S * 1000; + + return i; +} + +function hsl(hue$$1) { + return function(start, end) { + var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h), + s = nogamma(start.s, end.s), + l = nogamma(start.l, end.l), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.h = h(t); + start.s = s(t); + start.l = l(t); + start.opacity = opacity(t); + return start + ""; + }; + } +} + +var hsl$1 = hsl(hue); +var hslLong = hsl(nogamma); + +function lab(start, end) { + var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l), + a = nogamma(start.a, end.a), + b = nogamma(start.b, end.b), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.l = l(t); + start.a = a(t); + start.b = b(t); + start.opacity = opacity(t); + return start + ""; + }; +} + +function hcl(hue$$1) { + return function(start, end) { + var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h), + c = nogamma(start.c, end.c), + l = nogamma(start.l, end.l), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.h = h(t); + start.c = c(t); + start.l = l(t); + start.opacity = opacity(t); + return start + ""; + }; + } +} + +var hcl$1 = hcl(hue); +var hclLong = hcl(nogamma); + +function cubehelix(hue$$1) { + return (function cubehelixGamma(y) { + y = +y; + + function cubehelix(start, end) { + var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h), + s = nogamma(start.s, end.s), + l = nogamma(start.l, end.l), + opacity = nogamma(start.opacity, end.opacity); + return function(t) { + start.h = h(t); + start.s = s(t); + start.l = l(Math.pow(t, y)); + start.opacity = opacity(t); + return start + ""; + }; + } + + cubehelix.gamma = cubehelixGamma; + + return cubehelix; + })(1); +} + +var cubehelix$1 = cubehelix(hue); +var cubehelixLong = cubehelix(nogamma); + +function piecewise(interpolate, values) { + var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); + while (i < n) I[i] = interpolate(v, v = values[++i]); + return function(t) { + var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); + return I[i](t - i); + }; +} + +function quantize(interpolator, n) { + var samples = new Array(n); + for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); + return samples; +} + +exports.interpolate = value; +exports.interpolateArray = array; +exports.interpolateBasis = basis$1; +exports.interpolateBasisClosed = basisClosed; +exports.interpolateDate = date; +exports.interpolateDiscrete = discrete; +exports.interpolateHue = hue$1; +exports.interpolateNumber = number; +exports.interpolateObject = object; +exports.interpolateRound = round; +exports.interpolateString = string; +exports.interpolateTransformCss = interpolateTransformCss; +exports.interpolateTransformSvg = interpolateTransformSvg; +exports.interpolateZoom = zoom; +exports.interpolateRgb = rgb; +exports.interpolateRgbBasis = rgbBasis; +exports.interpolateRgbBasisClosed = rgbBasisClosed; +exports.interpolateHsl = hsl$1; +exports.interpolateHslLong = hslLong; +exports.interpolateLab = lab; +exports.interpolateHcl = hcl$1; +exports.interpolateHclLong = hclLong; +exports.interpolateCubehelix = cubehelix$1; +exports.interpolateCubehelixLong = cubehelixLong; +exports.piecewise = piecewise; +exports.quantize = quantize; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-color":28}],41:[function(require,module,exports){ +// https://d3js.org/d3-path/ v1.0.7 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var pi = Math.PI, + tau = 2 * pi, + epsilon = 1e-6, + tauEpsilon = tau - epsilon; + +function Path() { + this._x0 = this._y0 = // start of current subpath + this._x1 = this._y1 = null; // end of current subpath + this._ = ""; +} + +function path() { + return new Path; +} + +Path.prototype = path.prototype = { + constructor: Path, + moveTo: function(x, y) { + this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); + }, + closePath: function() { + if (this._x1 !== null) { + this._x1 = this._x0, this._y1 = this._y0; + this._ += "Z"; + } + }, + lineTo: function(x, y) { + this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); + }, + quadraticCurveTo: function(x1, y1, x, y) { + this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); + }, + bezierCurveTo: function(x1, y1, x2, y2, x, y) { + this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); + }, + arcTo: function(x1, y1, x2, y2, r) { + x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; + var x0 = this._x1, + y0 = this._y1, + x21 = x2 - x1, + y21 = y2 - y1, + x01 = x0 - x1, + y01 = y0 - y1, + l01_2 = x01 * x01 + y01 * y01; + + // Is the radius negative? Error. + if (r < 0) throw new Error("negative radius: " + r); + + // Is this path empty? Move to (x1,y1). + if (this._x1 === null) { + this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); + } + + // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. + else if (!(l01_2 > epsilon)); + + // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? + // Equivalently, is (x1,y1) coincident with (x2,y2)? + // Or, is the radius zero? Line to (x1,y1). + else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) { + this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); + } + + // Otherwise, draw an arc! + else { + var x20 = x2 - x0, + y20 = y2 - y0, + l21_2 = x21 * x21 + y21 * y21, + l20_2 = x20 * x20 + y20 * y20, + l21 = Math.sqrt(l21_2), + l01 = Math.sqrt(l01_2), + l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), + t01 = l / l01, + t21 = l / l21; + + // If the start tangent is not coincident with (x0,y0), line to. + if (Math.abs(t01 - 1) > epsilon) { + this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); + } + + this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); + } + }, + arc: function(x, y, r, a0, a1, ccw) { + x = +x, y = +y, r = +r; + var dx = r * Math.cos(a0), + dy = r * Math.sin(a0), + x0 = x + dx, + y0 = y + dy, + cw = 1 ^ ccw, + da = ccw ? a0 - a1 : a1 - a0; + + // Is the radius negative? Error. + if (r < 0) throw new Error("negative radius: " + r); + + // Is this path empty? Move to (x0,y0). + if (this._x1 === null) { + this._ += "M" + x0 + "," + y0; + } + + // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). + else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) { + this._ += "L" + x0 + "," + y0; + } + + // Is this arc empty? We’re done. + if (!r) return; + + // Does the angle go the wrong way? Flip the direction. + if (da < 0) da = da % tau + tau; + + // Is this a complete circle? Draw two arcs to complete the circle. + if (da > tauEpsilon) { + this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); + } + + // Is this arc non-empty? Draw an arc! + else if (da > epsilon) { + this._ += "A" + r + "," + r + ",0," + (+(da >= pi)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); + } + }, + rect: function(x, y, w, h) { + this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; + }, + toString: function() { + return this._; + } +}; + +exports.path = path; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],42:[function(require,module,exports){ +// https://d3js.org/d3-polygon/ v1.0.5 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function area(polygon) { + var i = -1, + n = polygon.length, + a, + b = polygon[n - 1], + area = 0; + + while (++i < n) { + a = b; + b = polygon[i]; + area += a[1] * b[0] - a[0] * b[1]; + } + + return area / 2; +} + +function centroid(polygon) { + var i = -1, + n = polygon.length, + x = 0, + y = 0, + a, + b = polygon[n - 1], + c, + k = 0; + + while (++i < n) { + a = b; + b = polygon[i]; + k += c = a[0] * b[1] - b[0] * a[1]; + x += (a[0] + b[0]) * c; + y += (a[1] + b[1]) * c; + } + + return k *= 3, [x / k, y / k]; +} + +// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of +// the 3D cross product in a quadrant I Cartesian coordinate system (+x is +// right, +y is up). Returns a positive value if ABC is counter-clockwise, +// negative if clockwise, and zero if the points are collinear. +function cross(a, b, c) { + return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); +} + +function lexicographicOrder(a, b) { + return a[0] - b[0] || a[1] - b[1]; +} + +// Computes the upper convex hull per the monotone chain algorithm. +// Assumes points.length >= 3, is sorted by x, unique in y. +// Returns an array of indices into points in left-to-right order. +function computeUpperHullIndexes(points) { + var n = points.length, + indexes = [0, 1], + size = 2; + + for (var i = 2; i < n; ++i) { + while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; + indexes[size++] = i; + } + + return indexes.slice(0, size); // remove popped points +} + +function hull(points) { + if ((n = points.length) < 3) return null; + + var i, + n, + sortedPoints = new Array(n), + flippedPoints = new Array(n); + + for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; + sortedPoints.sort(lexicographicOrder); + for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; + + var upperIndexes = computeUpperHullIndexes(sortedPoints), + lowerIndexes = computeUpperHullIndexes(flippedPoints); + + // Construct the hull polygon, removing possible duplicate endpoints. + var skipLeft = lowerIndexes[0] === upperIndexes[0], + skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], + hull = []; + + // Add upper hull in right-to-l order. + // Then add lower hull in left-to-right order. + for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); + for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); + + return hull; +} + +function contains(polygon, point) { + var n = polygon.length, + p = polygon[n - 1], + x = point[0], y = point[1], + x0 = p[0], y0 = p[1], + x1, y1, + inside = false; + + for (var i = 0; i < n; ++i) { + p = polygon[i], x1 = p[0], y1 = p[1]; + if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; + x0 = x1, y0 = y1; + } + + return inside; +} + +function length(polygon) { + var i = -1, + n = polygon.length, + b = polygon[n - 1], + xa, + ya, + xb = b[0], + yb = b[1], + perimeter = 0; + + while (++i < n) { + xa = xb; + ya = yb; + b = polygon[i]; + xb = b[0]; + yb = b[1]; + xa -= xb; + ya -= yb; + perimeter += Math.sqrt(xa * xa + ya * ya); + } + + return perimeter; +} + +exports.polygonArea = area; +exports.polygonCentroid = centroid; +exports.polygonHull = hull; +exports.polygonContains = contains; +exports.polygonLength = length; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],43:[function(require,module,exports){ +// https://d3js.org/d3-quadtree/ v1.0.6 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function tree_add(d) { + var x = +this._x.call(null, d), + y = +this._y.call(null, d); + return add(this.cover(x, y), x, y, d); +} + +function add(tree, x, y, d) { + if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points + + var parent, + node = tree._root, + leaf = {data: d}, + x0 = tree._x0, + y0 = tree._y0, + x1 = tree._x1, + y1 = tree._y1, + xm, + ym, + xp, + yp, + right, + bottom, + i, + j; + + // If the tree is empty, initialize the root as a leaf. + if (!node) return tree._root = leaf, tree; + + // Find the existing leaf for the new point, or add it. + while (node.length) { + if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; + if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; + if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; + } + + // Is the new point is exactly coincident with the existing point? + xp = +tree._x.call(null, node.data); + yp = +tree._y.call(null, node.data); + if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; + + // Otherwise, split the leaf node until the old and new point are separated. + do { + parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); + if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; + if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; + } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); + return parent[j] = node, parent[i] = leaf, tree; +} + +function addAll(data) { + var d, i, n = data.length, + x, + y, + xz = new Array(n), + yz = new Array(n), + x0 = Infinity, + y0 = Infinity, + x1 = -Infinity, + y1 = -Infinity; + + // Compute the points and their extent. + for (i = 0; i < n; ++i) { + if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; + xz[i] = x; + yz[i] = y; + if (x < x0) x0 = x; + if (x > x1) x1 = x; + if (y < y0) y0 = y; + if (y > y1) y1 = y; + } + + // If there were no (valid) points, abort. + if (x0 > x1 || y0 > y1) return this; + + // Expand the tree to cover the new points. + this.cover(x0, y0).cover(x1, y1); + + // Add the new points. + for (i = 0; i < n; ++i) { + add(this, xz[i], yz[i], data[i]); + } + + return this; +} + +function tree_cover(x, y) { + if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points + + var x0 = this._x0, + y0 = this._y0, + x1 = this._x1, + y1 = this._y1; + + // If the quadtree has no extent, initialize them. + // Integer extent are necessary so that if we later double the extent, + // the existing quadrant boundaries don’t change due to floating point error! + if (isNaN(x0)) { + x1 = (x0 = Math.floor(x)) + 1; + y1 = (y0 = Math.floor(y)) + 1; + } + + // Otherwise, double repeatedly to cover. + else { + var z = x1 - x0, + node = this._root, + parent, + i; + + while (x0 > x || x >= x1 || y0 > y || y >= y1) { + i = (y < y0) << 1 | (x < x0); + parent = new Array(4), parent[i] = node, node = parent, z *= 2; + switch (i) { + case 0: x1 = x0 + z, y1 = y0 + z; break; + case 1: x0 = x1 - z, y1 = y0 + z; break; + case 2: x1 = x0 + z, y0 = y1 - z; break; + case 3: x0 = x1 - z, y0 = y1 - z; break; + } + } + + if (this._root && this._root.length) this._root = node; + } + + this._x0 = x0; + this._y0 = y0; + this._x1 = x1; + this._y1 = y1; + return this; +} + +function tree_data() { + var data = []; + this.visit(function(node) { + if (!node.length) do data.push(node.data); while (node = node.next) + }); + return data; +} + +function tree_extent(_) { + return arguments.length + ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) + : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; +} + +function Quad(node, x0, y0, x1, y1) { + this.node = node; + this.x0 = x0; + this.y0 = y0; + this.x1 = x1; + this.y1 = y1; +} + +function tree_find(x, y, radius) { + var data, + x0 = this._x0, + y0 = this._y0, + x1, + y1, + x2, + y2, + x3 = this._x1, + y3 = this._y1, + quads = [], + node = this._root, + q, + i; + + if (node) quads.push(new Quad(node, x0, y0, x3, y3)); + if (radius == null) radius = Infinity; + else { + x0 = x - radius, y0 = y - radius; + x3 = x + radius, y3 = y + radius; + radius *= radius; + } + + while (q = quads.pop()) { + + // Stop searching if this quadrant can’t contain a closer node. + if (!(node = q.node) + || (x1 = q.x0) > x3 + || (y1 = q.y0) > y3 + || (x2 = q.x1) < x0 + || (y2 = q.y1) < y0) continue; + + // Bisect the current quadrant. + if (node.length) { + var xm = (x1 + x2) / 2, + ym = (y1 + y2) / 2; + + quads.push( + new Quad(node[3], xm, ym, x2, y2), + new Quad(node[2], x1, ym, xm, y2), + new Quad(node[1], xm, y1, x2, ym), + new Quad(node[0], x1, y1, xm, ym) + ); + + // Visit the closest quadrant first. + if (i = (y >= ym) << 1 | (x >= xm)) { + q = quads[quads.length - 1]; + quads[quads.length - 1] = quads[quads.length - 1 - i]; + quads[quads.length - 1 - i] = q; + } + } + + // Visit this point. (Visiting coincident points isn’t necessary!) + else { + var dx = x - +this._x.call(null, node.data), + dy = y - +this._y.call(null, node.data), + d2 = dx * dx + dy * dy; + if (d2 < radius) { + var d = Math.sqrt(radius = d2); + x0 = x - d, y0 = y - d; + x3 = x + d, y3 = y + d; + data = node.data; + } + } + } + + return data; +} + +function tree_remove(d) { + if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points + + var parent, + node = this._root, + retainer, + previous, + next, + x0 = this._x0, + y0 = this._y0, + x1 = this._x1, + y1 = this._y1, + x, + y, + xm, + ym, + right, + bottom, + i, + j; + + // If the tree is empty, initialize the root as a leaf. + if (!node) return this; + + // Find the leaf node for the point. + // While descending, also retain the deepest parent with a non-removed sibling. + if (node.length) while (true) { + if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; + if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; + if (!(parent = node, node = node[i = bottom << 1 | right])) return this; + if (!node.length) break; + if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; + } + + // Find the point to remove. + while (node.data !== d) if (!(previous = node, node = node.next)) return this; + if (next = node.next) delete node.next; + + // If there are multiple coincident points, remove just the point. + if (previous) return (next ? previous.next = next : delete previous.next), this; + + // If this is the root point, remove it. + if (!parent) return this._root = next, this; + + // Remove this leaf. + next ? parent[i] = next : delete parent[i]; + + // If the parent now contains exactly one leaf, collapse superfluous parents. + if ((node = parent[0] || parent[1] || parent[2] || parent[3]) + && node === (parent[3] || parent[2] || parent[1] || parent[0]) + && !node.length) { + if (retainer) retainer[j] = node; + else this._root = node; + } + + return this; +} + +function removeAll(data) { + for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); + return this; +} + +function tree_root() { + return this._root; +} + +function tree_size() { + var size = 0; + this.visit(function(node) { + if (!node.length) do ++size; while (node = node.next) + }); + return size; +} + +function tree_visit(callback) { + var quads = [], q, node = this._root, child, x0, y0, x1, y1; + if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); + while (q = quads.pop()) { + if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { + var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; + if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); + if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); + if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); + if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); + } + } + return this; +} + +function tree_visitAfter(callback) { + var quads = [], next = [], q; + if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); + while (q = quads.pop()) { + var node = q.node; + if (node.length) { + var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; + if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); + if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); + if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); + if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); + } + next.push(q); + } + while (q = next.pop()) { + callback(q.node, q.x0, q.y0, q.x1, q.y1); + } + return this; +} + +function defaultX(d) { + return d[0]; +} + +function tree_x(_) { + return arguments.length ? (this._x = _, this) : this._x; +} + +function defaultY(d) { + return d[1]; +} + +function tree_y(_) { + return arguments.length ? (this._y = _, this) : this._y; +} + +function quadtree(nodes, x, y) { + var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); + return nodes == null ? tree : tree.addAll(nodes); +} + +function Quadtree(x, y, x0, y0, x1, y1) { + this._x = x; + this._y = y; + this._x0 = x0; + this._y0 = y0; + this._x1 = x1; + this._y1 = y1; + this._root = undefined; +} + +function leaf_copy(leaf) { + var copy = {data: leaf.data}, next = copy; + while (leaf = leaf.next) next = next.next = {data: leaf.data}; + return copy; +} + +var treeProto = quadtree.prototype = Quadtree.prototype; + +treeProto.copy = function() { + var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), + node = this._root, + nodes, + child; + + if (!node) return copy; + + if (!node.length) return copy._root = leaf_copy(node), copy; + + nodes = [{source: node, target: copy._root = new Array(4)}]; + while (node = nodes.pop()) { + for (var i = 0; i < 4; ++i) { + if (child = node.source[i]) { + if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); + else node.target[i] = leaf_copy(child); + } + } + } + + return copy; +}; + +treeProto.add = tree_add; +treeProto.addAll = addAll; +treeProto.cover = tree_cover; +treeProto.data = tree_data; +treeProto.extent = tree_extent; +treeProto.find = tree_find; +treeProto.remove = tree_remove; +treeProto.removeAll = removeAll; +treeProto.root = tree_root; +treeProto.size = tree_size; +treeProto.visit = tree_visit; +treeProto.visitAfter = tree_visitAfter; +treeProto.x = tree_x; +treeProto.y = tree_y; + +exports.quadtree = quadtree; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],44:[function(require,module,exports){ +// https://d3js.org/d3-random/ v1.1.2 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function defaultSource() { + return Math.random(); +} + +var uniform = (function sourceRandomUniform(source) { + function randomUniform(min, max) { + min = min == null ? 0 : +min; + max = max == null ? 1 : +max; + if (arguments.length === 1) max = min, min = 0; + else max -= min; + return function() { + return source() * max + min; + }; + } + + randomUniform.source = sourceRandomUniform; + + return randomUniform; +})(defaultSource); + +var normal = (function sourceRandomNormal(source) { + function randomNormal(mu, sigma) { + var x, r; + mu = mu == null ? 0 : +mu; + sigma = sigma == null ? 1 : +sigma; + return function() { + var y; + + // If available, use the second previously-generated uniform random. + if (x != null) y = x, x = null; + + // Otherwise, generate a new x and y. + else do { + x = source() * 2 - 1; + y = source() * 2 - 1; + r = x * x + y * y; + } while (!r || r > 1); + + return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); + }; + } + + randomNormal.source = sourceRandomNormal; + + return randomNormal; +})(defaultSource); + +var logNormal = (function sourceRandomLogNormal(source) { + function randomLogNormal() { + var randomNormal = normal.source(source).apply(this, arguments); + return function() { + return Math.exp(randomNormal()); + }; + } + + randomLogNormal.source = sourceRandomLogNormal; + + return randomLogNormal; +})(defaultSource); + +var irwinHall = (function sourceRandomIrwinHall(source) { + function randomIrwinHall(n) { + return function() { + for (var sum = 0, i = 0; i < n; ++i) sum += source(); + return sum; + }; + } + + randomIrwinHall.source = sourceRandomIrwinHall; + + return randomIrwinHall; +})(defaultSource); + +var bates = (function sourceRandomBates(source) { + function randomBates(n) { + var randomIrwinHall = irwinHall.source(source)(n); + return function() { + return randomIrwinHall() / n; + }; + } + + randomBates.source = sourceRandomBates; + + return randomBates; +})(defaultSource); + +var exponential = (function sourceRandomExponential(source) { + function randomExponential(lambda) { + return function() { + return -Math.log(1 - source()) / lambda; + }; + } + + randomExponential.source = sourceRandomExponential; + + return randomExponential; +})(defaultSource); + +exports.randomUniform = uniform; +exports.randomNormal = normal; +exports.randomLogNormal = logNormal; +exports.randomBates = bates; +exports.randomIrwinHall = irwinHall; +exports.randomExponential = exponential; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],45:[function(require,module,exports){ +// https://d3js.org/d3-scale-chromatic/ v1.3.3 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-interpolate'), require('d3-color')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-interpolate', 'd3-color'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3)); +}(this, (function (exports,d3Interpolate,d3Color) { 'use strict'; + +function colors(specifier) { + var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; + while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); + return colors; +} + +var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); + +var Accent = colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); + +var Dark2 = colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); + +var Paired = colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); + +var Pastel1 = colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); + +var Pastel2 = colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); + +var Set1 = colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); + +var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); + +var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); + +function ramp(scheme) { + return d3Interpolate.interpolateRgbBasis(scheme[scheme.length - 1]); +} + +var scheme = new Array(3).concat( + "d8b365f5f5f55ab4ac", + "a6611adfc27d80cdc1018571", + "a6611adfc27df5f5f580cdc1018571", + "8c510ad8b365f6e8c3c7eae55ab4ac01665e", + "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", + "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", + "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", + "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", + "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" +).map(colors); + +var BrBG = ramp(scheme); + +var scheme$1 = new Array(3).concat( + "af8dc3f7f7f77fbf7b", + "7b3294c2a5cfa6dba0008837", + "7b3294c2a5cff7f7f7a6dba0008837", + "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", + "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", + "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", + "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", + "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", + "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" +).map(colors); + +var PRGn = ramp(scheme$1); + +var scheme$2 = new Array(3).concat( + "e9a3c9f7f7f7a1d76a", + "d01c8bf1b6dab8e1864dac26", + "d01c8bf1b6daf7f7f7b8e1864dac26", + "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", + "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", + "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", + "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", + "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", + "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" +).map(colors); + +var PiYG = ramp(scheme$2); + +var scheme$3 = new Array(3).concat( + "998ec3f7f7f7f1a340", + "5e3c99b2abd2fdb863e66101", + "5e3c99b2abd2f7f7f7fdb863e66101", + "542788998ec3d8daebfee0b6f1a340b35806", + "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", + "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", + "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", + "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", + "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" +).map(colors); + +var PuOr = ramp(scheme$3); + +var scheme$4 = new Array(3).concat( + "ef8a62f7f7f767a9cf", + "ca0020f4a58292c5de0571b0", + "ca0020f4a582f7f7f792c5de0571b0", + "b2182bef8a62fddbc7d1e5f067a9cf2166ac", + "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", + "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", + "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", + "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", + "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" +).map(colors); + +var RdBu = ramp(scheme$4); + +var scheme$5 = new Array(3).concat( + "ef8a62ffffff999999", + "ca0020f4a582bababa404040", + "ca0020f4a582ffffffbababa404040", + "b2182bef8a62fddbc7e0e0e09999994d4d4d", + "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", + "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", + "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", + "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", + "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" +).map(colors); + +var RdGy = ramp(scheme$5); + +var scheme$6 = new Array(3).concat( + "fc8d59ffffbf91bfdb", + "d7191cfdae61abd9e92c7bb6", + "d7191cfdae61ffffbfabd9e92c7bb6", + "d73027fc8d59fee090e0f3f891bfdb4575b4", + "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", + "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", + "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", + "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", + "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" +).map(colors); + +var RdYlBu = ramp(scheme$6); + +var scheme$7 = new Array(3).concat( + "fc8d59ffffbf91cf60", + "d7191cfdae61a6d96a1a9641", + "d7191cfdae61ffffbfa6d96a1a9641", + "d73027fc8d59fee08bd9ef8b91cf601a9850", + "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", + "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", + "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", + "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", + "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" +).map(colors); + +var RdYlGn = ramp(scheme$7); + +var scheme$8 = new Array(3).concat( + "fc8d59ffffbf99d594", + "d7191cfdae61abdda42b83ba", + "d7191cfdae61ffffbfabdda42b83ba", + "d53e4ffc8d59fee08be6f59899d5943288bd", + "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", + "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", + "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", + "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", + "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" +).map(colors); + +var Spectral = ramp(scheme$8); + +var scheme$9 = new Array(3).concat( + "e5f5f999d8c92ca25f", + "edf8fbb2e2e266c2a4238b45", + "edf8fbb2e2e266c2a42ca25f006d2c", + "edf8fbccece699d8c966c2a42ca25f006d2c", + "edf8fbccece699d8c966c2a441ae76238b45005824", + "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", + "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" +).map(colors); + +var BuGn = ramp(scheme$9); + +var scheme$a = new Array(3).concat( + "e0ecf49ebcda8856a7", + "edf8fbb3cde38c96c688419d", + "edf8fbb3cde38c96c68856a7810f7c", + "edf8fbbfd3e69ebcda8c96c68856a7810f7c", + "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", + "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", + "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" +).map(colors); + +var BuPu = ramp(scheme$a); + +var scheme$b = new Array(3).concat( + "e0f3dba8ddb543a2ca", + "f0f9e8bae4bc7bccc42b8cbe", + "f0f9e8bae4bc7bccc443a2ca0868ac", + "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", + "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", + "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", + "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" +).map(colors); + +var GnBu = ramp(scheme$b); + +var scheme$c = new Array(3).concat( + "fee8c8fdbb84e34a33", + "fef0d9fdcc8afc8d59d7301f", + "fef0d9fdcc8afc8d59e34a33b30000", + "fef0d9fdd49efdbb84fc8d59e34a33b30000", + "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", + "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", + "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" +).map(colors); + +var OrRd = ramp(scheme$c); + +var scheme$d = new Array(3).concat( + "ece2f0a6bddb1c9099", + "f6eff7bdc9e167a9cf02818a", + "f6eff7bdc9e167a9cf1c9099016c59", + "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", + "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", + "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", + "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" +).map(colors); + +var PuBuGn = ramp(scheme$d); + +var scheme$e = new Array(3).concat( + "ece7f2a6bddb2b8cbe", + "f1eef6bdc9e174a9cf0570b0", + "f1eef6bdc9e174a9cf2b8cbe045a8d", + "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", + "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", + "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", + "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" +).map(colors); + +var PuBu = ramp(scheme$e); + +var scheme$f = new Array(3).concat( + "e7e1efc994c7dd1c77", + "f1eef6d7b5d8df65b0ce1256", + "f1eef6d7b5d8df65b0dd1c77980043", + "f1eef6d4b9dac994c7df65b0dd1c77980043", + "f1eef6d4b9dac994c7df65b0e7298ace125691003f", + "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", + "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" +).map(colors); + +var PuRd = ramp(scheme$f); + +var scheme$g = new Array(3).concat( + "fde0ddfa9fb5c51b8a", + "feebe2fbb4b9f768a1ae017e", + "feebe2fbb4b9f768a1c51b8a7a0177", + "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", + "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", + "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", + "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" +).map(colors); + +var RdPu = ramp(scheme$g); + +var scheme$h = new Array(3).concat( + "edf8b17fcdbb2c7fb8", + "ffffcca1dab441b6c4225ea8", + "ffffcca1dab441b6c42c7fb8253494", + "ffffccc7e9b47fcdbb41b6c42c7fb8253494", + "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", + "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", + "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" +).map(colors); + +var YlGnBu = ramp(scheme$h); + +var scheme$i = new Array(3).concat( + "f7fcb9addd8e31a354", + "ffffccc2e69978c679238443", + "ffffccc2e69978c67931a354006837", + "ffffccd9f0a3addd8e78c67931a354006837", + "ffffccd9f0a3addd8e78c67941ab5d238443005a32", + "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", + "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" +).map(colors); + +var YlGn = ramp(scheme$i); + +var scheme$j = new Array(3).concat( + "fff7bcfec44fd95f0e", + "ffffd4fed98efe9929cc4c02", + "ffffd4fed98efe9929d95f0e993404", + "ffffd4fee391fec44ffe9929d95f0e993404", + "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", + "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", + "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" +).map(colors); + +var YlOrBr = ramp(scheme$j); + +var scheme$k = new Array(3).concat( + "ffeda0feb24cf03b20", + "ffffb2fecc5cfd8d3ce31a1c", + "ffffb2fecc5cfd8d3cf03b20bd0026", + "ffffb2fed976feb24cfd8d3cf03b20bd0026", + "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", + "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", + "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" +).map(colors); + +var YlOrRd = ramp(scheme$k); + +var scheme$l = new Array(3).concat( + "deebf79ecae13182bd", + "eff3ffbdd7e76baed62171b5", + "eff3ffbdd7e76baed63182bd08519c", + "eff3ffc6dbef9ecae16baed63182bd08519c", + "eff3ffc6dbef9ecae16baed64292c62171b5084594", + "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", + "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" +).map(colors); + +var Blues = ramp(scheme$l); + +var scheme$m = new Array(3).concat( + "e5f5e0a1d99b31a354", + "edf8e9bae4b374c476238b45", + "edf8e9bae4b374c47631a354006d2c", + "edf8e9c7e9c0a1d99b74c47631a354006d2c", + "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", + "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", + "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" +).map(colors); + +var Greens = ramp(scheme$m); + +var scheme$n = new Array(3).concat( + "f0f0f0bdbdbd636363", + "f7f7f7cccccc969696525252", + "f7f7f7cccccc969696636363252525", + "f7f7f7d9d9d9bdbdbd969696636363252525", + "f7f7f7d9d9d9bdbdbd969696737373525252252525", + "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", + "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" +).map(colors); + +var Greys = ramp(scheme$n); + +var scheme$o = new Array(3).concat( + "efedf5bcbddc756bb1", + "f2f0f7cbc9e29e9ac86a51a3", + "f2f0f7cbc9e29e9ac8756bb154278f", + "f2f0f7dadaebbcbddc9e9ac8756bb154278f", + "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", + "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", + "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" +).map(colors); + +var Purples = ramp(scheme$o); + +var scheme$p = new Array(3).concat( + "fee0d2fc9272de2d26", + "fee5d9fcae91fb6a4acb181d", + "fee5d9fcae91fb6a4ade2d26a50f15", + "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", + "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", + "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", + "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" +).map(colors); + +var Reds = ramp(scheme$p); + +var scheme$q = new Array(3).concat( + "fee6cefdae6be6550d", + "feeddefdbe85fd8d3cd94701", + "feeddefdbe85fd8d3ce6550da63603", + "feeddefdd0a2fdae6bfd8d3ce6550da63603", + "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", + "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", + "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" +).map(colors); + +var Oranges = ramp(scheme$q); + +var cubehelix = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(300, 0.5, 0.0), d3Color.cubehelix(-240, 0.5, 1.0)); + +var warm = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(-100, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8)); + +var cool = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(260, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8)); + +var c = d3Color.cubehelix(); + +function rainbow(t) { + if (t < 0 || t > 1) t -= Math.floor(t); + var ts = Math.abs(t - 0.5); + c.h = 360 * t - 100; + c.s = 1.5 - 1.5 * ts; + c.l = 0.8 - 0.9 * ts; + return c + ""; +} + +var c$1 = d3Color.rgb(), + pi_1_3 = Math.PI / 3, + pi_2_3 = Math.PI * 2 / 3; + +function sinebow(t) { + var x; + t = (0.5 - t) * Math.PI; + c$1.r = 255 * (x = Math.sin(t)) * x; + c$1.g = 255 * (x = Math.sin(t + pi_1_3)) * x; + c$1.b = 255 * (x = Math.sin(t + pi_2_3)) * x; + return c$1 + ""; +} + +function ramp$1(range) { + var n = range.length; + return function(t) { + return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; + }; +} + +var viridis = ramp$1(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); + +var magma = ramp$1(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); + +var inferno = ramp$1(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); + +var plasma = ramp$1(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); + +exports.schemeCategory10 = category10; +exports.schemeAccent = Accent; +exports.schemeDark2 = Dark2; +exports.schemePaired = Paired; +exports.schemePastel1 = Pastel1; +exports.schemePastel2 = Pastel2; +exports.schemeSet1 = Set1; +exports.schemeSet2 = Set2; +exports.schemeSet3 = Set3; +exports.interpolateBrBG = BrBG; +exports.schemeBrBG = scheme; +exports.interpolatePRGn = PRGn; +exports.schemePRGn = scheme$1; +exports.interpolatePiYG = PiYG; +exports.schemePiYG = scheme$2; +exports.interpolatePuOr = PuOr; +exports.schemePuOr = scheme$3; +exports.interpolateRdBu = RdBu; +exports.schemeRdBu = scheme$4; +exports.interpolateRdGy = RdGy; +exports.schemeRdGy = scheme$5; +exports.interpolateRdYlBu = RdYlBu; +exports.schemeRdYlBu = scheme$6; +exports.interpolateRdYlGn = RdYlGn; +exports.schemeRdYlGn = scheme$7; +exports.interpolateSpectral = Spectral; +exports.schemeSpectral = scheme$8; +exports.interpolateBuGn = BuGn; +exports.schemeBuGn = scheme$9; +exports.interpolateBuPu = BuPu; +exports.schemeBuPu = scheme$a; +exports.interpolateGnBu = GnBu; +exports.schemeGnBu = scheme$b; +exports.interpolateOrRd = OrRd; +exports.schemeOrRd = scheme$c; +exports.interpolatePuBuGn = PuBuGn; +exports.schemePuBuGn = scheme$d; +exports.interpolatePuBu = PuBu; +exports.schemePuBu = scheme$e; +exports.interpolatePuRd = PuRd; +exports.schemePuRd = scheme$f; +exports.interpolateRdPu = RdPu; +exports.schemeRdPu = scheme$g; +exports.interpolateYlGnBu = YlGnBu; +exports.schemeYlGnBu = scheme$h; +exports.interpolateYlGn = YlGn; +exports.schemeYlGn = scheme$i; +exports.interpolateYlOrBr = YlOrBr; +exports.schemeYlOrBr = scheme$j; +exports.interpolateYlOrRd = YlOrRd; +exports.schemeYlOrRd = scheme$k; +exports.interpolateBlues = Blues; +exports.schemeBlues = scheme$l; +exports.interpolateGreens = Greens; +exports.schemeGreens = scheme$m; +exports.interpolateGreys = Greys; +exports.schemeGreys = scheme$n; +exports.interpolatePurples = Purples; +exports.schemePurples = scheme$o; +exports.interpolateReds = Reds; +exports.schemeReds = scheme$p; +exports.interpolateOranges = Oranges; +exports.schemeOranges = scheme$q; +exports.interpolateCubehelixDefault = cubehelix; +exports.interpolateRainbow = rainbow; +exports.interpolateWarm = warm; +exports.interpolateCool = cool; +exports.interpolateSinebow = sinebow; +exports.interpolateViridis = viridis; +exports.interpolateMagma = magma; +exports.interpolateInferno = inferno; +exports.interpolatePlasma = plasma; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-color":28,"d3-interpolate":40}],46:[function(require,module,exports){ +// https://d3js.org/d3-scale/ v2.2.2 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-collection'), require('d3-array'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-collection', 'd3-array', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3)); +}(this, (function (exports,d3Collection,d3Array,d3Interpolate,d3Format,d3Time,d3TimeFormat) { 'use strict'; + +function initRange(domain, range) { + switch (arguments.length) { + case 0: break; + case 1: this.range(domain); break; + default: this.range(range).domain(domain); break; + } + return this; +} + +function initInterpolator(domain, interpolator) { + switch (arguments.length) { + case 0: break; + case 1: this.interpolator(domain); break; + default: this.interpolator(interpolator).domain(domain); break; + } + return this; +} + +var array = Array.prototype; + +var map = array.map; +var slice = array.slice; + +var implicit = {name: "implicit"}; + +function ordinal() { + var index = d3Collection.map(), + domain = [], + range = [], + unknown = implicit; + + function scale(d) { + var key = d + "", i = index.get(key); + if (!i) { + if (unknown !== implicit) return unknown; + index.set(key, i = domain.push(d)); + } + return range[(i - 1) % range.length]; + } + + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = [], index = d3Collection.map(); + var i = -1, n = _.length, d, key; + while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d)); + return scale; + }; + + scale.range = function(_) { + return arguments.length ? (range = slice.call(_), scale) : range.slice(); + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + scale.copy = function() { + return ordinal(domain, range).unknown(unknown); + }; + + initRange.apply(scale, arguments); + + return scale; +} + +function band() { + var scale = ordinal().unknown(undefined), + domain = scale.domain, + ordinalRange = scale.range, + range = [0, 1], + step, + bandwidth, + round = false, + paddingInner = 0, + paddingOuter = 0, + align = 0.5; + + delete scale.unknown; + + function rescale() { + var n = domain().length, + reverse = range[1] < range[0], + start = range[reverse - 0], + stop = range[1 - reverse]; + step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); + if (round) step = Math.floor(step); + start += (stop - start - step * (n - paddingInner)) * align; + bandwidth = step * (1 - paddingInner); + if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); + var values = d3Array.range(n).map(function(i) { return start + step * i; }); + return ordinalRange(reverse ? values.reverse() : values); + } + + scale.domain = function(_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + + scale.range = function(_) { + return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice(); + }; + + scale.rangeRound = function(_) { + return range = [+_[0], +_[1]], round = true, rescale(); + }; + + scale.bandwidth = function() { + return bandwidth; + }; + + scale.step = function() { + return step; + }; + + scale.round = function(_) { + return arguments.length ? (round = !!_, rescale()) : round; + }; + + scale.padding = function(_) { + return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; + }; + + scale.paddingInner = function(_) { + return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; + }; + + scale.paddingOuter = function(_) { + return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; + }; + + scale.align = function(_) { + return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; + }; + + scale.copy = function() { + return band(domain(), range) + .round(round) + .paddingInner(paddingInner) + .paddingOuter(paddingOuter) + .align(align); + }; + + return initRange.apply(rescale(), arguments); +} + +function pointish(scale) { + var copy = scale.copy; + + scale.padding = scale.paddingOuter; + delete scale.paddingInner; + delete scale.paddingOuter; + + scale.copy = function() { + return pointish(copy()); + }; + + return scale; +} + +function point() { + return pointish(band.apply(null, arguments).paddingInner(1)); +} + +function constant(x) { + return function() { + return x; + }; +} + +function number(x) { + return +x; +} + +var unit = [0, 1]; + +function identity(x) { + return x; +} + +function normalize(a, b) { + return (b -= (a = +a)) + ? function(x) { return (x - a) / b; } + : constant(isNaN(b) ? NaN : 0.5); +} + +function clamper(domain) { + var a = domain[0], b = domain[domain.length - 1], t; + if (a > b) t = a, a = b, b = t; + return function(x) { return Math.max(a, Math.min(b, x)); }; +} + +// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. +// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. +function bimap(domain, range, interpolate) { + var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; + if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); + else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); + return function(x) { return r0(d0(x)); }; +} + +function polymap(domain, range, interpolate) { + var j = Math.min(domain.length, range.length) - 1, + d = new Array(j), + r = new Array(j), + i = -1; + + // Reverse descending domains. + if (domain[j] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + + while (++i < j) { + d[i] = normalize(domain[i], domain[i + 1]); + r[i] = interpolate(range[i], range[i + 1]); + } + + return function(x) { + var i = d3Array.bisect(domain, x, 1, j) - 1; + return r[i](d[i](x)); + }; +} + +function copy(source, target) { + return target + .domain(source.domain()) + .range(source.range()) + .interpolate(source.interpolate()) + .clamp(source.clamp()) + .unknown(source.unknown()); +} + +function transformer() { + var domain = unit, + range = unit, + interpolate = d3Interpolate.interpolate, + transform, + untransform, + unknown, + clamp = identity, + piecewise, + output, + input; + + function rescale() { + piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; + output = input = null; + return scale; + } + + function scale(x) { + return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); + } + + scale.invert = function(y) { + return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3Interpolate.interpolateNumber)))(y))); + }; + + scale.domain = function(_) { + return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice(); + }; + + scale.range = function(_) { + return arguments.length ? (range = slice.call(_), rescale()) : range.slice(); + }; + + scale.rangeRound = function(_) { + return range = slice.call(_), interpolate = d3Interpolate.interpolateRound, rescale(); + }; + + scale.clamp = function(_) { + return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity; + }; + + scale.interpolate = function(_) { + return arguments.length ? (interpolate = _, rescale()) : interpolate; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + return function(t, u) { + transform = t, untransform = u; + return rescale(); + }; +} + +function continuous(transform, untransform) { + return transformer()(transform, untransform); +} + +function tickFormat(start, stop, count, specifier) { + var step = d3Array.tickStep(start, stop, count), + precision; + specifier = d3Format.formatSpecifier(specifier == null ? ",f" : specifier); + switch (specifier.type) { + case "s": { + var value = Math.max(Math.abs(start), Math.abs(stop)); + if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision; + return d3Format.formatPrefix(specifier, value); + } + case "": + case "e": + case "g": + case "p": + case "r": { + if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); + break; + } + case "f": + case "%": { + if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; + break; + } + } + return d3Format.format(specifier); +} + +function linearish(scale) { + var domain = scale.domain; + + scale.ticks = function(count) { + var d = domain(); + return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count); + }; + + scale.tickFormat = function(count, specifier) { + var d = domain(); + return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); + }; + + scale.nice = function(count) { + if (count == null) count = 10; + + var d = domain(), + i0 = 0, + i1 = d.length - 1, + start = d[i0], + stop = d[i1], + step; + + if (stop < start) { + step = start, start = stop, stop = step; + step = i0, i0 = i1, i1 = step; + } + + step = d3Array.tickIncrement(start, stop, count); + + if (step > 0) { + start = Math.floor(start / step) * step; + stop = Math.ceil(stop / step) * step; + step = d3Array.tickIncrement(start, stop, count); + } else if (step < 0) { + start = Math.ceil(start * step) / step; + stop = Math.floor(stop * step) / step; + step = d3Array.tickIncrement(start, stop, count); + } + + if (step > 0) { + d[i0] = Math.floor(start / step) * step; + d[i1] = Math.ceil(stop / step) * step; + domain(d); + } else if (step < 0) { + d[i0] = Math.ceil(start * step) / step; + d[i1] = Math.floor(stop * step) / step; + domain(d); + } + + return scale; + }; + + return scale; +} + +function linear() { + var scale = continuous(identity, identity); + + scale.copy = function() { + return copy(scale, linear()); + }; + + initRange.apply(scale, arguments); + + return linearish(scale); +} + +function identity$1(domain) { + var unknown; + + function scale(x) { + return isNaN(x = +x) ? unknown : x; + } + + scale.invert = scale; + + scale.domain = scale.range = function(_) { + return arguments.length ? (domain = map.call(_, number), scale) : domain.slice(); + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + scale.copy = function() { + return identity$1(domain).unknown(unknown); + }; + + domain = arguments.length ? map.call(domain, number) : [0, 1]; + + return linearish(scale); +} + +function nice(domain, interval) { + domain = domain.slice(); + + var i0 = 0, + i1 = domain.length - 1, + x0 = domain[i0], + x1 = domain[i1], + t; + + if (x1 < x0) { + t = i0, i0 = i1, i1 = t; + t = x0, x0 = x1, x1 = t; + } + + domain[i0] = interval.floor(x0); + domain[i1] = interval.ceil(x1); + return domain; +} + +function transformLog(x) { + return Math.log(x); +} + +function transformExp(x) { + return Math.exp(x); +} + +function transformLogn(x) { + return -Math.log(-x); +} + +function transformExpn(x) { + return -Math.exp(-x); +} + +function pow10(x) { + return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; +} + +function powp(base) { + return base === 10 ? pow10 + : base === Math.E ? Math.exp + : function(x) { return Math.pow(base, x); }; +} + +function logp(base) { + return base === Math.E ? Math.log + : base === 10 && Math.log10 + || base === 2 && Math.log2 + || (base = Math.log(base), function(x) { return Math.log(x) / base; }); +} + +function reflect(f) { + return function(x) { + return -f(-x); + }; +} + +function loggish(transform) { + var scale = transform(transformLog, transformExp), + domain = scale.domain, + base = 10, + logs, + pows; + + function rescale() { + logs = logp(base), pows = powp(base); + if (domain()[0] < 0) { + logs = reflect(logs), pows = reflect(pows); + transform(transformLogn, transformExpn); + } else { + transform(transformLog, transformExp); + } + return scale; + } + + scale.base = function(_) { + return arguments.length ? (base = +_, rescale()) : base; + }; + + scale.domain = function(_) { + return arguments.length ? (domain(_), rescale()) : domain(); + }; + + scale.ticks = function(count) { + var d = domain(), + u = d[0], + v = d[d.length - 1], + r; + + if (r = v < u) i = u, u = v, v = i; + + var i = logs(u), + j = logs(v), + p, + k, + t, + n = count == null ? 10 : +count, + z = []; + + if (!(base % 1) && j - i < n) { + i = Math.round(i) - 1, j = Math.round(j) + 1; + if (u > 0) for (; i < j; ++i) { + for (k = 1, p = pows(i); k < base; ++k) { + t = p * k; + if (t < u) continue; + if (t > v) break; + z.push(t); + } + } else for (; i < j; ++i) { + for (k = base - 1, p = pows(i); k >= 1; --k) { + t = p * k; + if (t < u) continue; + if (t > v) break; + z.push(t); + } + } + } else { + z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows); + } + + return r ? z.reverse() : z; + }; + + scale.tickFormat = function(count, specifier) { + if (specifier == null) specifier = base === 10 ? ".0e" : ","; + if (typeof specifier !== "function") specifier = d3Format.format(specifier); + if (count === Infinity) return specifier; + if (count == null) count = 10; + var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? + return function(d) { + var i = d / pows(Math.round(logs(d))); + if (i * base < base - 0.5) i *= base; + return i <= k ? specifier(d) : ""; + }; + }; + + scale.nice = function() { + return domain(nice(domain(), { + floor: function(x) { return pows(Math.floor(logs(x))); }, + ceil: function(x) { return pows(Math.ceil(logs(x))); } + })); + }; + + return scale; +} + +function log() { + var scale = loggish(transformer()).domain([1, 10]); + + scale.copy = function() { + return copy(scale, log()).base(scale.base()); + }; + + initRange.apply(scale, arguments); + + return scale; +} + +function transformSymlog(c) { + return function(x) { + return Math.sign(x) * Math.log1p(Math.abs(x / c)); + }; +} + +function transformSymexp(c) { + return function(x) { + return Math.sign(x) * Math.expm1(Math.abs(x)) * c; + }; +} + +function symlogish(transform) { + var c = 1, scale = transform(transformSymlog(c), transformSymexp(c)); + + scale.constant = function(_) { + return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; + }; + + return linearish(scale); +} + +function symlog() { + var scale = symlogish(transformer()); + + scale.copy = function() { + return copy(scale, symlog()).constant(scale.constant()); + }; + + return initRange.apply(scale, arguments); +} + +function transformPow(exponent) { + return function(x) { + return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); + }; +} + +function transformSqrt(x) { + return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); +} + +function transformSquare(x) { + return x < 0 ? -x * x : x * x; +} + +function powish(transform) { + var scale = transform(identity, identity), + exponent = 1; + + function rescale() { + return exponent === 1 ? transform(identity, identity) + : exponent === 0.5 ? transform(transformSqrt, transformSquare) + : transform(transformPow(exponent), transformPow(1 / exponent)); + } + + scale.exponent = function(_) { + return arguments.length ? (exponent = +_, rescale()) : exponent; + }; + + return linearish(scale); +} + +function pow() { + var scale = powish(transformer()); + + scale.copy = function() { + return copy(scale, pow()).exponent(scale.exponent()); + }; + + initRange.apply(scale, arguments); + + return scale; +} + +function sqrt() { + return pow.apply(null, arguments).exponent(0.5); +} + +function quantile() { + var domain = [], + range = [], + thresholds = [], + unknown; + + function rescale() { + var i = 0, n = Math.max(1, range.length); + thresholds = new Array(n - 1); + while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n); + return scale; + } + + function scale(x) { + return isNaN(x = +x) ? unknown : range[d3Array.bisect(thresholds, x)]; + } + + scale.invertExtent = function(y) { + var i = range.indexOf(y); + return i < 0 ? [NaN, NaN] : [ + i > 0 ? thresholds[i - 1] : domain[0], + i < thresholds.length ? thresholds[i] : domain[domain.length - 1] + ]; + }; + + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); + domain.sort(d3Array.ascending); + return rescale(); + }; + + scale.range = function(_) { + return arguments.length ? (range = slice.call(_), rescale()) : range.slice(); + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + scale.quantiles = function() { + return thresholds.slice(); + }; + + scale.copy = function() { + return quantile() + .domain(domain) + .range(range) + .unknown(unknown); + }; + + return initRange.apply(scale, arguments); +} + +function quantize() { + var x0 = 0, + x1 = 1, + n = 1, + domain = [0.5], + range = [0, 1], + unknown; + + function scale(x) { + return x <= x ? range[d3Array.bisect(domain, x, 0, n)] : unknown; + } + + function rescale() { + var i = -1; + domain = new Array(n); + while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); + return scale; + } + + scale.domain = function(_) { + return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1]; + }; + + scale.range = function(_) { + return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice(); + }; + + scale.invertExtent = function(y) { + var i = range.indexOf(y); + return i < 0 ? [NaN, NaN] + : i < 1 ? [x0, domain[0]] + : i >= n ? [domain[n - 1], x1] + : [domain[i - 1], domain[i]]; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : scale; + }; + + scale.thresholds = function() { + return domain.slice(); + }; + + scale.copy = function() { + return quantize() + .domain([x0, x1]) + .range(range) + .unknown(unknown); + }; + + return initRange.apply(linearish(scale), arguments); +} + +function threshold() { + var domain = [0.5], + range = [0, 1], + unknown, + n = 1; + + function scale(x) { + return x <= x ? range[d3Array.bisect(domain, x, 0, n)] : unknown; + } + + scale.domain = function(_) { + return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); + }; + + scale.range = function(_) { + return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); + }; + + scale.invertExtent = function(y) { + var i = range.indexOf(y); + return [domain[i - 1], domain[i]]; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + scale.copy = function() { + return threshold() + .domain(domain) + .range(range) + .unknown(unknown); + }; + + return initRange.apply(scale, arguments); +} + +var durationSecond = 1000, + durationMinute = durationSecond * 60, + durationHour = durationMinute * 60, + durationDay = durationHour * 24, + durationWeek = durationDay * 7, + durationMonth = durationDay * 30, + durationYear = durationDay * 365; + +function date(t) { + return new Date(t); +} + +function number$1(t) { + return t instanceof Date ? +t : +new Date(+t); +} + +function calendar(year, month, week, day, hour, minute, second, millisecond, format) { + var scale = continuous(identity, identity), + invert = scale.invert, + domain = scale.domain; + + var formatMillisecond = format(".%L"), + formatSecond = format(":%S"), + formatMinute = format("%I:%M"), + formatHour = format("%I %p"), + formatDay = format("%a %d"), + formatWeek = format("%b %d"), + formatMonth = format("%B"), + formatYear = format("%Y"); + + var tickIntervals = [ + [second, 1, durationSecond], + [second, 5, 5 * durationSecond], + [second, 15, 15 * durationSecond], + [second, 30, 30 * durationSecond], + [minute, 1, durationMinute], + [minute, 5, 5 * durationMinute], + [minute, 15, 15 * durationMinute], + [minute, 30, 30 * durationMinute], + [ hour, 1, durationHour ], + [ hour, 3, 3 * durationHour ], + [ hour, 6, 6 * durationHour ], + [ hour, 12, 12 * durationHour ], + [ day, 1, durationDay ], + [ day, 2, 2 * durationDay ], + [ week, 1, durationWeek ], + [ month, 1, durationMonth ], + [ month, 3, 3 * durationMonth ], + [ year, 1, durationYear ] + ]; + + function tickFormat(date) { + return (second(date) < date ? formatMillisecond + : minute(date) < date ? formatSecond + : hour(date) < date ? formatMinute + : day(date) < date ? formatHour + : month(date) < date ? (week(date) < date ? formatDay : formatWeek) + : year(date) < date ? formatMonth + : formatYear)(date); + } + + function tickInterval(interval, start, stop, step) { + if (interval == null) interval = 10; + + // If a desired tick count is specified, pick a reasonable tick interval + // based on the extent of the domain and a rough estimate of tick size. + // Otherwise, assume interval is already a time interval and use it. + if (typeof interval === "number") { + var target = Math.abs(stop - start) / interval, + i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target); + if (i === tickIntervals.length) { + step = d3Array.tickStep(start / durationYear, stop / durationYear, interval); + interval = year; + } else if (i) { + i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; + step = i[1]; + interval = i[0]; + } else { + step = Math.max(d3Array.tickStep(start, stop, interval), 1); + interval = millisecond; + } + } + + return step == null ? interval : interval.every(step); + } + + scale.invert = function(y) { + return new Date(invert(y)); + }; + + scale.domain = function(_) { + return arguments.length ? domain(map.call(_, number$1)) : domain().map(date); + }; + + scale.ticks = function(interval, step) { + var d = domain(), + t0 = d[0], + t1 = d[d.length - 1], + r = t1 < t0, + t; + if (r) t = t0, t0 = t1, t1 = t; + t = tickInterval(interval, t0, t1, step); + t = t ? t.range(t0, t1 + 1) : []; // inclusive stop + return r ? t.reverse() : t; + }; + + scale.tickFormat = function(count, specifier) { + return specifier == null ? tickFormat : format(specifier); + }; + + scale.nice = function(interval, step) { + var d = domain(); + return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) + ? domain(nice(d, interval)) + : scale; + }; + + scale.copy = function() { + return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format)); + }; + + return scale; +} + +function time() { + return initRange.apply(calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); +} + +function utcTime() { + return initRange.apply(calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); +} + +function transformer$1() { + var x0 = 0, + x1 = 1, + t0, + t1, + k10, + transform, + interpolator = identity, + clamp = false, + unknown; + + function scale(x) { + return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); + } + + scale.domain = function(_) { + return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; + }; + + scale.clamp = function(_) { + return arguments.length ? (clamp = !!_, scale) : clamp; + }; + + scale.interpolator = function(_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + return function(t) { + transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); + return scale; + }; +} + +function copy$1(source, target) { + return target + .domain(source.domain()) + .interpolator(source.interpolator()) + .clamp(source.clamp()) + .unknown(source.unknown()); +} + +function sequential() { + var scale = linearish(transformer$1()(identity)); + + scale.copy = function() { + return copy$1(scale, sequential()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function sequentialLog() { + var scale = loggish(transformer$1()).domain([1, 10]); + + scale.copy = function() { + return copy$1(scale, sequentialLog()).base(scale.base()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function sequentialSymlog() { + var scale = symlogish(transformer$1()); + + scale.copy = function() { + return copy$1(scale, sequentialSymlog()).constant(scale.constant()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function sequentialPow() { + var scale = powish(transformer$1()); + + scale.copy = function() { + return copy$1(scale, sequentialPow()).exponent(scale.exponent()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function sequentialSqrt() { + return sequentialPow.apply(null, arguments).exponent(0.5); +} + +function sequentialQuantile() { + var domain = [], + interpolator = identity; + + function scale(x) { + if (!isNaN(x = +x)) return interpolator((d3Array.bisect(domain, x) - 1) / (domain.length - 1)); + } + + scale.domain = function(_) { + if (!arguments.length) return domain.slice(); + domain = []; + for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); + domain.sort(d3Array.ascending); + return scale; + }; + + scale.interpolator = function(_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + + scale.copy = function() { + return sequentialQuantile(interpolator).domain(domain); + }; + + return initInterpolator.apply(scale, arguments); +} + +function transformer$2() { + var x0 = 0, + x1 = 0.5, + x2 = 1, + t0, + t1, + t2, + k10, + k21, + interpolator = identity, + transform, + clamp = false, + unknown; + + function scale(x) { + return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); + } + + scale.domain = function(_) { + return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2]; + }; + + scale.clamp = function(_) { + return arguments.length ? (clamp = !!_, scale) : clamp; + }; + + scale.interpolator = function(_) { + return arguments.length ? (interpolator = _, scale) : interpolator; + }; + + scale.unknown = function(_) { + return arguments.length ? (unknown = _, scale) : unknown; + }; + + return function(t) { + transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1); + return scale; + }; +} + +function diverging() { + var scale = linearish(transformer$2()(identity)); + + scale.copy = function() { + return copy$1(scale, diverging()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function divergingLog() { + var scale = loggish(transformer$2()).domain([0.1, 1, 10]); + + scale.copy = function() { + return copy$1(scale, divergingLog()).base(scale.base()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function divergingSymlog() { + var scale = symlogish(transformer$2()); + + scale.copy = function() { + return copy$1(scale, divergingSymlog()).constant(scale.constant()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function divergingPow() { + var scale = powish(transformer$2()); + + scale.copy = function() { + return copy$1(scale, divergingPow()).exponent(scale.exponent()); + }; + + return initInterpolator.apply(scale, arguments); +} + +function divergingSqrt() { + return divergingPow.apply(null, arguments).exponent(0.5); +} + +exports.scaleBand = band; +exports.scalePoint = point; +exports.scaleIdentity = identity$1; +exports.scaleLinear = linear; +exports.scaleLog = log; +exports.scaleSymlog = symlog; +exports.scaleOrdinal = ordinal; +exports.scaleImplicit = implicit; +exports.scalePow = pow; +exports.scaleSqrt = sqrt; +exports.scaleQuantile = quantile; +exports.scaleQuantize = quantize; +exports.scaleThreshold = threshold; +exports.scaleTime = time; +exports.scaleUtc = utcTime; +exports.scaleSequential = sequential; +exports.scaleSequentialLog = sequentialLog; +exports.scaleSequentialPow = sequentialPow; +exports.scaleSequentialSqrt = sequentialSqrt; +exports.scaleSequentialSymlog = sequentialSymlog; +exports.scaleSequentialQuantile = sequentialQuantile; +exports.scaleDiverging = diverging; +exports.scaleDivergingLog = divergingLog; +exports.scaleDivergingPow = divergingPow; +exports.scaleDivergingSqrt = divergingSqrt; +exports.scaleDivergingSymlog = divergingSymlog; +exports.tickFormat = tickFormat; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-array":23,"d3-collection":27,"d3-format":37,"d3-interpolate":40,"d3-time":50,"d3-time-format":49}],47:[function(require,module,exports){ +// https://d3js.org/d3-selection/ v1.4.0 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var xhtml = "http://www.w3.org/1999/xhtml"; + +var namespaces = { + svg: "http://www.w3.org/2000/svg", + xhtml: xhtml, + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +}; + +function namespace(name) { + var prefix = name += "", i = prefix.indexOf(":"); + if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); + return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; +} + +function creatorInherit(name) { + return function() { + var document = this.ownerDocument, + uri = this.namespaceURI; + return uri === xhtml && document.documentElement.namespaceURI === xhtml + ? document.createElement(name) + : document.createElementNS(uri, name); + }; +} + +function creatorFixed(fullname) { + return function() { + return this.ownerDocument.createElementNS(fullname.space, fullname.local); + }; +} + +function creator(name) { + var fullname = namespace(name); + return (fullname.local + ? creatorFixed + : creatorInherit)(fullname); +} + +function none() {} + +function selector(selector) { + return selector == null ? none : function() { + return this.querySelector(selector); + }; +} + +function selection_select(select) { + if (typeof select !== "function") select = selector(select); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { + if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + subgroup[i] = subnode; + } + } + } + + return new Selection(subgroups, this._parents); +} + +function empty() { + return []; +} + +function selectorAll(selector) { + return selector == null ? empty : function() { + return this.querySelectorAll(selector); + }; +} + +function selection_selectAll(select) { + if (typeof select !== "function") select = selectorAll(select); + + for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { + if (node = group[i]) { + subgroups.push(select.call(node, node.__data__, i, group)); + parents.push(node); + } + } + } + + return new Selection(subgroups, parents); +} + +function matcher(selector) { + return function() { + return this.matches(selector); + }; +} + +function selection_filter(match) { + if (typeof match !== "function") match = matcher(match); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { + if ((node = group[i]) && match.call(node, node.__data__, i, group)) { + subgroup.push(node); + } + } + } + + return new Selection(subgroups, this._parents); +} + +function sparse(update) { + return new Array(update.length); +} + +function selection_enter() { + return new Selection(this._enter || this._groups.map(sparse), this._parents); +} + +function EnterNode(parent, datum) { + this.ownerDocument = parent.ownerDocument; + this.namespaceURI = parent.namespaceURI; + this._next = null; + this._parent = parent; + this.__data__ = datum; +} + +EnterNode.prototype = { + constructor: EnterNode, + appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, + insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, + querySelector: function(selector) { return this._parent.querySelector(selector); }, + querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } +}; + +function constant(x) { + return function() { + return x; + }; +} + +var keyPrefix = "$"; // Protect against keys like “__proto__”. + +function bindIndex(parent, group, enter, update, exit, data) { + var i = 0, + node, + groupLength = group.length, + dataLength = data.length; + + // Put any non-null nodes that fit into update. + // Put any null nodes into enter. + // Put any remaining data into enter. + for (; i < dataLength; ++i) { + if (node = group[i]) { + node.__data__ = data[i]; + update[i] = node; + } else { + enter[i] = new EnterNode(parent, data[i]); + } + } + + // Put any non-null nodes that don’t fit into exit. + for (; i < groupLength; ++i) { + if (node = group[i]) { + exit[i] = node; + } + } +} + +function bindKey(parent, group, enter, update, exit, data, key) { + var i, + node, + nodeByKeyValue = {}, + groupLength = group.length, + dataLength = data.length, + keyValues = new Array(groupLength), + keyValue; + + // Compute the key for each node. + // If multiple nodes have the same key, the duplicates are added to exit. + for (i = 0; i < groupLength; ++i) { + if (node = group[i]) { + keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); + if (keyValue in nodeByKeyValue) { + exit[i] = node; + } else { + nodeByKeyValue[keyValue] = node; + } + } + } + + // Compute the key for each datum. + // If there a node associated with this key, join and add it to update. + // If there is not (or the key is a duplicate), add it to enter. + for (i = 0; i < dataLength; ++i) { + keyValue = keyPrefix + key.call(parent, data[i], i, data); + if (node = nodeByKeyValue[keyValue]) { + update[i] = node; + node.__data__ = data[i]; + nodeByKeyValue[keyValue] = null; + } else { + enter[i] = new EnterNode(parent, data[i]); + } + } + + // Add any remaining nodes that were not bound to data to exit. + for (i = 0; i < groupLength; ++i) { + if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { + exit[i] = node; + } + } +} + +function selection_data(value, key) { + if (!value) { + data = new Array(this.size()), j = -1; + this.each(function(d) { data[++j] = d; }); + return data; + } + + var bind = key ? bindKey : bindIndex, + parents = this._parents, + groups = this._groups; + + if (typeof value !== "function") value = constant(value); + + for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { + var parent = parents[j], + group = groups[j], + groupLength = group.length, + data = value.call(parent, parent && parent.__data__, j, parents), + dataLength = data.length, + enterGroup = enter[j] = new Array(dataLength), + updateGroup = update[j] = new Array(dataLength), + exitGroup = exit[j] = new Array(groupLength); + + bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); + + // Now connect the enter nodes to their following update node, such that + // appendChild can insert the materialized enter node before this node, + // rather than at the end of the parent node. + for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { + if (previous = enterGroup[i0]) { + if (i0 >= i1) i1 = i0 + 1; + while (!(next = updateGroup[i1]) && ++i1 < dataLength); + previous._next = next || null; + } + } + } + + update = new Selection(update, parents); + update._enter = enter; + update._exit = exit; + return update; +} + +function selection_exit() { + return new Selection(this._exit || this._groups.map(sparse), this._parents); +} + +function selection_join(onenter, onupdate, onexit) { + var enter = this.enter(), update = this, exit = this.exit(); + enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); + if (onupdate != null) update = onupdate(update); + if (onexit == null) exit.remove(); else onexit(exit); + return enter && update ? enter.merge(update).order() : update; +} + +function selection_merge(selection$$1) { + + for (var groups0 = this._groups, groups1 = selection$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { + for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group0[i] || group1[i]) { + merge[i] = node; + } + } + } + + for (; j < m0; ++j) { + merges[j] = groups0[j]; + } + + return new Selection(merges, this._parents); +} + +function selection_order() { + + for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { + for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { + if (node = group[i]) { + if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + + return this; +} + +function selection_sort(compare) { + if (!compare) compare = ascending; + + function compareNode(a, b) { + return a && b ? compare(a.__data__, b.__data__) : !a - !b; + } + + for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group[i]) { + sortgroup[i] = node; + } + } + sortgroup.sort(compareNode); + } + + return new Selection(sortgroups, this._parents).order(); +} + +function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; +} + +function selection_call() { + var callback = arguments[0]; + arguments[0] = this; + callback.apply(null, arguments); + return this; +} + +function selection_nodes() { + var nodes = new Array(this.size()), i = -1; + this.each(function() { nodes[++i] = this; }); + return nodes; +} + +function selection_node() { + + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { + var node = group[i]; + if (node) return node; + } + } + + return null; +} + +function selection_size() { + var size = 0; + this.each(function() { ++size; }); + return size; +} + +function selection_empty() { + return !this.node(); +} + +function selection_each(callback) { + + for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { + if (node = group[i]) callback.call(node, node.__data__, i, group); + } + } + + return this; +} + +function attrRemove(name) { + return function() { + this.removeAttribute(name); + }; +} + +function attrRemoveNS(fullname) { + return function() { + this.removeAttributeNS(fullname.space, fullname.local); + }; +} + +function attrConstant(name, value) { + return function() { + this.setAttribute(name, value); + }; +} + +function attrConstantNS(fullname, value) { + return function() { + this.setAttributeNS(fullname.space, fullname.local, value); + }; +} + +function attrFunction(name, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.removeAttribute(name); + else this.setAttribute(name, v); + }; +} + +function attrFunctionNS(fullname, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.removeAttributeNS(fullname.space, fullname.local); + else this.setAttributeNS(fullname.space, fullname.local, v); + }; +} + +function selection_attr(name, value) { + var fullname = namespace(name); + + if (arguments.length < 2) { + var node = this.node(); + return fullname.local + ? node.getAttributeNS(fullname.space, fullname.local) + : node.getAttribute(fullname); + } + + return this.each((value == null + ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" + ? (fullname.local ? attrFunctionNS : attrFunction) + : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); +} + +function defaultView(node) { + return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node + || (node.document && node) // node is a Window + || node.defaultView; // node is a Document +} + +function styleRemove(name) { + return function() { + this.style.removeProperty(name); + }; +} + +function styleConstant(name, value, priority) { + return function() { + this.style.setProperty(name, value, priority); + }; +} + +function styleFunction(name, value, priority) { + return function() { + var v = value.apply(this, arguments); + if (v == null) this.style.removeProperty(name); + else this.style.setProperty(name, v, priority); + }; +} + +function selection_style(name, value, priority) { + return arguments.length > 1 + ? this.each((value == null + ? styleRemove : typeof value === "function" + ? styleFunction + : styleConstant)(name, value, priority == null ? "" : priority)) + : styleValue(this.node(), name); +} + +function styleValue(node, name) { + return node.style.getPropertyValue(name) + || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); +} + +function propertyRemove(name) { + return function() { + delete this[name]; + }; +} + +function propertyConstant(name, value) { + return function() { + this[name] = value; + }; +} + +function propertyFunction(name, value) { + return function() { + var v = value.apply(this, arguments); + if (v == null) delete this[name]; + else this[name] = v; + }; +} + +function selection_property(name, value) { + return arguments.length > 1 + ? this.each((value == null + ? propertyRemove : typeof value === "function" + ? propertyFunction + : propertyConstant)(name, value)) + : this.node()[name]; +} + +function classArray(string) { + return string.trim().split(/^|\s+/); +} + +function classList(node) { + return node.classList || new ClassList(node); +} + +function ClassList(node) { + this._node = node; + this._names = classArray(node.getAttribute("class") || ""); +} + +ClassList.prototype = { + add: function(name) { + var i = this._names.indexOf(name); + if (i < 0) { + this._names.push(name); + this._node.setAttribute("class", this._names.join(" ")); + } + }, + remove: function(name) { + var i = this._names.indexOf(name); + if (i >= 0) { + this._names.splice(i, 1); + this._node.setAttribute("class", this._names.join(" ")); + } + }, + contains: function(name) { + return this._names.indexOf(name) >= 0; + } +}; + +function classedAdd(node, names) { + var list = classList(node), i = -1, n = names.length; + while (++i < n) list.add(names[i]); +} + +function classedRemove(node, names) { + var list = classList(node), i = -1, n = names.length; + while (++i < n) list.remove(names[i]); +} + +function classedTrue(names) { + return function() { + classedAdd(this, names); + }; +} + +function classedFalse(names) { + return function() { + classedRemove(this, names); + }; +} + +function classedFunction(names, value) { + return function() { + (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); + }; +} + +function selection_classed(name, value) { + var names = classArray(name + ""); + + if (arguments.length < 2) { + var list = classList(this.node()), i = -1, n = names.length; + while (++i < n) if (!list.contains(names[i])) return false; + return true; + } + + return this.each((typeof value === "function" + ? classedFunction : value + ? classedTrue + : classedFalse)(names, value)); +} + +function textRemove() { + this.textContent = ""; +} + +function textConstant(value) { + return function() { + this.textContent = value; + }; +} + +function textFunction(value) { + return function() { + var v = value.apply(this, arguments); + this.textContent = v == null ? "" : v; + }; +} + +function selection_text(value) { + return arguments.length + ? this.each(value == null + ? textRemove : (typeof value === "function" + ? textFunction + : textConstant)(value)) + : this.node().textContent; +} + +function htmlRemove() { + this.innerHTML = ""; +} + +function htmlConstant(value) { + return function() { + this.innerHTML = value; + }; +} + +function htmlFunction(value) { + return function() { + var v = value.apply(this, arguments); + this.innerHTML = v == null ? "" : v; + }; +} + +function selection_html(value) { + return arguments.length + ? this.each(value == null + ? htmlRemove : (typeof value === "function" + ? htmlFunction + : htmlConstant)(value)) + : this.node().innerHTML; +} + +function raise() { + if (this.nextSibling) this.parentNode.appendChild(this); +} + +function selection_raise() { + return this.each(raise); +} + +function lower() { + if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); +} + +function selection_lower() { + return this.each(lower); +} + +function selection_append(name) { + var create = typeof name === "function" ? name : creator(name); + return this.select(function() { + return this.appendChild(create.apply(this, arguments)); + }); +} + +function constantNull() { + return null; +} + +function selection_insert(name, before) { + var create = typeof name === "function" ? name : creator(name), + select = before == null ? constantNull : typeof before === "function" ? before : selector(before); + return this.select(function() { + return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); + }); +} + +function remove() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); +} + +function selection_remove() { + return this.each(remove); +} + +function selection_cloneShallow() { + return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling); +} + +function selection_cloneDeep() { + return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling); +} + +function selection_clone(deep) { + return this.select(deep ? selection_cloneDeep : selection_cloneShallow); +} + +function selection_datum(value) { + return arguments.length + ? this.property("__data__", value) + : this.node().__data__; +} + +var filterEvents = {}; + +exports.event = null; + +if (typeof document !== "undefined") { + var element = document.documentElement; + if (!("onmouseenter" in element)) { + filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; + } +} + +function filterContextListener(listener, index, group) { + listener = contextListener(listener, index, group); + return function(event) { + var related = event.relatedTarget; + if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { + listener.call(this, event); + } + }; +} + +function contextListener(listener, index, group) { + return function(event1) { + var event0 = exports.event; // Events can be reentrant (e.g., focus). + exports.event = event1; + try { + listener.call(this, this.__data__, index, group); + } finally { + exports.event = event0; + } + }; +} + +function parseTypenames(typenames) { + return typenames.trim().split(/^|\s+/).map(function(t) { + var name = "", i = t.indexOf("."); + if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); + return {type: t, name: name}; + }); +} + +function onRemove(typename) { + return function() { + var on = this.__on; + if (!on) return; + for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { + if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { + this.removeEventListener(o.type, o.listener, o.capture); + } else { + on[++i] = o; + } + } + if (++i) on.length = i; + else delete this.__on; + }; +} + +function onAdd(typename, value, capture) { + var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; + return function(d, i, group) { + var on = this.__on, o, listener = wrap(value, i, group); + if (on) for (var j = 0, m = on.length; j < m; ++j) { + if ((o = on[j]).type === typename.type && o.name === typename.name) { + this.removeEventListener(o.type, o.listener, o.capture); + this.addEventListener(o.type, o.listener = listener, o.capture = capture); + o.value = value; + return; + } + } + this.addEventListener(typename.type, listener, capture); + o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; + if (!on) this.__on = [o]; + else on.push(o); + }; +} + +function selection_on(typename, value, capture) { + var typenames = parseTypenames(typename + ""), i, n = typenames.length, t; + + if (arguments.length < 2) { + var on = this.node().__on; + if (on) for (var j = 0, m = on.length, o; j < m; ++j) { + for (i = 0, o = on[j]; i < n; ++i) { + if ((t = typenames[i]).type === o.type && t.name === o.name) { + return o.value; + } + } + } + return; + } + + on = value ? onAdd : onRemove; + if (capture == null) capture = false; + for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); + return this; +} + +function customEvent(event1, listener, that, args) { + var event0 = exports.event; + event1.sourceEvent = exports.event; + exports.event = event1; + try { + return listener.apply(that, args); + } finally { + exports.event = event0; + } +} + +function dispatchEvent(node, type, params) { + var window = defaultView(node), + event = window.CustomEvent; + + if (typeof event === "function") { + event = new event(type, params); + } else { + event = window.document.createEvent("Event"); + if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; + else event.initEvent(type, false, false); + } + + node.dispatchEvent(event); +} + +function dispatchConstant(type, params) { + return function() { + return dispatchEvent(this, type, params); + }; +} + +function dispatchFunction(type, params) { + return function() { + return dispatchEvent(this, type, params.apply(this, arguments)); + }; +} + +function selection_dispatch(type, params) { + return this.each((typeof params === "function" + ? dispatchFunction + : dispatchConstant)(type, params)); +} + +var root = [null]; + +function Selection(groups, parents) { + this._groups = groups; + this._parents = parents; +} + +function selection() { + return new Selection([[document.documentElement]], root); +} + +Selection.prototype = selection.prototype = { + constructor: Selection, + select: selection_select, + selectAll: selection_selectAll, + filter: selection_filter, + data: selection_data, + enter: selection_enter, + exit: selection_exit, + join: selection_join, + merge: selection_merge, + order: selection_order, + sort: selection_sort, + call: selection_call, + nodes: selection_nodes, + node: selection_node, + size: selection_size, + empty: selection_empty, + each: selection_each, + attr: selection_attr, + style: selection_style, + property: selection_property, + classed: selection_classed, + text: selection_text, + html: selection_html, + raise: selection_raise, + lower: selection_lower, + append: selection_append, + insert: selection_insert, + remove: selection_remove, + clone: selection_clone, + datum: selection_datum, + on: selection_on, + dispatch: selection_dispatch +}; + +function select(selector) { + return typeof selector === "string" + ? new Selection([[document.querySelector(selector)]], [document.documentElement]) + : new Selection([[selector]], root); +} + +function create(name) { + return select(creator(name).call(document.documentElement)); +} + +var nextId = 0; + +function local() { + return new Local; +} + +function Local() { + this._ = "@" + (++nextId).toString(36); +} + +Local.prototype = local.prototype = { + constructor: Local, + get: function(node) { + var id = this._; + while (!(id in node)) if (!(node = node.parentNode)) return; + return node[id]; + }, + set: function(node, value) { + return node[this._] = value; + }, + remove: function(node) { + return this._ in node && delete node[this._]; + }, + toString: function() { + return this._; + } +}; + +function sourceEvent() { + var current = exports.event, source; + while (source = current.sourceEvent) current = source; + return current; +} + +function point(node, event) { + var svg = node.ownerSVGElement || node; + + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + point.x = event.clientX, point.y = event.clientY; + point = point.matrixTransform(node.getScreenCTM().inverse()); + return [point.x, point.y]; + } + + var rect = node.getBoundingClientRect(); + return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; +} + +function mouse(node) { + var event = sourceEvent(); + if (event.changedTouches) event = event.changedTouches[0]; + return point(node, event); +} + +function selectAll(selector) { + return typeof selector === "string" + ? new Selection([document.querySelectorAll(selector)], [document.documentElement]) + : new Selection([selector == null ? [] : selector], root); +} + +function touch(node, touches, identifier) { + if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; + + for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { + if ((touch = touches[i]).identifier === identifier) { + return point(node, touch); + } + } + + return null; +} + +function touches(node, touches) { + if (touches == null) touches = sourceEvent().touches; + + for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) { + points[i] = point(node, touches[i]); + } + + return points; +} + +exports.create = create; +exports.creator = creator; +exports.local = local; +exports.matcher = matcher; +exports.mouse = mouse; +exports.namespace = namespace; +exports.namespaces = namespaces; +exports.clientPoint = point; +exports.select = select; +exports.selectAll = selectAll; +exports.selection = selection; +exports.selector = selector; +exports.selectorAll = selectorAll; +exports.style = styleValue; +exports.touch = touch; +exports.touches = touches; +exports.window = defaultView; +exports.customEvent = customEvent; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],48:[function(require,module,exports){ +// https://d3js.org/d3-shape/ v1.3.5 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-path')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-path'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3)); +}(this, (function (exports,d3Path) { 'use strict'; + +function constant(x) { + return function constant() { + return x; + }; +} + +var abs = Math.abs; +var atan2 = Math.atan2; +var cos = Math.cos; +var max = Math.max; +var min = Math.min; +var sin = Math.sin; +var sqrt = Math.sqrt; + +var epsilon = 1e-12; +var pi = Math.PI; +var halfPi = pi / 2; +var tau = 2 * pi; + +function acos(x) { + return x > 1 ? 0 : x < -1 ? pi : Math.acos(x); +} + +function asin(x) { + return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x); +} + +function arcInnerRadius(d) { + return d.innerRadius; +} + +function arcOuterRadius(d) { + return d.outerRadius; +} + +function arcStartAngle(d) { + return d.startAngle; +} + +function arcEndAngle(d) { + return d.endAngle; +} + +function arcPadAngle(d) { + return d && d.padAngle; // Note: optional! +} + +function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { + var x10 = x1 - x0, y10 = y1 - y0, + x32 = x3 - x2, y32 = y3 - y2, + t = y32 * x10 - x32 * y10; + if (t * t < epsilon) return; + t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; + return [x0 + t * x10, y0 + t * y10]; +} + +// Compute perpendicular offset line of length rc. +// http://mathworld.wolfram.com/Circle-LineIntersection.html +function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { + var x01 = x0 - x1, + y01 = y0 - y1, + lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), + ox = lo * y01, + oy = -lo * x01, + x11 = x0 + ox, + y11 = y0 + oy, + x10 = x1 + ox, + y10 = y1 + oy, + x00 = (x11 + x10) / 2, + y00 = (y11 + y10) / 2, + dx = x10 - x11, + dy = y10 - y11, + d2 = dx * dx + dy * dy, + r = r1 - rc, + D = x11 * y10 - x10 * y11, + d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)), + cx0 = (D * dy - dx * d) / d2, + cy0 = (-D * dx - dy * d) / d2, + cx1 = (D * dy + dx * d) / d2, + cy1 = (-D * dx + dy * d) / d2, + dx0 = cx0 - x00, + dy0 = cy0 - y00, + dx1 = cx1 - x00, + dy1 = cy1 - y00; + + // Pick the closer of the two intersection points. + // TODO Is there a faster way to determine which intersection to use? + if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; + + return { + cx: cx0, + cy: cy0, + x01: -ox, + y01: -oy, + x11: cx0 * (r1 / r - 1), + y11: cy0 * (r1 / r - 1) + }; +} + +function arc() { + var innerRadius = arcInnerRadius, + outerRadius = arcOuterRadius, + cornerRadius = constant(0), + padRadius = null, + startAngle = arcStartAngle, + endAngle = arcEndAngle, + padAngle = arcPadAngle, + context = null; + + function arc() { + var buffer, + r, + r0 = +innerRadius.apply(this, arguments), + r1 = +outerRadius.apply(this, arguments), + a0 = startAngle.apply(this, arguments) - halfPi, + a1 = endAngle.apply(this, arguments) - halfPi, + da = abs(a1 - a0), + cw = a1 > a0; + + if (!context) context = buffer = d3Path.path(); + + // Ensure that the outer radius is always larger than the inner radius. + if (r1 < r0) r = r1, r1 = r0, r0 = r; + + // Is it a point? + if (!(r1 > epsilon)) context.moveTo(0, 0); + + // Or is it a circle or annulus? + else if (da > tau - epsilon) { + context.moveTo(r1 * cos(a0), r1 * sin(a0)); + context.arc(0, 0, r1, a0, a1, !cw); + if (r0 > epsilon) { + context.moveTo(r0 * cos(a1), r0 * sin(a1)); + context.arc(0, 0, r0, a1, a0, cw); + } + } + + // Or is it a circular or annular sector? + else { + var a01 = a0, + a11 = a1, + a00 = a0, + a10 = a1, + da0 = da, + da1 = da, + ap = padAngle.apply(this, arguments) / 2, + rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), + rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), + rc0 = rc, + rc1 = rc, + t0, + t1; + + // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. + if (rp > epsilon) { + var p0 = asin(rp / r0 * sin(ap)), + p1 = asin(rp / r1 * sin(ap)); + if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; + else da0 = 0, a00 = a10 = (a0 + a1) / 2; + if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; + else da1 = 0, a01 = a11 = (a0 + a1) / 2; + } + + var x01 = r1 * cos(a01), + y01 = r1 * sin(a01), + x10 = r0 * cos(a10), + y10 = r0 * sin(a10); + + // Apply rounded corners? + if (rc > epsilon) { + var x11 = r1 * cos(a11), + y11 = r1 * sin(a11), + x00 = r0 * cos(a00), + y00 = r0 * sin(a00), + oc; + + // Restrict the corner radius according to the sector angle. + if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) { + var ax = x01 - oc[0], + ay = y01 - oc[1], + bx = x11 - oc[0], + by = y11 - oc[1], + kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), + lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]); + rc0 = min(rc, (r0 - lc) / (kc - 1)); + rc1 = min(rc, (r1 - lc) / (kc + 1)); + } + } + + // Is the sector collapsed to a line? + if (!(da1 > epsilon)) context.moveTo(x01, y01); + + // Does the sector’s outer ring have rounded corners? + else if (rc1 > epsilon) { + t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); + t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); + + context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); + + // Have the corners merged? + if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); + + // Otherwise, draw the two corners and the ring. + else { + context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); + context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw); + context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); + } + } + + // Or is the outer ring just a circular arc? + else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); + + // Is there no inner ring, and it’s a circular sector? + // Or perhaps it’s an annular sector collapsed due to padding? + if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10); + + // Does the sector’s inner ring (or point) have rounded corners? + else if (rc0 > epsilon) { + t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); + t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); + + context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); + + // Have the corners merged? + if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); + + // Otherwise, draw the two corners and the ring. + else { + context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); + context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw); + context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); + } + } + + // Or is the inner ring just a circular arc? + else context.arc(0, 0, r0, a10, a00, cw); + } + + context.closePath(); + + if (buffer) return context = null, buffer + "" || null; + } + + arc.centroid = function() { + var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, + a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2; + return [cos(a) * r, sin(a) * r]; + }; + + arc.innerRadius = function(_) { + return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant(+_), arc) : innerRadius; + }; + + arc.outerRadius = function(_) { + return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant(+_), arc) : outerRadius; + }; + + arc.cornerRadius = function(_) { + return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant(+_), arc) : cornerRadius; + }; + + arc.padRadius = function(_) { + return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant(+_), arc) : padRadius; + }; + + arc.startAngle = function(_) { + return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), arc) : startAngle; + }; + + arc.endAngle = function(_) { + return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), arc) : endAngle; + }; + + arc.padAngle = function(_) { + return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), arc) : padAngle; + }; + + arc.context = function(_) { + return arguments.length ? ((context = _ == null ? null : _), arc) : context; + }; + + return arc; +} + +function Linear(context) { + this._context = context; +} + +Linear.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; // proceed + default: this._context.lineTo(x, y); break; + } + } +}; + +function curveLinear(context) { + return new Linear(context); +} + +function x(p) { + return p[0]; +} + +function y(p) { + return p[1]; +} + +function line() { + var x$$1 = x, + y$$1 = y, + defined = constant(true), + context = null, + curve = curveLinear, + output = null; + + function line(data) { + var i, + n = data.length, + d, + defined0 = false, + buffer; + + if (context == null) output = curve(buffer = d3Path.path()); + + for (i = 0; i <= n; ++i) { + if (!(i < n && defined(d = data[i], i, data)) === defined0) { + if (defined0 = !defined0) output.lineStart(); + else output.lineEnd(); + } + if (defined0) output.point(+x$$1(d, i, data), +y$$1(d, i, data)); + } + + if (buffer) return output = null, buffer + "" || null; + } + + line.x = function(_) { + return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant(+_), line) : x$$1; + }; + + line.y = function(_) { + return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant(+_), line) : y$$1; + }; + + line.defined = function(_) { + return arguments.length ? (defined = typeof _ === "function" ? _ : constant(!!_), line) : defined; + }; + + line.curve = function(_) { + return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; + }; + + line.context = function(_) { + return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; + }; + + return line; +} + +function area() { + var x0 = x, + x1 = null, + y0 = constant(0), + y1 = y, + defined = constant(true), + context = null, + curve = curveLinear, + output = null; + + function area(data) { + var i, + j, + k, + n = data.length, + d, + defined0 = false, + buffer, + x0z = new Array(n), + y0z = new Array(n); + + if (context == null) output = curve(buffer = d3Path.path()); + + for (i = 0; i <= n; ++i) { + if (!(i < n && defined(d = data[i], i, data)) === defined0) { + if (defined0 = !defined0) { + j = i; + output.areaStart(); + output.lineStart(); + } else { + output.lineEnd(); + output.lineStart(); + for (k = i - 1; k >= j; --k) { + output.point(x0z[k], y0z[k]); + } + output.lineEnd(); + output.areaEnd(); + } + } + if (defined0) { + x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); + output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); + } + } + + if (buffer) return output = null, buffer + "" || null; + } + + function arealine() { + return line().defined(defined).curve(curve).context(context); + } + + area.x = function(_) { + return arguments.length ? (x0 = typeof _ === "function" ? _ : constant(+_), x1 = null, area) : x0; + }; + + area.x0 = function(_) { + return arguments.length ? (x0 = typeof _ === "function" ? _ : constant(+_), area) : x0; + }; + + area.x1 = function(_) { + return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant(+_), area) : x1; + }; + + area.y = function(_) { + return arguments.length ? (y0 = typeof _ === "function" ? _ : constant(+_), y1 = null, area) : y0; + }; + + area.y0 = function(_) { + return arguments.length ? (y0 = typeof _ === "function" ? _ : constant(+_), area) : y0; + }; + + area.y1 = function(_) { + return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant(+_), area) : y1; + }; + + area.lineX0 = + area.lineY0 = function() { + return arealine().x(x0).y(y0); + }; + + area.lineY1 = function() { + return arealine().x(x0).y(y1); + }; + + area.lineX1 = function() { + return arealine().x(x1).y(y0); + }; + + area.defined = function(_) { + return arguments.length ? (defined = typeof _ === "function" ? _ : constant(!!_), area) : defined; + }; + + area.curve = function(_) { + return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; + }; + + area.context = function(_) { + return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; + }; + + return area; +} + +function descending(a, b) { + return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; +} + +function identity(d) { + return d; +} + +function pie() { + var value = identity, + sortValues = descending, + sort = null, + startAngle = constant(0), + endAngle = constant(tau), + padAngle = constant(0); + + function pie(data) { + var i, + n = data.length, + j, + k, + sum = 0, + index = new Array(n), + arcs = new Array(n), + a0 = +startAngle.apply(this, arguments), + da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)), + a1, + p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), + pa = p * (da < 0 ? -1 : 1), + v; + + for (i = 0; i < n; ++i) { + if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { + sum += v; + } + } + + // Optionally sort the arcs by previously-computed values or by data. + if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); + else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); + + // Compute the arcs! They are stored in the original data's order. + for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { + j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { + data: data[j], + index: i, + value: v, + startAngle: a0, + endAngle: a1, + padAngle: p + }; + } + + return arcs; + } + + pie.value = function(_) { + return arguments.length ? (value = typeof _ === "function" ? _ : constant(+_), pie) : value; + }; + + pie.sortValues = function(_) { + return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; + }; + + pie.sort = function(_) { + return arguments.length ? (sort = _, sortValues = null, pie) : sort; + }; + + pie.startAngle = function(_) { + return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant(+_), pie) : startAngle; + }; + + pie.endAngle = function(_) { + return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant(+_), pie) : endAngle; + }; + + pie.padAngle = function(_) { + return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant(+_), pie) : padAngle; + }; + + return pie; +} + +var curveRadialLinear = curveRadial(curveLinear); + +function Radial(curve) { + this._curve = curve; +} + +Radial.prototype = { + areaStart: function() { + this._curve.areaStart(); + }, + areaEnd: function() { + this._curve.areaEnd(); + }, + lineStart: function() { + this._curve.lineStart(); + }, + lineEnd: function() { + this._curve.lineEnd(); + }, + point: function(a, r) { + this._curve.point(r * Math.sin(a), r * -Math.cos(a)); + } +}; + +function curveRadial(curve) { + + function radial(context) { + return new Radial(curve(context)); + } + + radial._curve = curve; + + return radial; +} + +function lineRadial(l) { + var c = l.curve; + + l.angle = l.x, delete l.x; + l.radius = l.y, delete l.y; + + l.curve = function(_) { + return arguments.length ? c(curveRadial(_)) : c()._curve; + }; + + return l; +} + +function lineRadial$1() { + return lineRadial(line().curve(curveRadialLinear)); +} + +function areaRadial() { + var a = area().curve(curveRadialLinear), + c = a.curve, + x0 = a.lineX0, + x1 = a.lineX1, + y0 = a.lineY0, + y1 = a.lineY1; + + a.angle = a.x, delete a.x; + a.startAngle = a.x0, delete a.x0; + a.endAngle = a.x1, delete a.x1; + a.radius = a.y, delete a.y; + a.innerRadius = a.y0, delete a.y0; + a.outerRadius = a.y1, delete a.y1; + a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; + a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; + a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; + a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; + + a.curve = function(_) { + return arguments.length ? c(curveRadial(_)) : c()._curve; + }; + + return a; +} + +function pointRadial(x, y) { + return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; +} + +var slice = Array.prototype.slice; + +function linkSource(d) { + return d.source; +} + +function linkTarget(d) { + return d.target; +} + +function link(curve) { + var source = linkSource, + target = linkTarget, + x$$1 = x, + y$$1 = y, + context = null; + + function link() { + var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv); + if (!context) context = buffer = d3Path.path(); + curve(context, +x$$1.apply(this, (argv[0] = s, argv)), +y$$1.apply(this, argv), +x$$1.apply(this, (argv[0] = t, argv)), +y$$1.apply(this, argv)); + if (buffer) return context = null, buffer + "" || null; + } + + link.source = function(_) { + return arguments.length ? (source = _, link) : source; + }; + + link.target = function(_) { + return arguments.length ? (target = _, link) : target; + }; + + link.x = function(_) { + return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant(+_), link) : x$$1; + }; + + link.y = function(_) { + return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant(+_), link) : y$$1; + }; + + link.context = function(_) { + return arguments.length ? ((context = _ == null ? null : _), link) : context; + }; + + return link; +} + +function curveHorizontal(context, x0, y0, x1, y1) { + context.moveTo(x0, y0); + context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); +} + +function curveVertical(context, x0, y0, x1, y1) { + context.moveTo(x0, y0); + context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1); +} + +function curveRadial$1(context, x0, y0, x1, y1) { + var p0 = pointRadial(x0, y0), + p1 = pointRadial(x0, y0 = (y0 + y1) / 2), + p2 = pointRadial(x1, y0), + p3 = pointRadial(x1, y1); + context.moveTo(p0[0], p0[1]); + context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); +} + +function linkHorizontal() { + return link(curveHorizontal); +} + +function linkVertical() { + return link(curveVertical); +} + +function linkRadial() { + var l = link(curveRadial$1); + l.angle = l.x, delete l.x; + l.radius = l.y, delete l.y; + return l; +} + +var circle = { + draw: function(context, size) { + var r = Math.sqrt(size / pi); + context.moveTo(r, 0); + context.arc(0, 0, r, 0, tau); + } +}; + +var cross = { + draw: function(context, size) { + var r = Math.sqrt(size / 5) / 2; + context.moveTo(-3 * r, -r); + context.lineTo(-r, -r); + context.lineTo(-r, -3 * r); + context.lineTo(r, -3 * r); + context.lineTo(r, -r); + context.lineTo(3 * r, -r); + context.lineTo(3 * r, r); + context.lineTo(r, r); + context.lineTo(r, 3 * r); + context.lineTo(-r, 3 * r); + context.lineTo(-r, r); + context.lineTo(-3 * r, r); + context.closePath(); + } +}; + +var tan30 = Math.sqrt(1 / 3), + tan30_2 = tan30 * 2; + +var diamond = { + draw: function(context, size) { + var y = Math.sqrt(size / tan30_2), + x = y * tan30; + context.moveTo(0, -y); + context.lineTo(x, 0); + context.lineTo(0, y); + context.lineTo(-x, 0); + context.closePath(); + } +}; + +var ka = 0.89081309152928522810, + kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10), + kx = Math.sin(tau / 10) * kr, + ky = -Math.cos(tau / 10) * kr; + +var star = { + draw: function(context, size) { + var r = Math.sqrt(size * ka), + x = kx * r, + y = ky * r; + context.moveTo(0, -r); + context.lineTo(x, y); + for (var i = 1; i < 5; ++i) { + var a = tau * i / 5, + c = Math.cos(a), + s = Math.sin(a); + context.lineTo(s * r, -c * r); + context.lineTo(c * x - s * y, s * x + c * y); + } + context.closePath(); + } +}; + +var square = { + draw: function(context, size) { + var w = Math.sqrt(size), + x = -w / 2; + context.rect(x, x, w, w); + } +}; + +var sqrt3 = Math.sqrt(3); + +var triangle = { + draw: function(context, size) { + var y = -Math.sqrt(size / (sqrt3 * 3)); + context.moveTo(0, y * 2); + context.lineTo(-sqrt3 * y, -y); + context.lineTo(sqrt3 * y, -y); + context.closePath(); + } +}; + +var c = -0.5, + s = Math.sqrt(3) / 2, + k = 1 / Math.sqrt(12), + a = (k / 2 + 1) * 3; + +var wye = { + draw: function(context, size) { + var r = Math.sqrt(size / a), + x0 = r / 2, + y0 = r * k, + x1 = x0, + y1 = r * k + r, + x2 = -x1, + y2 = y1; + context.moveTo(x0, y0); + context.lineTo(x1, y1); + context.lineTo(x2, y2); + context.lineTo(c * x0 - s * y0, s * x0 + c * y0); + context.lineTo(c * x1 - s * y1, s * x1 + c * y1); + context.lineTo(c * x2 - s * y2, s * x2 + c * y2); + context.lineTo(c * x0 + s * y0, c * y0 - s * x0); + context.lineTo(c * x1 + s * y1, c * y1 - s * x1); + context.lineTo(c * x2 + s * y2, c * y2 - s * x2); + context.closePath(); + } +}; + +var symbols = [ + circle, + cross, + diamond, + square, + star, + triangle, + wye +]; + +function symbol() { + var type = constant(circle), + size = constant(64), + context = null; + + function symbol() { + var buffer; + if (!context) context = buffer = d3Path.path(); + type.apply(this, arguments).draw(context, +size.apply(this, arguments)); + if (buffer) return context = null, buffer + "" || null; + } + + symbol.type = function(_) { + return arguments.length ? (type = typeof _ === "function" ? _ : constant(_), symbol) : type; + }; + + symbol.size = function(_) { + return arguments.length ? (size = typeof _ === "function" ? _ : constant(+_), symbol) : size; + }; + + symbol.context = function(_) { + return arguments.length ? (context = _ == null ? null : _, symbol) : context; + }; + + return symbol; +} + +function noop() {} + +function point(that, x, y) { + that._context.bezierCurveTo( + (2 * that._x0 + that._x1) / 3, + (2 * that._y0 + that._y1) / 3, + (that._x0 + 2 * that._x1) / 3, + (that._y0 + 2 * that._y1) / 3, + (that._x0 + 4 * that._x1 + x) / 6, + (that._y0 + 4 * that._y1 + y) / 6 + ); +} + +function Basis(context) { + this._context = context; +} + +Basis.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = + this._y0 = this._y1 = NaN; + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 3: point(this, this._x1, this._y1); // proceed + case 2: this._context.lineTo(this._x1, this._y1); break; + } + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; break; + case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed + default: point(this, x, y); break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + } +}; + +function basis(context) { + return new Basis(context); +} + +function BasisClosed(context) { + this._context = context; +} + +BasisClosed.prototype = { + areaStart: noop, + areaEnd: noop, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = + this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 1: { + this._context.moveTo(this._x2, this._y2); + this._context.closePath(); + break; + } + case 2: { + this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); + this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); + this._context.closePath(); + break; + } + case 3: { + this.point(this._x2, this._y2); + this.point(this._x3, this._y3); + this.point(this._x4, this._y4); + break; + } + } + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._x2 = x, this._y2 = y; break; + case 1: this._point = 2; this._x3 = x, this._y3 = y; break; + case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; + default: point(this, x, y); break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + } +}; + +function basisClosed(context) { + return new BasisClosed(context); +} + +function BasisOpen(context) { + this._context = context; +} + +BasisOpen.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = + this._y0 = this._y1 = NaN; + this._point = 0; + }, + lineEnd: function() { + if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; break; + case 1: this._point = 2; break; + case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; + case 3: this._point = 4; // proceed + default: point(this, x, y); break; + } + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + } +}; + +function basisOpen(context) { + return new BasisOpen(context); +} + +function Bundle(context, beta) { + this._basis = new Basis(context); + this._beta = beta; +} + +Bundle.prototype = { + lineStart: function() { + this._x = []; + this._y = []; + this._basis.lineStart(); + }, + lineEnd: function() { + var x = this._x, + y = this._y, + j = x.length - 1; + + if (j > 0) { + var x0 = x[0], + y0 = y[0], + dx = x[j] - x0, + dy = y[j] - y0, + i = -1, + t; + + while (++i <= j) { + t = i / j; + this._basis.point( + this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), + this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) + ); + } + } + + this._x = this._y = null; + this._basis.lineEnd(); + }, + point: function(x, y) { + this._x.push(+x); + this._y.push(+y); + } +}; + +var bundle = (function custom(beta) { + + function bundle(context) { + return beta === 1 ? new Basis(context) : new Bundle(context, beta); + } + + bundle.beta = function(beta) { + return custom(+beta); + }; + + return bundle; +})(0.85); + +function point$1(that, x, y) { + that._context.bezierCurveTo( + that._x1 + that._k * (that._x2 - that._x0), + that._y1 + that._k * (that._y2 - that._y0), + that._x2 + that._k * (that._x1 - x), + that._y2 + that._k * (that._y1 - y), + that._x2, + that._y2 + ); +} + +function Cardinal(context, tension) { + this._context = context; + this._k = (1 - tension) / 6; +} + +Cardinal.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = + this._y0 = this._y1 = this._y2 = NaN; + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: this._context.lineTo(this._x2, this._y2); break; + case 3: point$1(this, this._x1, this._y1); break; + } + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; this._x1 = x, this._y1 = y; break; + case 2: this._point = 3; // proceed + default: point$1(this, x, y); break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; + +var cardinal = (function custom(tension) { + + function cardinal(context) { + return new Cardinal(context, tension); + } + + cardinal.tension = function(tension) { + return custom(+tension); + }; + + return cardinal; +})(0); + +function CardinalClosed(context, tension) { + this._context = context; + this._k = (1 - tension) / 6; +} + +CardinalClosed.prototype = { + areaStart: noop, + areaEnd: noop, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = + this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 1: { + this._context.moveTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 2: { + this._context.lineTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 3: { + this.point(this._x3, this._y3); + this.point(this._x4, this._y4); + this.point(this._x5, this._y5); + break; + } + } + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._x3 = x, this._y3 = y; break; + case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; + case 2: this._point = 3; this._x5 = x, this._y5 = y; break; + default: point$1(this, x, y); break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; + +var cardinalClosed = (function custom(tension) { + + function cardinal$$1(context) { + return new CardinalClosed(context, tension); + } + + cardinal$$1.tension = function(tension) { + return custom(+tension); + }; + + return cardinal$$1; +})(0); + +function CardinalOpen(context, tension) { + this._context = context; + this._k = (1 - tension) / 6; +} + +CardinalOpen.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = + this._y0 = this._y1 = this._y2 = NaN; + this._point = 0; + }, + lineEnd: function() { + if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; break; + case 1: this._point = 2; break; + case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; + case 3: this._point = 4; // proceed + default: point$1(this, x, y); break; + } + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; + +var cardinalOpen = (function custom(tension) { + + function cardinal$$1(context) { + return new CardinalOpen(context, tension); + } + + cardinal$$1.tension = function(tension) { + return custom(+tension); + }; + + return cardinal$$1; +})(0); + +function point$2(that, x, y) { + var x1 = that._x1, + y1 = that._y1, + x2 = that._x2, + y2 = that._y2; + + if (that._l01_a > epsilon) { + var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, + n = 3 * that._l01_a * (that._l01_a + that._l12_a); + x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; + y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; + } + + if (that._l23_a > epsilon) { + var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, + m = 3 * that._l23_a * (that._l23_a + that._l12_a); + x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; + y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; + } + + that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); +} + +function CatmullRom(context, alpha) { + this._context = context; + this._alpha = alpha; +} + +CatmullRom.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = + this._y0 = this._y1 = this._y2 = NaN; + this._l01_a = this._l12_a = this._l23_a = + this._l01_2a = this._l12_2a = this._l23_2a = + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: this._context.lineTo(this._x2, this._y2); break; + case 3: this.point(this._x2, this._y2); break; + } + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + + if (this._point) { + var x23 = this._x2 - x, + y23 = this._y2 - y; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); + } + + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; break; + case 2: this._point = 3; // proceed + default: point$2(this, x, y); break; + } + + this._l01_a = this._l12_a, this._l12_a = this._l23_a; + this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; + +var catmullRom = (function custom(alpha) { + + function catmullRom(context) { + return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); + } + + catmullRom.alpha = function(alpha) { + return custom(+alpha); + }; + + return catmullRom; +})(0.5); + +function CatmullRomClosed(context, alpha) { + this._context = context; + this._alpha = alpha; +} + +CatmullRomClosed.prototype = { + areaStart: noop, + areaEnd: noop, + lineStart: function() { + this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = + this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; + this._l01_a = this._l12_a = this._l23_a = + this._l01_2a = this._l12_2a = this._l23_2a = + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 1: { + this._context.moveTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 2: { + this._context.lineTo(this._x3, this._y3); + this._context.closePath(); + break; + } + case 3: { + this.point(this._x3, this._y3); + this.point(this._x4, this._y4); + this.point(this._x5, this._y5); + break; + } + } + }, + point: function(x, y) { + x = +x, y = +y; + + if (this._point) { + var x23 = this._x2 - x, + y23 = this._y2 - y; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); + } + + switch (this._point) { + case 0: this._point = 1; this._x3 = x, this._y3 = y; break; + case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; + case 2: this._point = 3; this._x5 = x, this._y5 = y; break; + default: point$2(this, x, y); break; + } + + this._l01_a = this._l12_a, this._l12_a = this._l23_a; + this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; + +var catmullRomClosed = (function custom(alpha) { + + function catmullRom$$1(context) { + return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); + } + + catmullRom$$1.alpha = function(alpha) { + return custom(+alpha); + }; + + return catmullRom$$1; +})(0.5); + +function CatmullRomOpen(context, alpha) { + this._context = context; + this._alpha = alpha; +} + +CatmullRomOpen.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = this._x2 = + this._y0 = this._y1 = this._y2 = NaN; + this._l01_a = this._l12_a = this._l23_a = + this._l01_2a = this._l12_2a = this._l23_2a = + this._point = 0; + }, + lineEnd: function() { + if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + + if (this._point) { + var x23 = this._x2 - x, + y23 = this._y2 - y; + this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); + } + + switch (this._point) { + case 0: this._point = 1; break; + case 1: this._point = 2; break; + case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; + case 3: this._point = 4; // proceed + default: point$2(this, x, y); break; + } + + this._l01_a = this._l12_a, this._l12_a = this._l23_a; + this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; + this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; + this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; + } +}; + +var catmullRomOpen = (function custom(alpha) { + + function catmullRom$$1(context) { + return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); + } + + catmullRom$$1.alpha = function(alpha) { + return custom(+alpha); + }; + + return catmullRom$$1; +})(0.5); + +function LinearClosed(context) { + this._context = context; +} + +LinearClosed.prototype = { + areaStart: noop, + areaEnd: noop, + lineStart: function() { + this._point = 0; + }, + lineEnd: function() { + if (this._point) this._context.closePath(); + }, + point: function(x, y) { + x = +x, y = +y; + if (this._point) this._context.lineTo(x, y); + else this._point = 1, this._context.moveTo(x, y); + } +}; + +function linearClosed(context) { + return new LinearClosed(context); +} + +function sign(x) { + return x < 0 ? -1 : 1; +} + +// Calculate the slopes of the tangents (Hermite-type interpolation) based on +// the following paper: Steffen, M. 1990. A Simple Method for Monotonic +// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. +// NOV(II), P. 443, 1990. +function slope3(that, x2, y2) { + var h0 = that._x1 - that._x0, + h1 = x2 - that._x1, + s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), + s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), + p = (s0 * h1 + s1 * h0) / (h0 + h1); + return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; +} + +// Calculate a one-sided slope. +function slope2(that, t) { + var h = that._x1 - that._x0; + return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; +} + +// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations +// "you can express cubic Hermite interpolation in terms of cubic Bézier curves +// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". +function point$3(that, t0, t1) { + var x0 = that._x0, + y0 = that._y0, + x1 = that._x1, + y1 = that._y1, + dx = (x1 - x0) / 3; + that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); +} + +function MonotoneX(context) { + this._context = context; +} + +MonotoneX.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x0 = this._x1 = + this._y0 = this._y1 = + this._t0 = NaN; + this._point = 0; + }, + lineEnd: function() { + switch (this._point) { + case 2: this._context.lineTo(this._x1, this._y1); break; + case 3: point$3(this, this._t0, slope2(this, this._t0)); break; + } + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + this._line = 1 - this._line; + }, + point: function(x, y) { + var t1 = NaN; + + x = +x, y = +y; + if (x === this._x1 && y === this._y1) return; // Ignore coincident points. + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; break; + case 2: this._point = 3; point$3(this, slope2(this, t1 = slope3(this, x, y)), t1); break; + default: point$3(this, this._t0, t1 = slope3(this, x, y)); break; + } + + this._x0 = this._x1, this._x1 = x; + this._y0 = this._y1, this._y1 = y; + this._t0 = t1; + } +}; + +function MonotoneY(context) { + this._context = new ReflectContext(context); +} + +(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { + MonotoneX.prototype.point.call(this, y, x); +}; + +function ReflectContext(context) { + this._context = context; +} + +ReflectContext.prototype = { + moveTo: function(x, y) { this._context.moveTo(y, x); }, + closePath: function() { this._context.closePath(); }, + lineTo: function(x, y) { this._context.lineTo(y, x); }, + bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } +}; + +function monotoneX(context) { + return new MonotoneX(context); +} + +function monotoneY(context) { + return new MonotoneY(context); +} + +function Natural(context) { + this._context = context; +} + +Natural.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x = []; + this._y = []; + }, + lineEnd: function() { + var x = this._x, + y = this._y, + n = x.length; + + if (n) { + this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); + if (n === 2) { + this._context.lineTo(x[1], y[1]); + } else { + var px = controlPoints(x), + py = controlPoints(y); + for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { + this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); + } + } + } + + if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); + this._line = 1 - this._line; + this._x = this._y = null; + }, + point: function(x, y) { + this._x.push(+x); + this._y.push(+y); + } +}; + +// See https://www.particleincell.com/2012/bezier-splines/ for derivation. +function controlPoints(x) { + var i, + n = x.length - 1, + m, + a = new Array(n), + b = new Array(n), + r = new Array(n); + a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; + for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; + a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; + for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; + a[n - 1] = r[n - 1] / b[n - 1]; + for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; + b[n - 1] = (x[n] + a[n - 1]) / 2; + for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; + return [a, b]; +} + +function natural(context) { + return new Natural(context); +} + +function Step(context, t) { + this._context = context; + this._t = t; +} + +Step.prototype = { + areaStart: function() { + this._line = 0; + }, + areaEnd: function() { + this._line = NaN; + }, + lineStart: function() { + this._x = this._y = NaN; + this._point = 0; + }, + lineEnd: function() { + if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); + if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); + if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; + }, + point: function(x, y) { + x = +x, y = +y; + switch (this._point) { + case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; + case 1: this._point = 2; // proceed + default: { + if (this._t <= 0) { + this._context.lineTo(this._x, y); + this._context.lineTo(x, y); + } else { + var x1 = this._x * (1 - this._t) + x * this._t; + this._context.lineTo(x1, this._y); + this._context.lineTo(x1, y); + } + break; + } + } + this._x = x, this._y = y; + } +}; + +function step(context) { + return new Step(context, 0.5); +} + +function stepBefore(context) { + return new Step(context, 0); +} + +function stepAfter(context) { + return new Step(context, 1); +} + +function none(series, order) { + if (!((n = series.length) > 1)) return; + for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { + s0 = s1, s1 = series[order[i]]; + for (j = 0; j < m; ++j) { + s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; + } + } +} + +function none$1(series) { + var n = series.length, o = new Array(n); + while (--n >= 0) o[n] = n; + return o; +} + +function stackValue(d, key) { + return d[key]; +} + +function stack() { + var keys = constant([]), + order = none$1, + offset = none, + value = stackValue; + + function stack(data) { + var kz = keys.apply(this, arguments), + i, + m = data.length, + n = kz.length, + sz = new Array(n), + oz; + + for (i = 0; i < n; ++i) { + for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) { + si[j] = sij = [0, +value(data[j], ki, j, data)]; + sij.data = data[j]; + } + si.key = ki; + } + + for (i = 0, oz = order(sz); i < n; ++i) { + sz[oz[i]].index = i; + } + + offset(sz, oz); + return sz; + } + + stack.keys = function(_) { + return arguments.length ? (keys = typeof _ === "function" ? _ : constant(slice.call(_)), stack) : keys; + }; + + stack.value = function(_) { + return arguments.length ? (value = typeof _ === "function" ? _ : constant(+_), stack) : value; + }; + + stack.order = function(_) { + return arguments.length ? (order = _ == null ? none$1 : typeof _ === "function" ? _ : constant(slice.call(_)), stack) : order; + }; + + stack.offset = function(_) { + return arguments.length ? (offset = _ == null ? none : _, stack) : offset; + }; + + return stack; +} + +function expand(series, order) { + if (!((n = series.length) > 0)) return; + for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { + for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; + if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; + } + none(series, order); +} + +function diverging(series, order) { + if (!((n = series.length) > 0)) return; + for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { + for (yp = yn = 0, i = 0; i < n; ++i) { + if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) { + d[0] = yp, d[1] = yp += dy; + } else if (dy < 0) { + d[1] = yn, d[0] = yn += dy; + } else { + d[0] = yp; + } + } + } +} + +function silhouette(series, order) { + if (!((n = series.length) > 0)) return; + for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { + for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; + s0[j][1] += s0[j][0] = -y / 2; + } + none(series, order); +} + +function wiggle(series, order) { + if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; + for (var y = 0, j = 1, s0, m, n; j < m; ++j) { + for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { + var si = series[order[i]], + sij0 = si[j][1] || 0, + sij1 = si[j - 1][1] || 0, + s3 = (sij0 - sij1) / 2; + for (var k = 0; k < i; ++k) { + var sk = series[order[k]], + skj0 = sk[j][1] || 0, + skj1 = sk[j - 1][1] || 0; + s3 += skj0 - skj1; + } + s1 += sij0, s2 += s3 * sij0; + } + s0[j - 1][1] += s0[j - 1][0] = y; + if (s1) y -= s2 / s1; + } + s0[j - 1][1] += s0[j - 1][0] = y; + none(series, order); +} + +function appearance(series) { + var peaks = series.map(peak); + return none$1(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); +} + +function peak(series) { + var i = -1, j = 0, n = series.length, vi, vj = -Infinity; + while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; + return j; +} + +function ascending(series) { + var sums = series.map(sum); + return none$1(series).sort(function(a, b) { return sums[a] - sums[b]; }); +} + +function sum(series) { + var s = 0, i = -1, n = series.length, v; + while (++i < n) if (v = +series[i][1]) s += v; + return s; +} + +function descending$1(series) { + return ascending(series).reverse(); +} + +function insideOut(series) { + var n = series.length, + i, + j, + sums = series.map(sum), + order = appearance(series), + top = 0, + bottom = 0, + tops = [], + bottoms = []; + + for (i = 0; i < n; ++i) { + j = order[i]; + if (top < bottom) { + top += sums[j]; + tops.push(j); + } else { + bottom += sums[j]; + bottoms.push(j); + } + } + + return bottoms.reverse().concat(tops); +} + +function reverse(series) { + return none$1(series).reverse(); +} + +exports.arc = arc; +exports.area = area; +exports.line = line; +exports.pie = pie; +exports.areaRadial = areaRadial; +exports.radialArea = areaRadial; +exports.lineRadial = lineRadial$1; +exports.radialLine = lineRadial$1; +exports.pointRadial = pointRadial; +exports.linkHorizontal = linkHorizontal; +exports.linkVertical = linkVertical; +exports.linkRadial = linkRadial; +exports.symbol = symbol; +exports.symbols = symbols; +exports.symbolCircle = circle; +exports.symbolCross = cross; +exports.symbolDiamond = diamond; +exports.symbolSquare = square; +exports.symbolStar = star; +exports.symbolTriangle = triangle; +exports.symbolWye = wye; +exports.curveBasisClosed = basisClosed; +exports.curveBasisOpen = basisOpen; +exports.curveBasis = basis; +exports.curveBundle = bundle; +exports.curveCardinalClosed = cardinalClosed; +exports.curveCardinalOpen = cardinalOpen; +exports.curveCardinal = cardinal; +exports.curveCatmullRomClosed = catmullRomClosed; +exports.curveCatmullRomOpen = catmullRomOpen; +exports.curveCatmullRom = catmullRom; +exports.curveLinearClosed = linearClosed; +exports.curveLinear = curveLinear; +exports.curveMonotoneX = monotoneX; +exports.curveMonotoneY = monotoneY; +exports.curveNatural = natural; +exports.curveStep = step; +exports.curveStepAfter = stepAfter; +exports.curveStepBefore = stepBefore; +exports.stack = stack; +exports.stackOffsetExpand = expand; +exports.stackOffsetDiverging = diverging; +exports.stackOffsetNone = none; +exports.stackOffsetSilhouette = silhouette; +exports.stackOffsetWiggle = wiggle; +exports.stackOrderAppearance = appearance; +exports.stackOrderAscending = ascending; +exports.stackOrderDescending = descending$1; +exports.stackOrderInsideOut = insideOut; +exports.stackOrderNone = none$1; +exports.stackOrderReverse = reverse; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-path":41}],49:[function(require,module,exports){ +// https://d3js.org/d3-time-format/ v2.1.3 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3)); +}(this, (function (exports,d3Time) { 'use strict'; + +function localDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); + date.setFullYear(d.y); + return date; + } + return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); +} + +function utcDate(d) { + if (0 <= d.y && d.y < 100) { + var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); + date.setUTCFullYear(d.y); + return date; + } + return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); +} + +function newYear(y) { + return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0}; +} + +function formatLocale(locale) { + var locale_dateTime = locale.dateTime, + locale_date = locale.date, + locale_time = locale.time, + locale_periods = locale.periods, + locale_weekdays = locale.days, + locale_shortWeekdays = locale.shortDays, + locale_months = locale.months, + locale_shortMonths = locale.shortMonths; + + var periodRe = formatRe(locale_periods), + periodLookup = formatLookup(locale_periods), + weekdayRe = formatRe(locale_weekdays), + weekdayLookup = formatLookup(locale_weekdays), + shortWeekdayRe = formatRe(locale_shortWeekdays), + shortWeekdayLookup = formatLookup(locale_shortWeekdays), + monthRe = formatRe(locale_months), + monthLookup = formatLookup(locale_months), + shortMonthRe = formatRe(locale_shortMonths), + shortMonthLookup = formatLookup(locale_shortMonths); + + var formats = { + "a": formatShortWeekday, + "A": formatWeekday, + "b": formatShortMonth, + "B": formatMonth, + "c": null, + "d": formatDayOfMonth, + "e": formatDayOfMonth, + "f": formatMicroseconds, + "H": formatHour24, + "I": formatHour12, + "j": formatDayOfYear, + "L": formatMilliseconds, + "m": formatMonthNumber, + "M": formatMinutes, + "p": formatPeriod, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatSeconds, + "u": formatWeekdayNumberMonday, + "U": formatWeekNumberSunday, + "V": formatWeekNumberISO, + "w": formatWeekdayNumberSunday, + "W": formatWeekNumberMonday, + "x": null, + "X": null, + "y": formatYear, + "Y": formatFullYear, + "Z": formatZone, + "%": formatLiteralPercent + }; + + var utcFormats = { + "a": formatUTCShortWeekday, + "A": formatUTCWeekday, + "b": formatUTCShortMonth, + "B": formatUTCMonth, + "c": null, + "d": formatUTCDayOfMonth, + "e": formatUTCDayOfMonth, + "f": formatUTCMicroseconds, + "H": formatUTCHour24, + "I": formatUTCHour12, + "j": formatUTCDayOfYear, + "L": formatUTCMilliseconds, + "m": formatUTCMonthNumber, + "M": formatUTCMinutes, + "p": formatUTCPeriod, + "Q": formatUnixTimestamp, + "s": formatUnixTimestampSeconds, + "S": formatUTCSeconds, + "u": formatUTCWeekdayNumberMonday, + "U": formatUTCWeekNumberSunday, + "V": formatUTCWeekNumberISO, + "w": formatUTCWeekdayNumberSunday, + "W": formatUTCWeekNumberMonday, + "x": null, + "X": null, + "y": formatUTCYear, + "Y": formatUTCFullYear, + "Z": formatUTCZone, + "%": formatLiteralPercent + }; + + var parses = { + "a": parseShortWeekday, + "A": parseWeekday, + "b": parseShortMonth, + "B": parseMonth, + "c": parseLocaleDateTime, + "d": parseDayOfMonth, + "e": parseDayOfMonth, + "f": parseMicroseconds, + "H": parseHour24, + "I": parseHour24, + "j": parseDayOfYear, + "L": parseMilliseconds, + "m": parseMonthNumber, + "M": parseMinutes, + "p": parsePeriod, + "Q": parseUnixTimestamp, + "s": parseUnixTimestampSeconds, + "S": parseSeconds, + "u": parseWeekdayNumberMonday, + "U": parseWeekNumberSunday, + "V": parseWeekNumberISO, + "w": parseWeekdayNumberSunday, + "W": parseWeekNumberMonday, + "x": parseLocaleDate, + "X": parseLocaleTime, + "y": parseYear, + "Y": parseFullYear, + "Z": parseZone, + "%": parseLiteralPercent + }; + + // These recursive directive definitions must be deferred. + formats.x = newFormat(locale_date, formats); + formats.X = newFormat(locale_time, formats); + formats.c = newFormat(locale_dateTime, formats); + utcFormats.x = newFormat(locale_date, utcFormats); + utcFormats.X = newFormat(locale_time, utcFormats); + utcFormats.c = newFormat(locale_dateTime, utcFormats); + + function newFormat(specifier, formats) { + return function(date) { + var string = [], + i = -1, + j = 0, + n = specifier.length, + c, + pad, + format; + + if (!(date instanceof Date)) date = new Date(+date); + + while (++i < n) { + if (specifier.charCodeAt(i) === 37) { + string.push(specifier.slice(j, i)); + if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); + else pad = c === "e" ? " " : "0"; + if (format = formats[c]) c = format(date, pad); + string.push(c); + j = i + 1; + } + } + + string.push(specifier.slice(j, i)); + return string.join(""); + }; + } + + function newParse(specifier, newDate) { + return function(string) { + var d = newYear(1900), + i = parseSpecifier(d, specifier, string += "", 0), + week, day; + if (i != string.length) return null; + + // If a UNIX timestamp is specified, return it. + if ("Q" in d) return new Date(d.Q); + + // The am-pm flag is 0 for AM, and 1 for PM. + if ("p" in d) d.H = d.H % 12 + d.p * 12; + + // Convert day-of-week and week-of-year to day-of-year. + if ("V" in d) { + if (d.V < 1 || d.V > 53) return null; + if (!("w" in d)) d.w = 1; + if ("Z" in d) { + week = utcDate(newYear(d.y)), day = week.getUTCDay(); + week = day > 4 || day === 0 ? d3Time.utcMonday.ceil(week) : d3Time.utcMonday(week); + week = d3Time.utcDay.offset(week, (d.V - 1) * 7); + d.y = week.getUTCFullYear(); + d.m = week.getUTCMonth(); + d.d = week.getUTCDate() + (d.w + 6) % 7; + } else { + week = newDate(newYear(d.y)), day = week.getDay(); + week = day > 4 || day === 0 ? d3Time.timeMonday.ceil(week) : d3Time.timeMonday(week); + week = d3Time.timeDay.offset(week, (d.V - 1) * 7); + d.y = week.getFullYear(); + d.m = week.getMonth(); + d.d = week.getDate() + (d.w + 6) % 7; + } + } else if ("W" in d || "U" in d) { + if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; + day = "Z" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay(); + d.m = 0; + d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7; + } + + // If a time zone is specified, all fields are interpreted as UTC and then + // offset according to the specified time zone. + if ("Z" in d) { + d.H += d.Z / 100 | 0; + d.M += d.Z % 100; + return utcDate(d); + } + + // Otherwise, all fields are in local time. + return newDate(d); + }; + } + + function parseSpecifier(d, specifier, string, j) { + var i = 0, + n = specifier.length, + m = string.length, + c, + parse; + + while (i < n) { + if (j >= m) return -1; + c = specifier.charCodeAt(i++); + if (c === 37) { + c = specifier.charAt(i++); + parse = parses[c in pads ? specifier.charAt(i++) : c]; + if (!parse || ((j = parse(d, string, j)) < 0)) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + + return j; + } + + function parsePeriod(d, string, i) { + var n = periodRe.exec(string.slice(i)); + return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortWeekday(d, string, i) { + var n = shortWeekdayRe.exec(string.slice(i)); + return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseWeekday(d, string, i) { + var n = weekdayRe.exec(string.slice(i)); + return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseShortMonth(d, string, i) { + var n = shortMonthRe.exec(string.slice(i)); + return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseMonth(d, string, i) { + var n = monthRe.exec(string.slice(i)); + return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; + } + + function parseLocaleDateTime(d, string, i) { + return parseSpecifier(d, locale_dateTime, string, i); + } + + function parseLocaleDate(d, string, i) { + return parseSpecifier(d, locale_date, string, i); + } + + function parseLocaleTime(d, string, i) { + return parseSpecifier(d, locale_time, string, i); + } + + function formatShortWeekday(d) { + return locale_shortWeekdays[d.getDay()]; + } + + function formatWeekday(d) { + return locale_weekdays[d.getDay()]; + } + + function formatShortMonth(d) { + return locale_shortMonths[d.getMonth()]; + } + + function formatMonth(d) { + return locale_months[d.getMonth()]; + } + + function formatPeriod(d) { + return locale_periods[+(d.getHours() >= 12)]; + } + + function formatUTCShortWeekday(d) { + return locale_shortWeekdays[d.getUTCDay()]; + } + + function formatUTCWeekday(d) { + return locale_weekdays[d.getUTCDay()]; + } + + function formatUTCShortMonth(d) { + return locale_shortMonths[d.getUTCMonth()]; + } + + function formatUTCMonth(d) { + return locale_months[d.getUTCMonth()]; + } + + function formatUTCPeriod(d) { + return locale_periods[+(d.getUTCHours() >= 12)]; + } + + return { + format: function(specifier) { + var f = newFormat(specifier += "", formats); + f.toString = function() { return specifier; }; + return f; + }, + parse: function(specifier) { + var p = newParse(specifier += "", localDate); + p.toString = function() { return specifier; }; + return p; + }, + utcFormat: function(specifier) { + var f = newFormat(specifier += "", utcFormats); + f.toString = function() { return specifier; }; + return f; + }, + utcParse: function(specifier) { + var p = newParse(specifier, utcDate); + p.toString = function() { return specifier; }; + return p; + } + }; +} + +var pads = {"-": "", "_": " ", "0": "0"}, + numberRe = /^\s*\d+/, // note: ignores next directive + percentRe = /^%/, + requoteRe = /[\\^$*+?|[\]().{}]/g; + +function pad(value, fill, width) { + var sign = value < 0 ? "-" : "", + string = (sign ? -value : value) + "", + length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); +} + +function requote(s) { + return s.replace(requoteRe, "\\$&"); +} + +function formatRe(names) { + return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); +} + +function formatLookup(names) { + var map = {}, i = -1, n = names.length; + while (++i < n) map[names[i].toLowerCase()] = i; + return map; +} + +function parseWeekdayNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.w = +n[0], i + n[0].length) : -1; +} + +function parseWeekdayNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 1)); + return n ? (d.u = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberSunday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.U = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberISO(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.V = +n[0], i + n[0].length) : -1; +} + +function parseWeekNumberMonday(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.W = +n[0], i + n[0].length) : -1; +} + +function parseFullYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 4)); + return n ? (d.y = +n[0], i + n[0].length) : -1; +} + +function parseYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; +} + +function parseZone(d, string, i) { + var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); + return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; +} + +function parseMonthNumber(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.m = n[0] - 1, i + n[0].length) : -1; +} + +function parseDayOfMonth(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.d = +n[0], i + n[0].length) : -1; +} + +function parseDayOfYear(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; +} + +function parseHour24(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.H = +n[0], i + n[0].length) : -1; +} + +function parseMinutes(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.M = +n[0], i + n[0].length) : -1; +} + +function parseSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 2)); + return n ? (d.S = +n[0], i + n[0].length) : -1; +} + +function parseMilliseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 3)); + return n ? (d.L = +n[0], i + n[0].length) : -1; +} + +function parseMicroseconds(d, string, i) { + var n = numberRe.exec(string.slice(i, i + 6)); + return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; +} + +function parseLiteralPercent(d, string, i) { + var n = percentRe.exec(string.slice(i, i + 1)); + return n ? i + n[0].length : -1; +} + +function parseUnixTimestamp(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = +n[0], i + n[0].length) : -1; +} + +function parseUnixTimestampSeconds(d, string, i) { + var n = numberRe.exec(string.slice(i)); + return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1; +} + +function formatDayOfMonth(d, p) { + return pad(d.getDate(), p, 2); +} + +function formatHour24(d, p) { + return pad(d.getHours(), p, 2); +} + +function formatHour12(d, p) { + return pad(d.getHours() % 12 || 12, p, 2); +} + +function formatDayOfYear(d, p) { + return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3); +} + +function formatMilliseconds(d, p) { + return pad(d.getMilliseconds(), p, 3); +} + +function formatMicroseconds(d, p) { + return formatMilliseconds(d, p) + "000"; +} + +function formatMonthNumber(d, p) { + return pad(d.getMonth() + 1, p, 2); +} + +function formatMinutes(d, p) { + return pad(d.getMinutes(), p, 2); +} + +function formatSeconds(d, p) { + return pad(d.getSeconds(), p, 2); +} + +function formatWeekdayNumberMonday(d) { + var day = d.getDay(); + return day === 0 ? 7 : day; +} + +function formatWeekNumberSunday(d, p) { + return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2); +} + +function formatWeekNumberISO(d, p) { + var day = d.getDay(); + d = (day >= 4 || day === 0) ? d3Time.timeThursday(d) : d3Time.timeThursday.ceil(d); + return pad(d3Time.timeThursday.count(d3Time.timeYear(d), d) + (d3Time.timeYear(d).getDay() === 4), p, 2); +} + +function formatWeekdayNumberSunday(d) { + return d.getDay(); +} + +function formatWeekNumberMonday(d, p) { + return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2); +} + +function formatYear(d, p) { + return pad(d.getFullYear() % 100, p, 2); +} + +function formatFullYear(d, p) { + return pad(d.getFullYear() % 10000, p, 4); +} + +function formatZone(d) { + var z = d.getTimezoneOffset(); + return (z > 0 ? "-" : (z *= -1, "+")) + + pad(z / 60 | 0, "0", 2) + + pad(z % 60, "0", 2); +} + +function formatUTCDayOfMonth(d, p) { + return pad(d.getUTCDate(), p, 2); +} + +function formatUTCHour24(d, p) { + return pad(d.getUTCHours(), p, 2); +} + +function formatUTCHour12(d, p) { + return pad(d.getUTCHours() % 12 || 12, p, 2); +} + +function formatUTCDayOfYear(d, p) { + return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3); +} + +function formatUTCMilliseconds(d, p) { + return pad(d.getUTCMilliseconds(), p, 3); +} + +function formatUTCMicroseconds(d, p) { + return formatUTCMilliseconds(d, p) + "000"; +} + +function formatUTCMonthNumber(d, p) { + return pad(d.getUTCMonth() + 1, p, 2); +} + +function formatUTCMinutes(d, p) { + return pad(d.getUTCMinutes(), p, 2); +} + +function formatUTCSeconds(d, p) { + return pad(d.getUTCSeconds(), p, 2); +} + +function formatUTCWeekdayNumberMonday(d) { + var dow = d.getUTCDay(); + return dow === 0 ? 7 : dow; +} + +function formatUTCWeekNumberSunday(d, p) { + return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2); +} + +function formatUTCWeekNumberISO(d, p) { + var day = d.getUTCDay(); + d = (day >= 4 || day === 0) ? d3Time.utcThursday(d) : d3Time.utcThursday.ceil(d); + return pad(d3Time.utcThursday.count(d3Time.utcYear(d), d) + (d3Time.utcYear(d).getUTCDay() === 4), p, 2); +} + +function formatUTCWeekdayNumberSunday(d) { + return d.getUTCDay(); +} + +function formatUTCWeekNumberMonday(d, p) { + return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2); +} + +function formatUTCYear(d, p) { + return pad(d.getUTCFullYear() % 100, p, 2); +} + +function formatUTCFullYear(d, p) { + return pad(d.getUTCFullYear() % 10000, p, 4); +} + +function formatUTCZone() { + return "+0000"; +} + +function formatLiteralPercent() { + return "%"; +} + +function formatUnixTimestamp(d) { + return +d; +} + +function formatUnixTimestampSeconds(d) { + return Math.floor(+d / 1000); +} + +var locale; + +defaultLocale({ + dateTime: "%x, %X", + date: "%-m/%-d/%Y", + time: "%-I:%M:%S %p", + periods: ["AM", "PM"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] +}); + +function defaultLocale(definition) { + locale = formatLocale(definition); + exports.timeFormat = locale.format; + exports.timeParse = locale.parse; + exports.utcFormat = locale.utcFormat; + exports.utcParse = locale.utcParse; + return locale; +} + +var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; + +function formatIsoNative(date) { + return date.toISOString(); +} + +var formatIso = Date.prototype.toISOString + ? formatIsoNative + : exports.utcFormat(isoSpecifier); + +function parseIsoNative(string) { + var date = new Date(string); + return isNaN(date) ? null : date; +} + +var parseIso = +new Date("2000-01-01T00:00:00.000Z") + ? parseIsoNative + : exports.utcParse(isoSpecifier); + +exports.timeFormatDefaultLocale = defaultLocale; +exports.timeFormatLocale = formatLocale; +exports.isoFormat = formatIso; +exports.isoParse = parseIso; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-time":50}],50:[function(require,module,exports){ +// https://d3js.org/d3-time/ v1.0.11 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var t0 = new Date, + t1 = new Date; + +function newInterval(floori, offseti, count, field) { + + function interval(date) { + return floori(date = new Date(+date)), date; + } + + interval.floor = interval; + + interval.ceil = function(date) { + return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; + }; + + interval.round = function(date) { + var d0 = interval(date), + d1 = interval.ceil(date); + return date - d0 < d1 - date ? d0 : d1; + }; + + interval.offset = function(date, step) { + return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; + }; + + interval.range = function(start, stop, step) { + var range = [], previous; + start = interval.ceil(start); + step = step == null ? 1 : Math.floor(step); + if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date + do range.push(previous = new Date(+start)), offseti(start, step), floori(start); + while (previous < start && start < stop); + return range; + }; + + interval.filter = function(test) { + return newInterval(function(date) { + if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); + }, function(date, step) { + if (date >= date) { + if (step < 0) while (++step <= 0) { + while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty + } else while (--step >= 0) { + while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty + } + } + }); + }; + + if (count) { + interval.count = function(start, end) { + t0.setTime(+start), t1.setTime(+end); + floori(t0), floori(t1); + return Math.floor(count(t0, t1)); + }; + + interval.every = function(step) { + step = Math.floor(step); + return !isFinite(step) || !(step > 0) ? null + : !(step > 1) ? interval + : interval.filter(field + ? function(d) { return field(d) % step === 0; } + : function(d) { return interval.count(0, d) % step === 0; }); + }; + } + + return interval; +} + +var millisecond = newInterval(function() { + // noop +}, function(date, step) { + date.setTime(+date + step); +}, function(start, end) { + return end - start; +}); + +// An optimized implementation for this simple case. +millisecond.every = function(k) { + k = Math.floor(k); + if (!isFinite(k) || !(k > 0)) return null; + if (!(k > 1)) return millisecond; + return newInterval(function(date) { + date.setTime(Math.floor(date / k) * k); + }, function(date, step) { + date.setTime(+date + step * k); + }, function(start, end) { + return (end - start) / k; + }); +}; +var milliseconds = millisecond.range; + +var durationSecond = 1e3; +var durationMinute = 6e4; +var durationHour = 36e5; +var durationDay = 864e5; +var durationWeek = 6048e5; + +var second = newInterval(function(date) { + date.setTime(date - date.getMilliseconds()); +}, function(date, step) { + date.setTime(+date + step * durationSecond); +}, function(start, end) { + return (end - start) / durationSecond; +}, function(date) { + return date.getUTCSeconds(); +}); +var seconds = second.range; + +var minute = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); +}, function(date, step) { + date.setTime(+date + step * durationMinute); +}, function(start, end) { + return (end - start) / durationMinute; +}, function(date) { + return date.getMinutes(); +}); +var minutes = minute.range; + +var hour = newInterval(function(date) { + date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); +}, function(date, step) { + date.setTime(+date + step * durationHour); +}, function(start, end) { + return (end - start) / durationHour; +}, function(date) { + return date.getHours(); +}); +var hours = hour.range; + +var day = newInterval(function(date) { + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setDate(date.getDate() + step); +}, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; +}, function(date) { + return date.getDate() - 1; +}); +var days = day.range; + +function weekday(i) { + return newInterval(function(date) { + date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setDate(date.getDate() + step * 7); + }, function(start, end) { + return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; + }); +} + +var sunday = weekday(0); +var monday = weekday(1); +var tuesday = weekday(2); +var wednesday = weekday(3); +var thursday = weekday(4); +var friday = weekday(5); +var saturday = weekday(6); + +var sundays = sunday.range; +var mondays = monday.range; +var tuesdays = tuesday.range; +var wednesdays = wednesday.range; +var thursdays = thursday.range; +var fridays = friday.range; +var saturdays = saturday.range; + +var month = newInterval(function(date) { + date.setDate(1); + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setMonth(date.getMonth() + step); +}, function(start, end) { + return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; +}, function(date) { + return date.getMonth(); +}); +var months = month.range; + +var year = newInterval(function(date) { + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); +}, function(date, step) { + date.setFullYear(date.getFullYear() + step); +}, function(start, end) { + return end.getFullYear() - start.getFullYear(); +}, function(date) { + return date.getFullYear(); +}); + +// An optimized implementation for this simple case. +year.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setFullYear(Math.floor(date.getFullYear() / k) * k); + date.setMonth(0, 1); + date.setHours(0, 0, 0, 0); + }, function(date, step) { + date.setFullYear(date.getFullYear() + step * k); + }); +}; +var years = year.range; + +var utcMinute = newInterval(function(date) { + date.setUTCSeconds(0, 0); +}, function(date, step) { + date.setTime(+date + step * durationMinute); +}, function(start, end) { + return (end - start) / durationMinute; +}, function(date) { + return date.getUTCMinutes(); +}); +var utcMinutes = utcMinute.range; + +var utcHour = newInterval(function(date) { + date.setUTCMinutes(0, 0, 0); +}, function(date, step) { + date.setTime(+date + step * durationHour); +}, function(start, end) { + return (end - start) / durationHour; +}, function(date) { + return date.getUTCHours(); +}); +var utcHours = utcHour.range; + +var utcDay = newInterval(function(date) { + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCDate(date.getUTCDate() + step); +}, function(start, end) { + return (end - start) / durationDay; +}, function(date) { + return date.getUTCDate() - 1; +}); +var utcDays = utcDay.range; + +function utcWeekday(i) { + return newInterval(function(date) { + date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCDate(date.getUTCDate() + step * 7); + }, function(start, end) { + return (end - start) / durationWeek; + }); +} + +var utcSunday = utcWeekday(0); +var utcMonday = utcWeekday(1); +var utcTuesday = utcWeekday(2); +var utcWednesday = utcWeekday(3); +var utcThursday = utcWeekday(4); +var utcFriday = utcWeekday(5); +var utcSaturday = utcWeekday(6); + +var utcSundays = utcSunday.range; +var utcMondays = utcMonday.range; +var utcTuesdays = utcTuesday.range; +var utcWednesdays = utcWednesday.range; +var utcThursdays = utcThursday.range; +var utcFridays = utcFriday.range; +var utcSaturdays = utcSaturday.range; + +var utcMonth = newInterval(function(date) { + date.setUTCDate(1); + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCMonth(date.getUTCMonth() + step); +}, function(start, end) { + return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; +}, function(date) { + return date.getUTCMonth(); +}); +var utcMonths = utcMonth.range; + +var utcYear = newInterval(function(date) { + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); +}, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step); +}, function(start, end) { + return end.getUTCFullYear() - start.getUTCFullYear(); +}, function(date) { + return date.getUTCFullYear(); +}); + +// An optimized implementation for this simple case. +utcYear.every = function(k) { + return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { + date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); + date.setUTCMonth(0, 1); + date.setUTCHours(0, 0, 0, 0); + }, function(date, step) { + date.setUTCFullYear(date.getUTCFullYear() + step * k); + }); +}; +var utcYears = utcYear.range; + +exports.timeInterval = newInterval; +exports.timeMillisecond = millisecond; +exports.timeMilliseconds = milliseconds; +exports.utcMillisecond = millisecond; +exports.utcMilliseconds = milliseconds; +exports.timeSecond = second; +exports.timeSeconds = seconds; +exports.utcSecond = second; +exports.utcSeconds = seconds; +exports.timeMinute = minute; +exports.timeMinutes = minutes; +exports.timeHour = hour; +exports.timeHours = hours; +exports.timeDay = day; +exports.timeDays = days; +exports.timeWeek = sunday; +exports.timeWeeks = sundays; +exports.timeSunday = sunday; +exports.timeSundays = sundays; +exports.timeMonday = monday; +exports.timeMondays = mondays; +exports.timeTuesday = tuesday; +exports.timeTuesdays = tuesdays; +exports.timeWednesday = wednesday; +exports.timeWednesdays = wednesdays; +exports.timeThursday = thursday; +exports.timeThursdays = thursdays; +exports.timeFriday = friday; +exports.timeFridays = fridays; +exports.timeSaturday = saturday; +exports.timeSaturdays = saturdays; +exports.timeMonth = month; +exports.timeMonths = months; +exports.timeYear = year; +exports.timeYears = years; +exports.utcMinute = utcMinute; +exports.utcMinutes = utcMinutes; +exports.utcHour = utcHour; +exports.utcHours = utcHours; +exports.utcDay = utcDay; +exports.utcDays = utcDays; +exports.utcWeek = utcSunday; +exports.utcWeeks = utcSundays; +exports.utcSunday = utcSunday; +exports.utcSundays = utcSundays; +exports.utcMonday = utcMonday; +exports.utcMondays = utcMondays; +exports.utcTuesday = utcTuesday; +exports.utcTuesdays = utcTuesdays; +exports.utcWednesday = utcWednesday; +exports.utcWednesdays = utcWednesdays; +exports.utcThursday = utcThursday; +exports.utcThursdays = utcThursdays; +exports.utcFriday = utcFriday; +exports.utcFridays = utcFridays; +exports.utcSaturday = utcSaturday; +exports.utcSaturdays = utcSaturdays; +exports.utcMonth = utcMonth; +exports.utcMonths = utcMonths; +exports.utcYear = utcYear; +exports.utcYears = utcYears; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],51:[function(require,module,exports){ +// https://d3js.org/d3-timer/ v1.0.9 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +var frame = 0, // is an animation frame pending? + timeout = 0, // is a timeout pending? + interval = 0, // are any timers active? + pokeDelay = 1000, // how frequently we check for clock skew + taskHead, + taskTail, + clockLast = 0, + clockNow = 0, + clockSkew = 0, + clock = typeof performance === "object" && performance.now ? performance : Date, + setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; + +function now() { + return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); +} + +function clearNow() { + clockNow = 0; +} + +function Timer() { + this._call = + this._time = + this._next = null; +} + +Timer.prototype = timer.prototype = { + constructor: Timer, + restart: function(callback, delay, time) { + if (typeof callback !== "function") throw new TypeError("callback is not a function"); + time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); + if (!this._next && taskTail !== this) { + if (taskTail) taskTail._next = this; + else taskHead = this; + taskTail = this; + } + this._call = callback; + this._time = time; + sleep(); + }, + stop: function() { + if (this._call) { + this._call = null; + this._time = Infinity; + sleep(); + } + } +}; + +function timer(callback, delay, time) { + var t = new Timer; + t.restart(callback, delay, time); + return t; +} + +function timerFlush() { + now(); // Get the current time, if not already set. + ++frame; // Pretend we’ve set an alarm, if we haven’t already. + var t = taskHead, e; + while (t) { + if ((e = clockNow - t._time) >= 0) t._call.call(null, e); + t = t._next; + } + --frame; +} + +function wake() { + clockNow = (clockLast = clock.now()) + clockSkew; + frame = timeout = 0; + try { + timerFlush(); + } finally { + frame = 0; + nap(); + clockNow = 0; + } +} + +function poke() { + var now = clock.now(), delay = now - clockLast; + if (delay > pokeDelay) clockSkew -= delay, clockLast = now; +} + +function nap() { + var t0, t1 = taskHead, t2, time = Infinity; + while (t1) { + if (t1._call) { + if (time > t1._time) time = t1._time; + t0 = t1, t1 = t1._next; + } else { + t2 = t1._next, t1._next = null; + t1 = t0 ? t0._next = t2 : taskHead = t2; + } + } + taskTail = t0; + sleep(time); +} + +function sleep(time) { + if (frame) return; // Soonest alarm already set, or will be. + if (timeout) timeout = clearTimeout(timeout); + var delay = time - clockNow; // Strictly less than if we recomputed clockNow. + if (delay > 24) { + if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); + if (interval) interval = clearInterval(interval); + } else { + if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); + frame = 1, setFrame(wake); + } +} + +function timeout$1(callback, delay, time) { + var t = new Timer; + delay = delay == null ? 0 : +delay; + t.restart(function(elapsed) { + t.stop(); + callback(elapsed + delay); + }, delay, time); + return t; +} + +function interval$1(callback, delay, time) { + var t = new Timer, total = delay; + if (delay == null) return t.restart(callback, delay, time), t; + delay = +delay, time = time == null ? now() : +time; + t.restart(function tick(elapsed) { + elapsed += total; + t.restart(tick, total += delay, time); + callback(elapsed); + }, delay, time); + return t; +} + +exports.now = now; +exports.timer = timer; +exports.timerFlush = timerFlush; +exports.timeout = timeout$1; +exports.interval = interval$1; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],52:[function(require,module,exports){ +// https://d3js.org/d3-transition/ v1.2.0 Copyright 2019 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-dispatch'), require('d3-timer'), require('d3-color'), require('d3-interpolate'), require('d3-selection'), require('d3-ease')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-dispatch', 'd3-timer', 'd3-color', 'd3-interpolate', 'd3-selection', 'd3-ease'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3)); +}(this, (function (exports,d3Dispatch,d3Timer,d3Color,d3Interpolate,d3Selection,d3Ease) { 'use strict'; + +var emptyOn = d3Dispatch.dispatch("start", "end", "cancel", "interrupt"); +var emptyTween = []; + +var CREATED = 0; +var SCHEDULED = 1; +var STARTING = 2; +var STARTED = 3; +var RUNNING = 4; +var ENDING = 5; +var ENDED = 6; + +function schedule(node, name, id, index, group, timing) { + var schedules = node.__transition; + if (!schedules) node.__transition = {}; + else if (id in schedules) return; + create(node, id, { + name: name, + index: index, // For context during callback. + group: group, // For context during callback. + on: emptyOn, + tween: emptyTween, + time: timing.time, + delay: timing.delay, + duration: timing.duration, + ease: timing.ease, + timer: null, + state: CREATED + }); +} + +function init(node, id) { + var schedule = get(node, id); + if (schedule.state > CREATED) throw new Error("too late; already scheduled"); + return schedule; +} + +function set(node, id) { + var schedule = get(node, id); + if (schedule.state > STARTED) throw new Error("too late; already running"); + return schedule; +} + +function get(node, id) { + var schedule = node.__transition; + if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); + return schedule; +} + +function create(node, id, self) { + var schedules = node.__transition, + tween; + + // Initialize the self timer when the transition is created. + // Note the actual delay is not known until the first callback! + schedules[id] = self; + self.timer = d3Timer.timer(schedule, 0, self.time); + + function schedule(elapsed) { + self.state = SCHEDULED; + self.timer.restart(start, self.delay, self.time); + + // If the elapsed delay is less than our first sleep, start immediately. + if (self.delay <= elapsed) start(elapsed - self.delay); + } + + function start(elapsed) { + var i, j, n, o; + + // If the state is not SCHEDULED, then we previously errored on start. + if (self.state !== SCHEDULED) return stop(); + + for (i in schedules) { + o = schedules[i]; + if (o.name !== self.name) continue; + + // While this element already has a starting transition during this frame, + // defer starting an interrupting transition until that transition has a + // chance to tick (and possibly end); see d3/d3-transition#54! + if (o.state === STARTED) return d3Timer.timeout(start); + + // Interrupt the active transition, if any. + if (o.state === RUNNING) { + o.state = ENDED; + o.timer.stop(); + o.on.call("interrupt", node, node.__data__, o.index, o.group); + delete schedules[i]; + } + + // Cancel any pre-empted transitions. + else if (+i < id) { + o.state = ENDED; + o.timer.stop(); + o.on.call("cancel", node, node.__data__, o.index, o.group); + delete schedules[i]; + } + } + + // Defer the first tick to end of the current frame; see d3/d3#1576. + // Note the transition may be canceled after start and before the first tick! + // Note this must be scheduled before the start event; see d3/d3-transition#16! + // Assuming this is successful, subsequent callbacks go straight to tick. + d3Timer.timeout(function() { + if (self.state === STARTED) { + self.state = RUNNING; + self.timer.restart(tick, self.delay, self.time); + tick(elapsed); + } + }); + + // Dispatch the start event. + // Note this must be done before the tween are initialized. + self.state = STARTING; + self.on.call("start", node, node.__data__, self.index, self.group); + if (self.state !== STARTING) return; // interrupted + self.state = STARTED; + + // Initialize the tween, deleting null tween. + tween = new Array(n = self.tween.length); + for (i = 0, j = -1; i < n; ++i) { + if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { + tween[++j] = o; + } + } + tween.length = j + 1; + } + + function tick(elapsed) { + var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), + i = -1, + n = tween.length; + + while (++i < n) { + tween[i].call(node, t); + } + + // Dispatch the end event. + if (self.state === ENDING) { + self.on.call("end", node, node.__data__, self.index, self.group); + stop(); + } + } + + function stop() { + self.state = ENDED; + self.timer.stop(); + delete schedules[id]; + for (var i in schedules) return; // eslint-disable-line no-unused-vars + delete node.__transition; + } +} + +function interrupt(node, name) { + var schedules = node.__transition, + schedule$$1, + active, + empty = true, + i; + + if (!schedules) return; + + name = name == null ? null : name + ""; + + for (i in schedules) { + if ((schedule$$1 = schedules[i]).name !== name) { empty = false; continue; } + active = schedule$$1.state > STARTING && schedule$$1.state < ENDING; + schedule$$1.state = ENDED; + schedule$$1.timer.stop(); + schedule$$1.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule$$1.index, schedule$$1.group); + delete schedules[i]; + } + + if (empty) delete node.__transition; +} + +function selection_interrupt(name) { + return this.each(function() { + interrupt(this, name); + }); +} + +function tweenRemove(id, name) { + var tween0, tween1; + return function() { + var schedule$$1 = set(this, id), + tween = schedule$$1.tween; + + // If this node shared tween with the previous node, + // just assign the updated shared tween and we’re done! + // Otherwise, copy-on-write. + if (tween !== tween0) { + tween1 = tween0 = tween; + for (var i = 0, n = tween1.length; i < n; ++i) { + if (tween1[i].name === name) { + tween1 = tween1.slice(); + tween1.splice(i, 1); + break; + } + } + } + + schedule$$1.tween = tween1; + }; +} + +function tweenFunction(id, name, value) { + var tween0, tween1; + if (typeof value !== "function") throw new Error; + return function() { + var schedule$$1 = set(this, id), + tween = schedule$$1.tween; + + // If this node shared tween with the previous node, + // just assign the updated shared tween and we’re done! + // Otherwise, copy-on-write. + if (tween !== tween0) { + tween1 = (tween0 = tween).slice(); + for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { + if (tween1[i].name === name) { + tween1[i] = t; + break; + } + } + if (i === n) tween1.push(t); + } + + schedule$$1.tween = tween1; + }; +} + +function transition_tween(name, value) { + var id = this._id; + + name += ""; + + if (arguments.length < 2) { + var tween = get(this.node(), id).tween; + for (var i = 0, n = tween.length, t; i < n; ++i) { + if ((t = tween[i]).name === name) { + return t.value; + } + } + return null; + } + + return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); +} + +function tweenValue(transition, name, value) { + var id = transition._id; + + transition.each(function() { + var schedule$$1 = set(this, id); + (schedule$$1.value || (schedule$$1.value = {}))[name] = value.apply(this, arguments); + }); + + return function(node) { + return get(node, id).value[name]; + }; +} + +function interpolate(a, b) { + var c; + return (typeof b === "number" ? d3Interpolate.interpolateNumber + : b instanceof d3Color.color ? d3Interpolate.interpolateRgb + : (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb) + : d3Interpolate.interpolateString)(a, b); +} + +function attrRemove(name) { + return function() { + this.removeAttribute(name); + }; +} + +function attrRemoveNS(fullname) { + return function() { + this.removeAttributeNS(fullname.space, fullname.local); + }; +} + +function attrConstant(name, interpolate$$1, value1) { + var string00, + string1 = value1 + "", + interpolate0; + return function() { + var string0 = this.getAttribute(name); + return string0 === string1 ? null + : string0 === string00 ? interpolate0 + : interpolate0 = interpolate$$1(string00 = string0, value1); + }; +} + +function attrConstantNS(fullname, interpolate$$1, value1) { + var string00, + string1 = value1 + "", + interpolate0; + return function() { + var string0 = this.getAttributeNS(fullname.space, fullname.local); + return string0 === string1 ? null + : string0 === string00 ? interpolate0 + : interpolate0 = interpolate$$1(string00 = string0, value1); + }; +} + +function attrFunction(name, interpolate$$1, value) { + var string00, + string10, + interpolate0; + return function() { + var string0, value1 = value(this), string1; + if (value1 == null) return void this.removeAttribute(name); + string0 = this.getAttribute(name); + string1 = value1 + ""; + return string0 === string1 ? null + : string0 === string00 && string1 === string10 ? interpolate0 + : (string10 = string1, interpolate0 = interpolate$$1(string00 = string0, value1)); + }; +} + +function attrFunctionNS(fullname, interpolate$$1, value) { + var string00, + string10, + interpolate0; + return function() { + var string0, value1 = value(this), string1; + if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); + string0 = this.getAttributeNS(fullname.space, fullname.local); + string1 = value1 + ""; + return string0 === string1 ? null + : string0 === string00 && string1 === string10 ? interpolate0 + : (string10 = string1, interpolate0 = interpolate$$1(string00 = string0, value1)); + }; +} + +function transition_attr(name, value) { + var fullname = d3Selection.namespace(name), i = fullname === "transform" ? d3Interpolate.interpolateTransformSvg : interpolate; + return this.attrTween(name, typeof value === "function" + ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, "attr." + name, value)) + : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) + : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value)); +} + +function attrInterpolate(name, i) { + return function(t) { + this.setAttribute(name, i(t)); + }; +} + +function attrInterpolateNS(fullname, i) { + return function(t) { + this.setAttributeNS(fullname.space, fullname.local, i(t)); + }; +} + +function attrTweenNS(fullname, value) { + var t0, i0; + function tween() { + var i = value.apply(this, arguments); + if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); + return t0; + } + tween._value = value; + return tween; +} + +function attrTween(name, value) { + var t0, i0; + function tween() { + var i = value.apply(this, arguments); + if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); + return t0; + } + tween._value = value; + return tween; +} + +function transition_attrTween(name, value) { + var key = "attr." + name; + if (arguments.length < 2) return (key = this.tween(key)) && key._value; + if (value == null) return this.tween(key, null); + if (typeof value !== "function") throw new Error; + var fullname = d3Selection.namespace(name); + return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); +} + +function delayFunction(id, value) { + return function() { + init(this, id).delay = +value.apply(this, arguments); + }; +} + +function delayConstant(id, value) { + return value = +value, function() { + init(this, id).delay = value; + }; +} + +function transition_delay(value) { + var id = this._id; + + return arguments.length + ? this.each((typeof value === "function" + ? delayFunction + : delayConstant)(id, value)) + : get(this.node(), id).delay; +} + +function durationFunction(id, value) { + return function() { + set(this, id).duration = +value.apply(this, arguments); + }; +} + +function durationConstant(id, value) { + return value = +value, function() { + set(this, id).duration = value; + }; +} + +function transition_duration(value) { + var id = this._id; + + return arguments.length + ? this.each((typeof value === "function" + ? durationFunction + : durationConstant)(id, value)) + : get(this.node(), id).duration; +} + +function easeConstant(id, value) { + if (typeof value !== "function") throw new Error; + return function() { + set(this, id).ease = value; + }; +} + +function transition_ease(value) { + var id = this._id; + + return arguments.length + ? this.each(easeConstant(id, value)) + : get(this.node(), id).ease; +} + +function transition_filter(match) { + if (typeof match !== "function") match = d3Selection.matcher(match); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { + if ((node = group[i]) && match.call(node, node.__data__, i, group)) { + subgroup.push(node); + } + } + } + + return new Transition(subgroups, this._parents, this._name, this._id); +} + +function transition_merge(transition$$1) { + if (transition$$1._id !== this._id) throw new Error; + + for (var groups0 = this._groups, groups1 = transition$$1._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { + for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { + if (node = group0[i] || group1[i]) { + merge[i] = node; + } + } + } + + for (; j < m0; ++j) { + merges[j] = groups0[j]; + } + + return new Transition(merges, this._parents, this._name, this._id); +} + +function start(name) { + return (name + "").trim().split(/^|\s+/).every(function(t) { + var i = t.indexOf("."); + if (i >= 0) t = t.slice(0, i); + return !t || t === "start"; + }); +} + +function onFunction(id, name, listener) { + var on0, on1, sit = start(name) ? init : set; + return function() { + var schedule$$1 = sit(this, id), + on = schedule$$1.on; + + // If this node shared a dispatch with the previous node, + // just assign the updated shared dispatch and we’re done! + // Otherwise, copy-on-write. + if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); + + schedule$$1.on = on1; + }; +} + +function transition_on(name, listener) { + var id = this._id; + + return arguments.length < 2 + ? get(this.node(), id).on.on(name) + : this.each(onFunction(id, name, listener)); +} + +function removeFunction(id) { + return function() { + var parent = this.parentNode; + for (var i in this.__transition) if (+i !== id) return; + if (parent) parent.removeChild(this); + }; +} + +function transition_remove() { + return this.on("end.remove", removeFunction(this._id)); +} + +function transition_select(select) { + var name = this._name, + id = this._id; + + if (typeof select !== "function") select = d3Selection.selector(select); + + for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { + if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + subgroup[i] = subnode; + schedule(subgroup[i], name, id, i, subgroup, get(node, id)); + } + } + } + + return new Transition(subgroups, this._parents, name, id); +} + +function transition_selectAll(select) { + var name = this._name, + id = this._id; + + if (typeof select !== "function") select = d3Selection.selectorAll(select); + + for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { + if (node = group[i]) { + for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) { + if (child = children[k]) { + schedule(child, name, id, k, children, inherit); + } + } + subgroups.push(children); + parents.push(node); + } + } + } + + return new Transition(subgroups, parents, name, id); +} + +var Selection = d3Selection.selection.prototype.constructor; + +function transition_selection() { + return new Selection(this._groups, this._parents); +} + +function styleNull(name, interpolate$$1) { + var string00, + string10, + interpolate0; + return function() { + var string0 = d3Selection.style(this, name), + string1 = (this.style.removeProperty(name), d3Selection.style(this, name)); + return string0 === string1 ? null + : string0 === string00 && string1 === string10 ? interpolate0 + : interpolate0 = interpolate$$1(string00 = string0, string10 = string1); + }; +} + +function styleRemove(name) { + return function() { + this.style.removeProperty(name); + }; +} + +function styleConstant(name, interpolate$$1, value1) { + var string00, + string1 = value1 + "", + interpolate0; + return function() { + var string0 = d3Selection.style(this, name); + return string0 === string1 ? null + : string0 === string00 ? interpolate0 + : interpolate0 = interpolate$$1(string00 = string0, value1); + }; +} + +function styleFunction(name, interpolate$$1, value) { + var string00, + string10, + interpolate0; + return function() { + var string0 = d3Selection.style(this, name), + value1 = value(this), + string1 = value1 + ""; + if (value1 == null) string1 = value1 = (this.style.removeProperty(name), d3Selection.style(this, name)); + return string0 === string1 ? null + : string0 === string00 && string1 === string10 ? interpolate0 + : (string10 = string1, interpolate0 = interpolate$$1(string00 = string0, value1)); + }; +} + +function styleMaybeRemove(id, name) { + var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; + return function() { + var schedule$$1 = set(this, id), + on = schedule$$1.on, + listener = schedule$$1.value[key] == null ? remove || (remove = styleRemove(name)) : undefined; + + // If this node shared a dispatch with the previous node, + // just assign the updated shared dispatch and we’re done! + // Otherwise, copy-on-write. + if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); + + schedule$$1.on = on1; + }; +} + +function transition_style(name, value, priority) { + var i = (name += "") === "transform" ? d3Interpolate.interpolateTransformCss : interpolate; + return value == null ? this + .styleTween(name, styleNull(name, i)) + .on("end.style." + name, styleRemove(name)) + : typeof value === "function" ? this + .styleTween(name, styleFunction(name, i, tweenValue(this, "style." + name, value))) + .each(styleMaybeRemove(this._id, name)) + : this + .styleTween(name, styleConstant(name, i, value), priority) + .on("end.style." + name, null); +} + +function styleInterpolate(name, i, priority) { + return function(t) { + this.style.setProperty(name, i(t), priority); + }; +} + +function styleTween(name, value, priority) { + var t, i0; + function tween() { + var i = value.apply(this, arguments); + if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); + return t; + } + tween._value = value; + return tween; +} + +function transition_styleTween(name, value, priority) { + var key = "style." + (name += ""); + if (arguments.length < 2) return (key = this.tween(key)) && key._value; + if (value == null) return this.tween(key, null); + if (typeof value !== "function") throw new Error; + return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); +} + +function textConstant(value) { + return function() { + this.textContent = value; + }; +} + +function textFunction(value) { + return function() { + var value1 = value(this); + this.textContent = value1 == null ? "" : value1; + }; +} + +function transition_text(value) { + return this.tween("text", typeof value === "function" + ? textFunction(tweenValue(this, "text", value)) + : textConstant(value == null ? "" : value + "")); +} + +function transition_transition() { + var name = this._name, + id0 = this._id, + id1 = newId(); + + for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { + if (node = group[i]) { + var inherit = get(node, id0); + schedule(node, name, id1, i, group, { + time: inherit.time + inherit.delay + inherit.duration, + delay: 0, + duration: inherit.duration, + ease: inherit.ease + }); + } + } + } + + return new Transition(groups, this._parents, name, id1); +} + +function transition_end() { + var on0, on1, that = this, id = that._id, size = that.size(); + return new Promise(function(resolve, reject) { + var cancel = {value: reject}, + end = {value: function() { if (--size === 0) resolve(); }}; + + that.each(function() { + var schedule$$1 = set(this, id), + on = schedule$$1.on; + + // If this node shared a dispatch with the previous node, + // just assign the updated shared dispatch and we’re done! + // Otherwise, copy-on-write. + if (on !== on0) { + on1 = (on0 = on).copy(); + on1._.cancel.push(cancel); + on1._.interrupt.push(cancel); + on1._.end.push(end); + } + + schedule$$1.on = on1; + }); + }); +} + +var id = 0; + +function Transition(groups, parents, name, id) { + this._groups = groups; + this._parents = parents; + this._name = name; + this._id = id; +} + +function transition(name) { + return d3Selection.selection().transition(name); +} + +function newId() { + return ++id; +} + +var selection_prototype = d3Selection.selection.prototype; + +Transition.prototype = transition.prototype = { + constructor: Transition, + select: transition_select, + selectAll: transition_selectAll, + filter: transition_filter, + merge: transition_merge, + selection: transition_selection, + transition: transition_transition, + call: selection_prototype.call, + nodes: selection_prototype.nodes, + node: selection_prototype.node, + size: selection_prototype.size, + empty: selection_prototype.empty, + each: selection_prototype.each, + on: transition_on, + attr: transition_attr, + attrTween: transition_attrTween, + style: transition_style, + styleTween: transition_styleTween, + text: transition_text, + remove: transition_remove, + tween: transition_tween, + delay: transition_delay, + duration: transition_duration, + ease: transition_ease, + end: transition_end +}; + +var defaultTiming = { + time: null, // Set on use. + delay: 0, + duration: 250, + ease: d3Ease.easeCubicInOut +}; + +function inherit(node, id) { + var timing; + while (!(timing = node.__transition) || !(timing = timing[id])) { + if (!(node = node.parentNode)) { + return defaultTiming.time = d3Timer.now(), defaultTiming; + } + } + return timing; +} + +function selection_transition(name) { + var id, + timing; + + if (name instanceof Transition) { + id = name._id, name = name._name; + } else { + id = newId(), (timing = defaultTiming).time = d3Timer.now(), name = name == null ? null : name + ""; + } + + for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { + for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { + if (node = group[i]) { + schedule(node, name, id, i, group, timing || inherit(node, id)); + } + } + } + + return new Transition(groups, this._parents, name, id); +} + +d3Selection.selection.prototype.interrupt = selection_interrupt; +d3Selection.selection.prototype.transition = selection_transition; + +var root = [null]; + +function active(node, name) { + var schedules = node.__transition, + schedule$$1, + i; + + if (schedules) { + name = name == null ? null : name + ""; + for (i in schedules) { + if ((schedule$$1 = schedules[i]).state > SCHEDULED && schedule$$1.name === name) { + return new Transition([[node]], root, name, +i); + } + } + } + + return null; +} + +exports.transition = transition; +exports.active = active; +exports.interrupt = interrupt; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-color":28,"d3-dispatch":31,"d3-ease":34,"d3-interpolate":40,"d3-selection":47,"d3-timer":51}],53:[function(require,module,exports){ +// https://d3js.org/d3-voronoi/ v1.1.4 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : +typeof define === 'function' && define.amd ? define(['exports'], factory) : +(factory((global.d3 = global.d3 || {}))); +}(this, (function (exports) { 'use strict'; + +function constant(x) { + return function() { + return x; + }; +} + +function x(d) { + return d[0]; +} + +function y(d) { + return d[1]; +} + +function RedBlackTree() { + this._ = null; // root node +} + +function RedBlackNode(node) { + node.U = // parent node + node.C = // color - true for red, false for black + node.L = // left node + node.R = // right node + node.P = // previous node + node.N = null; // next node +} + +RedBlackTree.prototype = { + constructor: RedBlackTree, + + insert: function(after, node) { + var parent, grandpa, uncle; + + if (after) { + node.P = after; + node.N = after.N; + if (after.N) after.N.P = node; + after.N = node; + if (after.R) { + after = after.R; + while (after.L) after = after.L; + after.L = node; + } else { + after.R = node; + } + parent = after; + } else if (this._) { + after = RedBlackFirst(this._); + node.P = null; + node.N = after; + after.P = after.L = node; + parent = after; + } else { + node.P = node.N = null; + this._ = node; + parent = null; + } + node.L = node.R = null; + node.U = parent; + node.C = true; + + after = node; + while (parent && parent.C) { + grandpa = parent.U; + if (parent === grandpa.L) { + uncle = grandpa.R; + if (uncle && uncle.C) { + parent.C = uncle.C = false; + grandpa.C = true; + after = grandpa; + } else { + if (after === parent.R) { + RedBlackRotateLeft(this, parent); + after = parent; + parent = after.U; + } + parent.C = false; + grandpa.C = true; + RedBlackRotateRight(this, grandpa); + } + } else { + uncle = grandpa.L; + if (uncle && uncle.C) { + parent.C = uncle.C = false; + grandpa.C = true; + after = grandpa; + } else { + if (after === parent.L) { + RedBlackRotateRight(this, parent); + after = parent; + parent = after.U; + } + parent.C = false; + grandpa.C = true; + RedBlackRotateLeft(this, grandpa); + } + } + parent = after.U; + } + this._.C = false; + }, + + remove: function(node) { + if (node.N) node.N.P = node.P; + if (node.P) node.P.N = node.N; + node.N = node.P = null; + + var parent = node.U, + sibling, + left = node.L, + right = node.R, + next, + red; + + if (!left) next = right; + else if (!right) next = left; + else next = RedBlackFirst(right); + + if (parent) { + if (parent.L === node) parent.L = next; + else parent.R = next; + } else { + this._ = next; + } + + if (left && right) { + red = next.C; + next.C = node.C; + next.L = left; + left.U = next; + if (next !== right) { + parent = next.U; + next.U = node.U; + node = next.R; + parent.L = node; + next.R = right; + right.U = next; + } else { + next.U = parent; + parent = next; + node = next.R; + } + } else { + red = node.C; + node = next; + } + + if (node) node.U = parent; + if (red) return; + if (node && node.C) { node.C = false; return; } + + do { + if (node === this._) break; + if (node === parent.L) { + sibling = parent.R; + if (sibling.C) { + sibling.C = false; + parent.C = true; + RedBlackRotateLeft(this, parent); + sibling = parent.R; + } + if ((sibling.L && sibling.L.C) + || (sibling.R && sibling.R.C)) { + if (!sibling.R || !sibling.R.C) { + sibling.L.C = false; + sibling.C = true; + RedBlackRotateRight(this, sibling); + sibling = parent.R; + } + sibling.C = parent.C; + parent.C = sibling.R.C = false; + RedBlackRotateLeft(this, parent); + node = this._; + break; + } + } else { + sibling = parent.L; + if (sibling.C) { + sibling.C = false; + parent.C = true; + RedBlackRotateRight(this, parent); + sibling = parent.L; + } + if ((sibling.L && sibling.L.C) + || (sibling.R && sibling.R.C)) { + if (!sibling.L || !sibling.L.C) { + sibling.R.C = false; + sibling.C = true; + RedBlackRotateLeft(this, sibling); + sibling = parent.L; + } + sibling.C = parent.C; + parent.C = sibling.L.C = false; + RedBlackRotateRight(this, parent); + node = this._; + break; + } + } + sibling.C = true; + node = parent; + parent = parent.U; + } while (!node.C); + + if (node) node.C = false; + } +}; + +function RedBlackRotateLeft(tree, node) { + var p = node, + q = node.R, + parent = p.U; + + if (parent) { + if (parent.L === p) parent.L = q; + else parent.R = q; + } else { + tree._ = q; + } + + q.U = parent; + p.U = q; + p.R = q.L; + if (p.R) p.R.U = p; + q.L = p; +} + +function RedBlackRotateRight(tree, node) { + var p = node, + q = node.L, + parent = p.U; + + if (parent) { + if (parent.L === p) parent.L = q; + else parent.R = q; + } else { + tree._ = q; + } + + q.U = parent; + p.U = q; + p.L = q.R; + if (p.L) p.L.U = p; + q.R = p; +} + +function RedBlackFirst(node) { + while (node.L) node = node.L; + return node; +} + +function createEdge(left, right, v0, v1) { + var edge = [null, null], + index = edges.push(edge) - 1; + edge.left = left; + edge.right = right; + if (v0) setEdgeEnd(edge, left, right, v0); + if (v1) setEdgeEnd(edge, right, left, v1); + cells[left.index].halfedges.push(index); + cells[right.index].halfedges.push(index); + return edge; +} + +function createBorderEdge(left, v0, v1) { + var edge = [v0, v1]; + edge.left = left; + return edge; +} + +function setEdgeEnd(edge, left, right, vertex) { + if (!edge[0] && !edge[1]) { + edge[0] = vertex; + edge.left = left; + edge.right = right; + } else if (edge.left === right) { + edge[1] = vertex; + } else { + edge[0] = vertex; + } +} + +// Liang–Barsky line clipping. +function clipEdge(edge, x0, y0, x1, y1) { + var a = edge[0], + b = edge[1], + ax = a[0], + ay = a[1], + bx = b[0], + by = b[1], + t0 = 0, + t1 = 1, + dx = bx - ax, + dy = by - ay, + r; + + r = x0 - ax; + if (!dx && r > 0) return; + r /= dx; + if (dx < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dx > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + + r = x1 - ax; + if (!dx && r < 0) return; + r /= dx; + if (dx < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dx > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + + r = y0 - ay; + if (!dy && r > 0) return; + r /= dy; + if (dy < 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } else if (dy > 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } + + r = y1 - ay; + if (!dy && r < 0) return; + r /= dy; + if (dy < 0) { + if (r > t1) return; + if (r > t0) t0 = r; + } else if (dy > 0) { + if (r < t0) return; + if (r < t1) t1 = r; + } + + if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check? + + if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy]; + if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy]; + return true; +} + +function connectEdge(edge, x0, y0, x1, y1) { + var v1 = edge[1]; + if (v1) return true; + + var v0 = edge[0], + left = edge.left, + right = edge.right, + lx = left[0], + ly = left[1], + rx = right[0], + ry = right[1], + fx = (lx + rx) / 2, + fy = (ly + ry) / 2, + fm, + fb; + + if (ry === ly) { + if (fx < x0 || fx >= x1) return; + if (lx > rx) { + if (!v0) v0 = [fx, y0]; + else if (v0[1] >= y1) return; + v1 = [fx, y1]; + } else { + if (!v0) v0 = [fx, y1]; + else if (v0[1] < y0) return; + v1 = [fx, y0]; + } + } else { + fm = (lx - rx) / (ry - ly); + fb = fy - fm * fx; + if (fm < -1 || fm > 1) { + if (lx > rx) { + if (!v0) v0 = [(y0 - fb) / fm, y0]; + else if (v0[1] >= y1) return; + v1 = [(y1 - fb) / fm, y1]; + } else { + if (!v0) v0 = [(y1 - fb) / fm, y1]; + else if (v0[1] < y0) return; + v1 = [(y0 - fb) / fm, y0]; + } + } else { + if (ly < ry) { + if (!v0) v0 = [x0, fm * x0 + fb]; + else if (v0[0] >= x1) return; + v1 = [x1, fm * x1 + fb]; + } else { + if (!v0) v0 = [x1, fm * x1 + fb]; + else if (v0[0] < x0) return; + v1 = [x0, fm * x0 + fb]; + } + } + } + + edge[0] = v0; + edge[1] = v1; + return true; +} + +function clipEdges(x0, y0, x1, y1) { + var i = edges.length, + edge; + + while (i--) { + if (!connectEdge(edge = edges[i], x0, y0, x1, y1) + || !clipEdge(edge, x0, y0, x1, y1) + || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon + || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) { + delete edges[i]; + } + } +} + +function createCell(site) { + return cells[site.index] = { + site: site, + halfedges: [] + }; +} + +function cellHalfedgeAngle(cell, edge) { + var site = cell.site, + va = edge.left, + vb = edge.right; + if (site === vb) vb = va, va = site; + if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]); + if (site === va) va = edge[1], vb = edge[0]; + else va = edge[0], vb = edge[1]; + return Math.atan2(va[0] - vb[0], vb[1] - va[1]); +} + +function cellHalfedgeStart(cell, edge) { + return edge[+(edge.left !== cell.site)]; +} + +function cellHalfedgeEnd(cell, edge) { + return edge[+(edge.left === cell.site)]; +} + +function sortCellHalfedges() { + for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) { + if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) { + var index = new Array(m), + array = new Array(m); + for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]); + index.sort(function(i, j) { return array[j] - array[i]; }); + for (j = 0; j < m; ++j) array[j] = halfedges[index[j]]; + for (j = 0; j < m; ++j) halfedges[j] = array[j]; + } + } +} + +function clipCells(x0, y0, x1, y1) { + var nCells = cells.length, + iCell, + cell, + site, + iHalfedge, + halfedges, + nHalfedges, + start, + startX, + startY, + end, + endX, + endY, + cover = true; + + for (iCell = 0; iCell < nCells; ++iCell) { + if (cell = cells[iCell]) { + site = cell.site; + halfedges = cell.halfedges; + iHalfedge = halfedges.length; + + // Remove any dangling clipped edges. + while (iHalfedge--) { + if (!edges[halfedges[iHalfedge]]) { + halfedges.splice(iHalfedge, 1); + } + } + + // Insert any border edges as necessary. + iHalfedge = 0, nHalfedges = halfedges.length; + while (iHalfedge < nHalfedges) { + end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1]; + start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1]; + if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) { + halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end, + Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1] + : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1] + : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0] + : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0] + : null)) - 1); + ++nHalfedges; + } + } + + if (nHalfedges) cover = false; + } + } + + // If there weren’t any edges, have the closest site cover the extent. + // It doesn’t matter which corner of the extent we measure! + if (cover) { + var dx, dy, d2, dc = Infinity; + + for (iCell = 0, cover = null; iCell < nCells; ++iCell) { + if (cell = cells[iCell]) { + site = cell.site; + dx = site[0] - x0; + dy = site[1] - y0; + d2 = dx * dx + dy * dy; + if (d2 < dc) dc = d2, cover = cell; + } + } + + if (cover) { + var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0]; + cover.halfedges.push( + edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1, + edges.push(createBorderEdge(site, v01, v11)) - 1, + edges.push(createBorderEdge(site, v11, v10)) - 1, + edges.push(createBorderEdge(site, v10, v00)) - 1 + ); + } + } + + // Lastly delete any cells with no edges; these were entirely clipped. + for (iCell = 0; iCell < nCells; ++iCell) { + if (cell = cells[iCell]) { + if (!cell.halfedges.length) { + delete cells[iCell]; + } + } + } +} + +var circlePool = []; + +var firstCircle; + +function Circle() { + RedBlackNode(this); + this.x = + this.y = + this.arc = + this.site = + this.cy = null; +} + +function attachCircle(arc) { + var lArc = arc.P, + rArc = arc.N; + + if (!lArc || !rArc) return; + + var lSite = lArc.site, + cSite = arc.site, + rSite = rArc.site; + + if (lSite === rSite) return; + + var bx = cSite[0], + by = cSite[1], + ax = lSite[0] - bx, + ay = lSite[1] - by, + cx = rSite[0] - bx, + cy = rSite[1] - by; + + var d = 2 * (ax * cy - ay * cx); + if (d >= -epsilon2) return; + + var ha = ax * ax + ay * ay, + hc = cx * cx + cy * cy, + x = (cy * ha - ay * hc) / d, + y = (ax * hc - cx * ha) / d; + + var circle = circlePool.pop() || new Circle; + circle.arc = arc; + circle.site = cSite; + circle.x = x + bx; + circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom + + arc.circle = circle; + + var before = null, + node = circles._; + + while (node) { + if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) { + if (node.L) node = node.L; + else { before = node.P; break; } + } else { + if (node.R) node = node.R; + else { before = node; break; } + } + } + + circles.insert(before, circle); + if (!before) firstCircle = circle; +} + +function detachCircle(arc) { + var circle = arc.circle; + if (circle) { + if (!circle.P) firstCircle = circle.N; + circles.remove(circle); + circlePool.push(circle); + RedBlackNode(circle); + arc.circle = null; + } +} + +var beachPool = []; + +function Beach() { + RedBlackNode(this); + this.edge = + this.site = + this.circle = null; +} + +function createBeach(site) { + var beach = beachPool.pop() || new Beach; + beach.site = site; + return beach; +} + +function detachBeach(beach) { + detachCircle(beach); + beaches.remove(beach); + beachPool.push(beach); + RedBlackNode(beach); +} + +function removeBeach(beach) { + var circle = beach.circle, + x = circle.x, + y = circle.cy, + vertex = [x, y], + previous = beach.P, + next = beach.N, + disappearing = [beach]; + + detachBeach(beach); + + var lArc = previous; + while (lArc.circle + && Math.abs(x - lArc.circle.x) < epsilon + && Math.abs(y - lArc.circle.cy) < epsilon) { + previous = lArc.P; + disappearing.unshift(lArc); + detachBeach(lArc); + lArc = previous; + } + + disappearing.unshift(lArc); + detachCircle(lArc); + + var rArc = next; + while (rArc.circle + && Math.abs(x - rArc.circle.x) < epsilon + && Math.abs(y - rArc.circle.cy) < epsilon) { + next = rArc.N; + disappearing.push(rArc); + detachBeach(rArc); + rArc = next; + } + + disappearing.push(rArc); + detachCircle(rArc); + + var nArcs = disappearing.length, + iArc; + for (iArc = 1; iArc < nArcs; ++iArc) { + rArc = disappearing[iArc]; + lArc = disappearing[iArc - 1]; + setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex); + } + + lArc = disappearing[0]; + rArc = disappearing[nArcs - 1]; + rArc.edge = createEdge(lArc.site, rArc.site, null, vertex); + + attachCircle(lArc); + attachCircle(rArc); +} + +function addBeach(site) { + var x = site[0], + directrix = site[1], + lArc, + rArc, + dxl, + dxr, + node = beaches._; + + while (node) { + dxl = leftBreakPoint(node, directrix) - x; + if (dxl > epsilon) node = node.L; else { + dxr = x - rightBreakPoint(node, directrix); + if (dxr > epsilon) { + if (!node.R) { + lArc = node; + break; + } + node = node.R; + } else { + if (dxl > -epsilon) { + lArc = node.P; + rArc = node; + } else if (dxr > -epsilon) { + lArc = node; + rArc = node.N; + } else { + lArc = rArc = node; + } + break; + } + } + } + + createCell(site); + var newArc = createBeach(site); + beaches.insert(lArc, newArc); + + if (!lArc && !rArc) return; + + if (lArc === rArc) { + detachCircle(lArc); + rArc = createBeach(lArc.site); + beaches.insert(newArc, rArc); + newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site); + attachCircle(lArc); + attachCircle(rArc); + return; + } + + if (!rArc) { // && lArc + newArc.edge = createEdge(lArc.site, newArc.site); + return; + } + + // else lArc !== rArc + detachCircle(lArc); + detachCircle(rArc); + + var lSite = lArc.site, + ax = lSite[0], + ay = lSite[1], + bx = site[0] - ax, + by = site[1] - ay, + rSite = rArc.site, + cx = rSite[0] - ax, + cy = rSite[1] - ay, + d = 2 * (bx * cy - by * cx), + hb = bx * bx + by * by, + hc = cx * cx + cy * cy, + vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay]; + + setEdgeEnd(rArc.edge, lSite, rSite, vertex); + newArc.edge = createEdge(lSite, site, null, vertex); + rArc.edge = createEdge(site, rSite, null, vertex); + attachCircle(lArc); + attachCircle(rArc); +} + +function leftBreakPoint(arc, directrix) { + var site = arc.site, + rfocx = site[0], + rfocy = site[1], + pby2 = rfocy - directrix; + + if (!pby2) return rfocx; + + var lArc = arc.P; + if (!lArc) return -Infinity; + + site = lArc.site; + var lfocx = site[0], + lfocy = site[1], + plby2 = lfocy - directrix; + + if (!plby2) return lfocx; + + var hl = lfocx - rfocx, + aby2 = 1 / pby2 - 1 / plby2, + b = hl / plby2; + + if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx; + + return (rfocx + lfocx) / 2; +} + +function rightBreakPoint(arc, directrix) { + var rArc = arc.N; + if (rArc) return leftBreakPoint(rArc, directrix); + var site = arc.site; + return site[1] === directrix ? site[0] : Infinity; +} + +var epsilon = 1e-6; +var epsilon2 = 1e-12; +var beaches; +var cells; +var circles; +var edges; + +function triangleArea(a, b, c) { + return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]); +} + +function lexicographic(a, b) { + return b[1] - a[1] + || b[0] - a[0]; +} + +function Diagram(sites, extent) { + var site = sites.sort(lexicographic).pop(), + x, + y, + circle; + + edges = []; + cells = new Array(sites.length); + beaches = new RedBlackTree; + circles = new RedBlackTree; + + while (true) { + circle = firstCircle; + if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) { + if (site[0] !== x || site[1] !== y) { + addBeach(site); + x = site[0], y = site[1]; + } + site = sites.pop(); + } else if (circle) { + removeBeach(circle.arc); + } else { + break; + } + } + + sortCellHalfedges(); + + if (extent) { + var x0 = +extent[0][0], + y0 = +extent[0][1], + x1 = +extent[1][0], + y1 = +extent[1][1]; + clipEdges(x0, y0, x1, y1); + clipCells(x0, y0, x1, y1); + } + + this.edges = edges; + this.cells = cells; + + beaches = + circles = + edges = + cells = null; +} + +Diagram.prototype = { + constructor: Diagram, + + polygons: function() { + var edges = this.edges; + + return this.cells.map(function(cell) { + var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); }); + polygon.data = cell.site.data; + return polygon; + }); + }, + + triangles: function() { + var triangles = [], + edges = this.edges; + + this.cells.forEach(function(cell, i) { + if (!(m = (halfedges = cell.halfedges).length)) return; + var site = cell.site, + halfedges, + j = -1, + m, + s0, + e1 = edges[halfedges[m - 1]], + s1 = e1.left === site ? e1.right : e1.left; + + while (++j < m) { + s0 = s1; + e1 = edges[halfedges[j]]; + s1 = e1.left === site ? e1.right : e1.left; + if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) { + triangles.push([site.data, s0.data, s1.data]); + } + } + }); + + return triangles; + }, + + links: function() { + return this.edges.filter(function(edge) { + return edge.right; + }).map(function(edge) { + return { + source: edge.left.data, + target: edge.right.data + }; + }); + }, + + find: function(x, y, radius) { + var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell; + + // Use the previously-found cell, or start with an arbitrary one. + while (!(cell = that.cells[i1])) if (++i1 >= n) return null; + var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy; + + // Traverse the half-edges to find a closer cell, if any. + do { + cell = that.cells[i0 = i1], i1 = null; + cell.halfedges.forEach(function(e) { + var edge = that.edges[e], v = edge.left; + if ((v === cell.site || !v) && !(v = edge.right)) return; + var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy; + if (v2 < d2) d2 = v2, i1 = v.index; + }); + } while (i1 !== null); + + that._found = i0; + + return radius == null || d2 <= radius * radius ? cell.site : null; + } +}; + +function voronoi() { + var x$$1 = x, + y$$1 = y, + extent = null; + + function voronoi(data) { + return new Diagram(data.map(function(d, i) { + var s = [Math.round(x$$1(d, i, data) / epsilon) * epsilon, Math.round(y$$1(d, i, data) / epsilon) * epsilon]; + s.index = i; + s.data = d; + return s; + }), extent); + } + + voronoi.polygons = function(data) { + return voronoi(data).polygons(); + }; + + voronoi.links = function(data) { + return voronoi(data).links(); + }; + + voronoi.triangles = function(data) { + return voronoi(data).triangles(); + }; + + voronoi.x = function(_) { + return arguments.length ? (x$$1 = typeof _ === "function" ? _ : constant(+_), voronoi) : x$$1; + }; + + voronoi.y = function(_) { + return arguments.length ? (y$$1 = typeof _ === "function" ? _ : constant(+_), voronoi) : y$$1; + }; + + voronoi.extent = function(_) { + return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]]; + }; + + voronoi.size = function(_) { + return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]]; + }; + + return voronoi; +} + +exports.voronoi = voronoi; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{}],54:[function(require,module,exports){ +// https://d3js.org/d3-zoom/ v1.7.3 Copyright 2018 Mike Bostock +(function (global, factory) { +typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-drag'), require('d3-interpolate'), require('d3-transition')) : +typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-drag', 'd3-interpolate', 'd3-transition'], factory) : +(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3)); +}(this, (function (exports,d3Selection,d3Dispatch,d3Drag,d3Interpolate,d3Transition) { 'use strict'; + +function constant(x) { + return function() { + return x; + }; +} + +function ZoomEvent(target, type, transform) { + this.target = target; + this.type = type; + this.transform = transform; +} + +function Transform(k, x, y) { + this.k = k; + this.x = x; + this.y = y; +} + +Transform.prototype = { + constructor: Transform, + scale: function(k) { + return k === 1 ? this : new Transform(this.k * k, this.x, this.y); + }, + translate: function(x, y) { + return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); + }, + apply: function(point) { + return [point[0] * this.k + this.x, point[1] * this.k + this.y]; + }, + applyX: function(x) { + return x * this.k + this.x; + }, + applyY: function(y) { + return y * this.k + this.y; + }, + invert: function(location) { + return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; + }, + invertX: function(x) { + return (x - this.x) / this.k; + }, + invertY: function(y) { + return (y - this.y) / this.k; + }, + rescaleX: function(x) { + return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); + }, + rescaleY: function(y) { + return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); + }, + toString: function() { + return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; + } +}; + +var identity = new Transform(1, 0, 0); + +transform.prototype = Transform.prototype; + +function transform(node) { + return node.__zoom || identity; +} + +function nopropagation() { + d3Selection.event.stopImmediatePropagation(); +} + +function noevent() { + d3Selection.event.preventDefault(); + d3Selection.event.stopImmediatePropagation(); +} + +// Ignore right-click, since that should open the context menu. +function defaultFilter() { + return !d3Selection.event.button; +} + +function defaultExtent() { + var e = this, w, h; + if (e instanceof SVGElement) { + e = e.ownerSVGElement || e; + w = e.width.baseVal.value; + h = e.height.baseVal.value; + } else { + w = e.clientWidth; + h = e.clientHeight; + } + return [[0, 0], [w, h]]; +} + +function defaultTransform() { + return this.__zoom || identity; +} + +function defaultWheelDelta() { + return -d3Selection.event.deltaY * (d3Selection.event.deltaMode ? 120 : 1) / 500; +} + +function defaultTouchable() { + return "ontouchstart" in this; +} + +function defaultConstrain(transform$$1, extent, translateExtent) { + var dx0 = transform$$1.invertX(extent[0][0]) - translateExtent[0][0], + dx1 = transform$$1.invertX(extent[1][0]) - translateExtent[1][0], + dy0 = transform$$1.invertY(extent[0][1]) - translateExtent[0][1], + dy1 = transform$$1.invertY(extent[1][1]) - translateExtent[1][1]; + return transform$$1.translate( + dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), + dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) + ); +} + +function zoom() { + var filter = defaultFilter, + extent = defaultExtent, + constrain = defaultConstrain, + wheelDelta = defaultWheelDelta, + touchable = defaultTouchable, + scaleExtent = [0, Infinity], + translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], + duration = 250, + interpolate = d3Interpolate.interpolateZoom, + gestures = [], + listeners = d3Dispatch.dispatch("start", "zoom", "end"), + touchstarting, + touchending, + touchDelay = 500, + wheelDelay = 150, + clickDistance2 = 0; + + function zoom(selection) { + selection + .property("__zoom", defaultTransform) + .on("wheel.zoom", wheeled) + .on("mousedown.zoom", mousedowned) + .on("dblclick.zoom", dblclicked) + .filter(touchable) + .on("touchstart.zoom", touchstarted) + .on("touchmove.zoom", touchmoved) + .on("touchend.zoom touchcancel.zoom", touchended) + .style("touch-action", "none") + .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + + zoom.transform = function(collection, transform$$1) { + var selection = collection.selection ? collection.selection() : collection; + selection.property("__zoom", defaultTransform); + if (collection !== selection) { + schedule(collection, transform$$1); + } else { + selection.interrupt().each(function() { + gesture(this, arguments) + .start() + .zoom(null, typeof transform$$1 === "function" ? transform$$1.apply(this, arguments) : transform$$1) + .end(); + }); + } + }; + + zoom.scaleBy = function(selection, k) { + zoom.scaleTo(selection, function() { + var k0 = this.__zoom.k, + k1 = typeof k === "function" ? k.apply(this, arguments) : k; + return k0 * k1; + }); + }; + + zoom.scaleTo = function(selection, k) { + zoom.transform(selection, function() { + var e = extent.apply(this, arguments), + t0 = this.__zoom, + p0 = centroid(e), + p1 = t0.invert(p0), + k1 = typeof k === "function" ? k.apply(this, arguments) : k; + return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); + }); + }; + + zoom.translateBy = function(selection, x, y) { + zoom.transform(selection, function() { + return constrain(this.__zoom.translate( + typeof x === "function" ? x.apply(this, arguments) : x, + typeof y === "function" ? y.apply(this, arguments) : y + ), extent.apply(this, arguments), translateExtent); + }); + }; + + zoom.translateTo = function(selection, x, y) { + zoom.transform(selection, function() { + var e = extent.apply(this, arguments), + t = this.__zoom, + p = centroid(e); + return constrain(identity.translate(p[0], p[1]).scale(t.k).translate( + typeof x === "function" ? -x.apply(this, arguments) : -x, + typeof y === "function" ? -y.apply(this, arguments) : -y + ), e, translateExtent); + }); + }; + + function scale(transform$$1, k) { + k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); + return k === transform$$1.k ? transform$$1 : new Transform(k, transform$$1.x, transform$$1.y); + } + + function translate(transform$$1, p0, p1) { + var x = p0[0] - p1[0] * transform$$1.k, y = p0[1] - p1[1] * transform$$1.k; + return x === transform$$1.x && y === transform$$1.y ? transform$$1 : new Transform(transform$$1.k, x, y); + } + + function centroid(extent) { + return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; + } + + function schedule(transition, transform$$1, center) { + transition + .on("start.zoom", function() { gesture(this, arguments).start(); }) + .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) + .tween("zoom", function() { + var that = this, + args = arguments, + g = gesture(that, args), + e = extent.apply(that, args), + p = center || centroid(e), + w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), + a = that.__zoom, + b = typeof transform$$1 === "function" ? transform$$1.apply(that, args) : transform$$1, + i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); + return function(t) { + if (t === 1) t = b; // Avoid rounding error on end. + else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } + g.zoom(null, t); + }; + }); + } + + function gesture(that, args) { + for (var i = 0, n = gestures.length, g; i < n; ++i) { + if ((g = gestures[i]).that === that) { + return g; + } + } + return new Gesture(that, args); + } + + function Gesture(that, args) { + this.that = that; + this.args = args; + this.index = -1; + this.active = 0; + this.extent = extent.apply(that, args); + } + + Gesture.prototype = { + start: function() { + if (++this.active === 1) { + this.index = gestures.push(this) - 1; + this.emit("start"); + } + return this; + }, + zoom: function(key, transform$$1) { + if (this.mouse && key !== "mouse") this.mouse[1] = transform$$1.invert(this.mouse[0]); + if (this.touch0 && key !== "touch") this.touch0[1] = transform$$1.invert(this.touch0[0]); + if (this.touch1 && key !== "touch") this.touch1[1] = transform$$1.invert(this.touch1[0]); + this.that.__zoom = transform$$1; + this.emit("zoom"); + return this; + }, + end: function() { + if (--this.active === 0) { + gestures.splice(this.index, 1); + this.index = -1; + this.emit("end"); + } + return this; + }, + emit: function(type) { + d3Selection.customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); + } + }; + + function wheeled() { + if (!filter.apply(this, arguments)) return; + var g = gesture(this, arguments), + t = this.__zoom, + k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), + p = d3Selection.mouse(this); + + // If the mouse is in the same location as before, reuse it. + // If there were recent wheel events, reset the wheel idle timeout. + if (g.wheel) { + if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { + g.mouse[1] = t.invert(g.mouse[0] = p); + } + clearTimeout(g.wheel); + } + + // If this wheel event won’t trigger a transform change, ignore it. + else if (t.k === k) return; + + // Otherwise, capture the mouse point and location at the start. + else { + g.mouse = [p, t.invert(p)]; + d3Transition.interrupt(this); + g.start(); + } + + noevent(); + g.wheel = setTimeout(wheelidled, wheelDelay); + g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); + + function wheelidled() { + g.wheel = null; + g.end(); + } + } + + function mousedowned() { + if (touchending || !filter.apply(this, arguments)) return; + var g = gesture(this, arguments), + v = d3Selection.select(d3Selection.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), + p = d3Selection.mouse(this), + x0 = d3Selection.event.clientX, + y0 = d3Selection.event.clientY; + + d3Drag.dragDisable(d3Selection.event.view); + nopropagation(); + g.mouse = [p, this.__zoom.invert(p)]; + d3Transition.interrupt(this); + g.start(); + + function mousemoved() { + noevent(); + if (!g.moved) { + var dx = d3Selection.event.clientX - x0, dy = d3Selection.event.clientY - y0; + g.moved = dx * dx + dy * dy > clickDistance2; + } + g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = d3Selection.mouse(g.that), g.mouse[1]), g.extent, translateExtent)); + } + + function mouseupped() { + v.on("mousemove.zoom mouseup.zoom", null); + d3Drag.dragEnable(d3Selection.event.view, g.moved); + noevent(); + g.end(); + } + } + + function dblclicked() { + if (!filter.apply(this, arguments)) return; + var t0 = this.__zoom, + p0 = d3Selection.mouse(this), + p1 = t0.invert(p0), + k1 = t0.k * (d3Selection.event.shiftKey ? 0.5 : 2), + t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent); + + noevent(); + if (duration > 0) d3Selection.select(this).transition().duration(duration).call(schedule, t1, p0); + else d3Selection.select(this).call(zoom.transform, t1); + } + + function touchstarted() { + if (!filter.apply(this, arguments)) return; + var g = gesture(this, arguments), + touches = d3Selection.event.changedTouches, + started, + n = touches.length, i, t, p; + + nopropagation(); + for (i = 0; i < n; ++i) { + t = touches[i], p = d3Selection.touch(this, touches, t.identifier); + p = [p, this.__zoom.invert(p), t.identifier]; + if (!g.touch0) g.touch0 = p, started = true; + else if (!g.touch1) g.touch1 = p; + } + + // If this is a dbltap, reroute to the (optional) dblclick.zoom handler. + if (touchstarting) { + touchstarting = clearTimeout(touchstarting); + if (!g.touch1) { + g.end(); + p = d3Selection.select(this).on("dblclick.zoom"); + if (p) p.apply(this, arguments); + return; + } + } + + if (started) { + touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); + d3Transition.interrupt(this); + g.start(); + } + } + + function touchmoved() { + var g = gesture(this, arguments), + touches = d3Selection.event.changedTouches, + n = touches.length, i, t, p, l; + + noevent(); + if (touchstarting) touchstarting = clearTimeout(touchstarting); + for (i = 0; i < n; ++i) { + t = touches[i], p = d3Selection.touch(this, touches, t.identifier); + if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; + else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; + } + t = g.that.__zoom; + if (g.touch1) { + var p0 = g.touch0[0], l0 = g.touch0[1], + p1 = g.touch1[0], l1 = g.touch1[1], + dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, + dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; + t = scale(t, Math.sqrt(dp / dl)); + p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; + l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; + } + else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; + else return; + g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); + } + + function touchended() { + var g = gesture(this, arguments), + touches = d3Selection.event.changedTouches, + n = touches.length, i, t; + + nopropagation(); + if (touchending) clearTimeout(touchending); + touchending = setTimeout(function() { touchending = null; }, touchDelay); + for (i = 0; i < n; ++i) { + t = touches[i]; + if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; + else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; + } + if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; + if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); + else g.end(); + } + + zoom.wheelDelta = function(_) { + return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant(+_), zoom) : wheelDelta; + }; + + zoom.filter = function(_) { + return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), zoom) : filter; + }; + + zoom.touchable = function(_) { + return arguments.length ? (touchable = typeof _ === "function" ? _ : constant(!!_), zoom) : touchable; + }; + + zoom.extent = function(_) { + return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; + }; + + zoom.scaleExtent = function(_) { + return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; + }; + + zoom.translateExtent = function(_) { + return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; + }; + + zoom.constrain = function(_) { + return arguments.length ? (constrain = _, zoom) : constrain; + }; + + zoom.duration = function(_) { + return arguments.length ? (duration = +_, zoom) : duration; + }; + + zoom.interpolate = function(_) { + return arguments.length ? (interpolate = _, zoom) : interpolate; + }; + + zoom.on = function() { + var value = listeners.on.apply(listeners, arguments); + return value === listeners ? zoom : value; + }; + + zoom.clickDistance = function(_) { + return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); + }; + + return zoom; +} + +exports.zoom = zoom; +exports.zoomTransform = transform; +exports.zoomIdentity = identity; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +},{"d3-dispatch":31,"d3-drag":32,"d3-interpolate":40,"d3-selection":47,"d3-transition":52}],55:[function(require,module,exports){ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var d3Array = require('d3-array'); +var d3Axis = require('d3-axis'); +var d3Brush = require('d3-brush'); +var d3Chord = require('d3-chord'); +var d3Collection = require('d3-collection'); +var d3Color = require('d3-color'); +var d3Contour = require('d3-contour'); +var d3Dispatch = require('d3-dispatch'); +var d3Drag = require('d3-drag'); +var d3Dsv = require('d3-dsv'); +var d3Ease = require('d3-ease'); +var d3Fetch = require('d3-fetch'); +var d3Force = require('d3-force'); +var d3Format = require('d3-format'); +var d3Geo = require('d3-geo'); +var d3Hierarchy = require('d3-hierarchy'); +var d3Interpolate = require('d3-interpolate'); +var d3Path = require('d3-path'); +var d3Polygon = require('d3-polygon'); +var d3Quadtree = require('d3-quadtree'); +var d3Random = require('d3-random'); +var d3Scale = require('d3-scale'); +var d3ScaleChromatic = require('d3-scale-chromatic'); +var d3Selection = require('d3-selection'); +var d3Shape = require('d3-shape'); +var d3Time = require('d3-time'); +var d3TimeFormat = require('d3-time-format'); +var d3Timer = require('d3-timer'); +var d3Transition = require('d3-transition'); +var d3Voronoi = require('d3-voronoi'); +var d3Zoom = require('d3-zoom'); + +var version = "5.9.2"; + +Object.keys(d3Array).forEach(function (key) { exports[key] = d3Array[key]; }); +Object.keys(d3Axis).forEach(function (key) { exports[key] = d3Axis[key]; }); +Object.keys(d3Brush).forEach(function (key) { exports[key] = d3Brush[key]; }); +Object.keys(d3Chord).forEach(function (key) { exports[key] = d3Chord[key]; }); +Object.keys(d3Collection).forEach(function (key) { exports[key] = d3Collection[key]; }); +Object.keys(d3Color).forEach(function (key) { exports[key] = d3Color[key]; }); +Object.keys(d3Contour).forEach(function (key) { exports[key] = d3Contour[key]; }); +Object.keys(d3Dispatch).forEach(function (key) { exports[key] = d3Dispatch[key]; }); +Object.keys(d3Drag).forEach(function (key) { exports[key] = d3Drag[key]; }); +Object.keys(d3Dsv).forEach(function (key) { exports[key] = d3Dsv[key]; }); +Object.keys(d3Ease).forEach(function (key) { exports[key] = d3Ease[key]; }); +Object.keys(d3Fetch).forEach(function (key) { exports[key] = d3Fetch[key]; }); +Object.keys(d3Force).forEach(function (key) { exports[key] = d3Force[key]; }); +Object.keys(d3Format).forEach(function (key) { exports[key] = d3Format[key]; }); +Object.keys(d3Geo).forEach(function (key) { exports[key] = d3Geo[key]; }); +Object.keys(d3Hierarchy).forEach(function (key) { exports[key] = d3Hierarchy[key]; }); +Object.keys(d3Interpolate).forEach(function (key) { exports[key] = d3Interpolate[key]; }); +Object.keys(d3Path).forEach(function (key) { exports[key] = d3Path[key]; }); +Object.keys(d3Polygon).forEach(function (key) { exports[key] = d3Polygon[key]; }); +Object.keys(d3Quadtree).forEach(function (key) { exports[key] = d3Quadtree[key]; }); +Object.keys(d3Random).forEach(function (key) { exports[key] = d3Random[key]; }); +Object.keys(d3Scale).forEach(function (key) { exports[key] = d3Scale[key]; }); +Object.keys(d3ScaleChromatic).forEach(function (key) { exports[key] = d3ScaleChromatic[key]; }); +Object.keys(d3Selection).forEach(function (key) { exports[key] = d3Selection[key]; }); +Object.keys(d3Shape).forEach(function (key) { exports[key] = d3Shape[key]; }); +Object.keys(d3Time).forEach(function (key) { exports[key] = d3Time[key]; }); +Object.keys(d3TimeFormat).forEach(function (key) { exports[key] = d3TimeFormat[key]; }); +Object.keys(d3Timer).forEach(function (key) { exports[key] = d3Timer[key]; }); +Object.keys(d3Transition).forEach(function (key) { exports[key] = d3Transition[key]; }); +Object.keys(d3Voronoi).forEach(function (key) { exports[key] = d3Voronoi[key]; }); +Object.keys(d3Zoom).forEach(function (key) { exports[key] = d3Zoom[key]; }); +exports.version = version; +Object.defineProperty(exports, "event", {get: function() { return d3Selection.event; }}); + +},{"d3-array":23,"d3-axis":24,"d3-brush":25,"d3-chord":26,"d3-collection":27,"d3-color":28,"d3-contour":29,"d3-dispatch":31,"d3-drag":32,"d3-dsv":33,"d3-ease":34,"d3-fetch":35,"d3-force":36,"d3-format":37,"d3-geo":38,"d3-hierarchy":39,"d3-interpolate":40,"d3-path":41,"d3-polygon":42,"d3-quadtree":43,"d3-random":44,"d3-scale":46,"d3-scale-chromatic":45,"d3-selection":47,"d3-shape":48,"d3-time":50,"d3-time-format":49,"d3-timer":51,"d3-transition":52,"d3-voronoi":53,"d3-zoom":54}],56:[function(require,module,exports){ +// since we are requiring the top level of faker, load all locales by default +var Faker = require('./lib'); +var faker = new Faker({ locales: require('./lib/locales') }); +module['exports'] = faker; +},{"./lib":68,"./lib/locales":70}],57:[function(require,module,exports){ +/** + * + * @namespace faker.address + */ +function Address (faker) { + var f = faker.fake, + Helpers = faker.helpers; + + /** + * Generates random zipcode from format. If format is not specified, the + * locale's zip format is used. + * + * @method faker.address.zipCode + * @param {String} format + */ + this.zipCode = function(format) { + // if zip format is not specified, use the zip format defined for the locale + if (typeof format === 'undefined') { + var localeFormat = faker.definitions.address.postcode; + if (typeof localeFormat === 'string') { + format = localeFormat; + } else { + format = faker.random.arrayElement(localeFormat); + } + } + return Helpers.replaceSymbols(format); + } + + /** + * Generates a random localized city name. The format string can contain any + * method provided by faker wrapped in `{{}}`, e.g. `{{name.firstName}}` in + * order to build the city name. + * + * If no format string is provided one of the following is randomly used: + * + * * `{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}` + * * `{{address.cityPrefix}} {{name.firstName}}` + * * `{{name.firstName}}{{address.citySuffix}}` + * * `{{name.lastName}}{{address.citySuffix}}` + * + * @method faker.address.city + * @param {String} format + */ + this.city = function (format) { + var formats = [ + '{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}', + '{{address.cityPrefix}} {{name.firstName}}', + '{{name.firstName}}{{address.citySuffix}}', + '{{name.lastName}}{{address.citySuffix}}' + ]; + + if (typeof format !== "number") { + format = faker.random.number(formats.length - 1); + } + + return f(formats[format]); + + } + + /** + * Return a random localized city prefix + * @method faker.address.cityPrefix + */ + this.cityPrefix = function () { + return faker.random.arrayElement(faker.definitions.address.city_prefix); + } + + /** + * Return a random localized city suffix + * + * @method faker.address.citySuffix + */ + this.citySuffix = function () { + return faker.random.arrayElement(faker.definitions.address.city_suffix); + } + + /** + * Returns a random localized street name + * + * @method faker.address.streetName + */ + this.streetName = function () { + var result; + var suffix = faker.address.streetSuffix(); + if (suffix !== "") { + suffix = " " + suffix + } + + switch (faker.random.number(1)) { + case 0: + result = faker.name.lastName() + suffix; + break; + case 1: + result = faker.name.firstName() + suffix; + break; + } + return result; + } + + // + // TODO: change all these methods that accept a boolean to instead accept an options hash. + // + /** + * Returns a random localized street address + * + * @method faker.address.streetAddress + * @param {Boolean} useFullAddress + */ + this.streetAddress = function (useFullAddress) { + if (useFullAddress === undefined) { useFullAddress = false; } + var address = ""; + switch (faker.random.number(2)) { + case 0: + address = Helpers.replaceSymbolWithNumber("#####") + " " + faker.address.streetName(); + break; + case 1: + address = Helpers.replaceSymbolWithNumber("####") + " " + faker.address.streetName(); + break; + case 2: + address = Helpers.replaceSymbolWithNumber("###") + " " + faker.address.streetName(); + break; + } + return useFullAddress ? (address + " " + faker.address.secondaryAddress()) : address; + } + + /** + * streetSuffix + * + * @method faker.address.streetSuffix + */ + this.streetSuffix = function () { + return faker.random.arrayElement(faker.definitions.address.street_suffix); + } + + /** + * streetPrefix + * + * @method faker.address.streetPrefix + */ + this.streetPrefix = function () { + return faker.random.arrayElement(faker.definitions.address.street_prefix); + } + + /** + * secondaryAddress + * + * @method faker.address.secondaryAddress + */ + this.secondaryAddress = function () { + return Helpers.replaceSymbolWithNumber(faker.random.arrayElement( + [ + 'Apt. ###', + 'Suite ###' + ] + )); + } + + /** + * county + * + * @method faker.address.county + */ + this.county = function () { + return faker.random.arrayElement(faker.definitions.address.county); + } + + /** + * country + * + * @method faker.address.country + */ + this.country = function () { + return faker.random.arrayElement(faker.definitions.address.country); + } + + /** + * countryCode + * + * @method faker.address.countryCode + */ + this.countryCode = function () { + return faker.random.arrayElement(faker.definitions.address.country_code); + } + + /** + * state + * + * @method faker.address.state + * @param {Boolean} useAbbr + */ + this.state = function (useAbbr) { + return faker.random.arrayElement(faker.definitions.address.state); + } + + /** + * stateAbbr + * + * @method faker.address.stateAbbr + */ + this.stateAbbr = function () { + return faker.random.arrayElement(faker.definitions.address.state_abbr); + } + + /** + * latitude + * + * @method faker.address.latitude + */ + this.latitude = function () { + return (faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4); + } + + /** + * longitude + * + * @method faker.address.longitude + */ + this.longitude = function () { + return (faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4); + } + + return this; +} + + +module.exports = Address; + +},{}],58:[function(require,module,exports){ +/** + * + * @namespace faker.commerce + */ +var Commerce = function (faker) { + var self = this; + + /** + * color + * + * @method faker.commerce.color + */ + self.color = function() { + return faker.random.arrayElement(faker.definitions.commerce.color); + }; + + /** + * department + * + * @method faker.commerce.department + */ + self.department = function() { + return faker.random.arrayElement(faker.definitions.commerce.department); + }; + + /** + * productName + * + * @method faker.commerce.productName + */ + self.productName = function() { + return faker.commerce.productAdjective() + " " + + faker.commerce.productMaterial() + " " + + faker.commerce.product(); + }; + + /** + * price + * + * @method faker.commerce.price + * @param {number} min + * @param {number} max + * @param {number} dec + * @param {string} symbol + * + * @return {string} + */ + self.price = function(min, max, dec, symbol) { + min = min || 0; + max = max || 1000; + dec = dec === undefined ? 2 : dec; + symbol = symbol || ''; + + if (min < 0 || max < 0) { + return symbol + 0.00; + } + + var randValue = faker.random.number({ max: max, min: min }); + + return symbol + (Math.round(randValue * Math.pow(10, dec)) / Math.pow(10, dec)).toFixed(dec); + }; + + /* + self.categories = function(num) { + var categories = []; + + do { + var category = faker.random.arrayElement(faker.definitions.commerce.department); + if(categories.indexOf(category) === -1) { + categories.push(category); + } + } while(categories.length < num); + + return categories; + }; + + */ + /* + self.mergeCategories = function(categories) { + var separator = faker.definitions.separator || " &"; + // TODO: find undefined here + categories = categories || faker.definitions.commerce.categories; + var commaSeparated = categories.slice(0, -1).join(', '); + + return [commaSeparated, categories[categories.length - 1]].join(separator + " "); + }; + */ + + /** + * productAdjective + * + * @method faker.commerce.productAdjective + */ + self.productAdjective = function() { + return faker.random.arrayElement(faker.definitions.commerce.product_name.adjective); + }; + + /** + * productMaterial + * + * @method faker.commerce.productMaterial + */ + self.productMaterial = function() { + return faker.random.arrayElement(faker.definitions.commerce.product_name.material); + }; + + /** + * product + * + * @method faker.commerce.product + */ + self.product = function() { + return faker.random.arrayElement(faker.definitions.commerce.product_name.product); + }; + + return self; +}; + +module['exports'] = Commerce; + +},{}],59:[function(require,module,exports){ +/** + * + * @namespace faker.company + */ +var Company = function (faker) { + + var self = this; + var f = faker.fake; + + /** + * suffixes + * + * @method faker.company.suffixes + */ + this.suffixes = function () { + // Don't want the source array exposed to modification, so return a copy + return faker.definitions.company.suffix.slice(0); + } + + /** + * companyName + * + * @method faker.company.companyName + * @param {string} format + */ + this.companyName = function (format) { + + var formats = [ + '{{name.lastName}} {{company.companySuffix}}', + '{{name.lastName}} - {{name.lastName}}', + '{{name.lastName}}, {{name.lastName}} and {{name.lastName}}' + ]; + + if (typeof format !== "number") { + format = faker.random.number(formats.length - 1); + } + + return f(formats[format]); + } + + /** + * companySuffix + * + * @method faker.company.companySuffix + */ + this.companySuffix = function () { + return faker.random.arrayElement(faker.company.suffixes()); + } + + /** + * catchPhrase + * + * @method faker.company.catchPhrase + */ + this.catchPhrase = function () { + return f('{{company.catchPhraseAdjective}} {{company.catchPhraseDescriptor}} {{company.catchPhraseNoun}}') + } + + /** + * bs + * + * @method faker.company.bs + */ + this.bs = function () { + return f('{{company.bsAdjective}} {{company.bsBuzz}} {{company.bsNoun}}'); + } + + /** + * catchPhraseAdjective + * + * @method faker.company.catchPhraseAdjective + */ + this.catchPhraseAdjective = function () { + return faker.random.arrayElement(faker.definitions.company.adjective); + } + + /** + * catchPhraseDescriptor + * + * @method faker.company.catchPhraseDescriptor + */ + this.catchPhraseDescriptor = function () { + return faker.random.arrayElement(faker.definitions.company.descriptor); + } + + /** + * catchPhraseNoun + * + * @method faker.company.catchPhraseNoun + */ + this.catchPhraseNoun = function () { + return faker.random.arrayElement(faker.definitions.company.noun); + } + + /** + * bsAdjective + * + * @method faker.company.bsAdjective + */ + this.bsAdjective = function () { + return faker.random.arrayElement(faker.definitions.company.bs_adjective); + } + + /** + * bsBuzz + * + * @method faker.company.bsBuzz + */ + this.bsBuzz = function () { + return faker.random.arrayElement(faker.definitions.company.bs_verb); + } + + /** + * bsNoun + * + * @method faker.company.bsNoun + */ + this.bsNoun = function () { + return faker.random.arrayElement(faker.definitions.company.bs_noun); + } + +} + +module['exports'] = Company; +},{}],60:[function(require,module,exports){ +/** + * + * @namespace faker.database + */ +var Database = function (faker) { + var self = this; + /** + * column + * + * @method faker.database.column + */ + self.column = function () { + return faker.random.arrayElement(faker.definitions.database.column); + }; + + self.column.schema = { + "description": "Generates a column name.", + "sampleResults": ["id", "title", "createdAt"] + }; + + /** + * type + * + * @method faker.database.type + */ + self.type = function () { + return faker.random.arrayElement(faker.definitions.database.type); + }; + + self.type.schema = { + "description": "Generates a column type.", + "sampleResults": ["byte", "int", "varchar", "timestamp"] + }; + + /** + * collation + * + * @method faker.database.collation + */ + self.collation = function () { + return faker.random.arrayElement(faker.definitions.database.collation); + }; + + self.collation.schema = { + "description": "Generates a collation.", + "sampleResults": ["utf8_unicode_ci", "utf8_bin"] + }; + + /** + * engine + * + * @method faker.database.engine + */ + self.engine = function () { + return faker.random.arrayElement(faker.definitions.database.engine); + }; + + self.engine.schema = { + "description": "Generates a storage engine.", + "sampleResults": ["MyISAM", "InnoDB"] + }; +}; + +module["exports"] = Database; + +},{}],61:[function(require,module,exports){ +/** + * + * @namespace faker.date + */ +var _Date = function (faker) { + var self = this; + /** + * past + * + * @method faker.date.past + * @param {number} years + * @param {date} refDate + */ + self.past = function (years, refDate) { + var date = (refDate) ? new Date(Date.parse(refDate)) : new Date(); + var range = { + min: 1000, + max: (years || 1) * 365 * 24 * 3600 * 1000 + }; + + var past = date.getTime(); + past -= faker.random.number(range); // some time from now to N years ago, in milliseconds + date.setTime(past); + + return date; + }; + + /** + * future + * + * @method faker.date.future + * @param {number} years + * @param {date} refDate + */ + self.future = function (years, refDate) { + var date = (refDate) ? new Date(Date.parse(refDate)) : new Date(); + var range = { + min: 1000, + max: (years || 1) * 365 * 24 * 3600 * 1000 + }; + + var future = date.getTime(); + future += faker.random.number(range); // some time from now to N years later, in milliseconds + date.setTime(future); + + return date; + }; + + /** + * between + * + * @method faker.date.between + * @param {date} from + * @param {date} to + */ + self.between = function (from, to) { + var fromMilli = Date.parse(from); + var dateOffset = faker.random.number(Date.parse(to) - fromMilli); + + var newDate = new Date(fromMilli + dateOffset); + + return newDate; + }; + + /** + * recent + * + * @method faker.date.recent + * @param {number} days + */ + self.recent = function (days) { + var date = new Date(); + var range = { + min: 1000, + max: (days || 1) * 24 * 3600 * 1000 + }; + + var future = date.getTime(); + future -= faker.random.number(range); // some time from now to N days ago, in milliseconds + date.setTime(future); + + return date; + }; + + /** + * month + * + * @method faker.date.month + * @param {object} options + */ + self.month = function (options) { + options = options || {}; + + var type = 'wide'; + if (options.abbr) { + type = 'abbr'; + } + if (options.context && typeof faker.definitions.date.month[type + '_context'] !== 'undefined') { + type += '_context'; + } + + var source = faker.definitions.date.month[type]; + + return faker.random.arrayElement(source); + }; + + /** + * weekday + * + * @param {object} options + * @method faker.date.weekday + */ + self.weekday = function (options) { + options = options || {}; + + var type = 'wide'; + if (options.abbr) { + type = 'abbr'; + } + if (options.context && typeof faker.definitions.date.weekday[type + '_context'] !== 'undefined') { + type += '_context'; + } + + var source = faker.definitions.date.weekday[type]; + + return faker.random.arrayElement(source); + }; + + return self; + +}; + +module['exports'] = _Date; +},{}],62:[function(require,module,exports){ +/* + fake.js - generator method for combining faker methods based on string input + +*/ + +function Fake (faker) { + + /** + * Generator method for combining faker methods based on string input + * + * __Example:__ + * + * ``` + * console.log(faker.fake('{{name.lastName}}, {{name.firstName}} {{name.suffix}}')); + * //outputs: "Marks, Dean Sr." + * ``` + * + * This will interpolate the format string with the value of methods + * [name.lastName]{@link faker.name.lastName}, [name.firstName]{@link faker.name.firstName}, + * and [name.suffix]{@link faker.name.suffix} + * + * @method faker.fake + * @param {string} str + */ + this.fake = function fake (str) { + // setup default response as empty string + var res = ''; + + // if incoming str parameter is not provided, return error message + if (typeof str !== 'string' || str.length === 0) { + res = 'string parameter is required!'; + return res; + } + + // find first matching {{ and }} + var start = str.search('{{'); + var end = str.search('}}'); + + // if no {{ and }} is found, we are done + if (start === -1 && end === -1) { + return str; + } + + // console.log('attempting to parse', str); + + // extract method name from between the {{ }} that we found + // for example: {{name.firstName}} + var token = str.substr(start + 2, end - start - 2); + var method = token.replace('}}', '').replace('{{', ''); + + // console.log('method', method) + + // extract method parameters + var regExp = /\(([^)]+)\)/; + var matches = regExp.exec(method); + var parameters = ''; + if (matches) { + method = method.replace(regExp, ''); + parameters = matches[1]; + } + + // split the method into module and function + var parts = method.split('.'); + + if (typeof faker[parts[0]] === "undefined") { + throw new Error('Invalid module: ' + parts[0]); + } + + if (typeof faker[parts[0]][parts[1]] === "undefined") { + throw new Error('Invalid method: ' + parts[0] + "." + parts[1]); + } + + // assign the function from the module.function namespace + var fn = faker[parts[0]][parts[1]]; + + // If parameters are populated here, they are always going to be of string type + // since we might actually be dealing with an object or array, + // we always attempt to the parse the incoming parameters into JSON + var params; + // Note: we experience a small performance hit here due to JSON.parse try / catch + // If anyone actually needs to optimize this specific code path, please open a support issue on github + try { + params = JSON.parse(parameters) + } catch (err) { + // since JSON.parse threw an error, assume parameters was actually a string + params = parameters; + } + + var result; + if (typeof params === "string" && params.length === 0) { + result = fn.call(this); + } else { + result = fn.call(this, params); + } + + // replace the found tag with the returned fake value + res = str.replace('{{' + token + '}}', result); + + // return the response recursively until we are done finding all tags + return fake(res); + } + + return this; + + +} + +module['exports'] = Fake; +},{}],63:[function(require,module,exports){ +/** + * @namespace faker.finance + */ +var Finance = function (faker) { + var ibanLib = require("./iban"); + var Helpers = faker.helpers, + self = this; + + /** + * account + * + * @method faker.finance.account + * @param {number} length + */ + self.account = function (length) { + + length = length || 8; + + var template = ''; + + for (var i = 0; i < length; i++) { + template = template + '#'; + } + length = null; + return Helpers.replaceSymbolWithNumber(template); + }; + + /** + * accountName + * + * @method faker.finance.accountName + */ + self.accountName = function () { + + return [Helpers.randomize(faker.definitions.finance.account_type), 'Account'].join(' '); + }; + + /** + * mask + * + * @method faker.finance.mask + * @param {number} length + * @param {boolean} parens + * @param {boolean} ellipsis + */ + self.mask = function (length, parens, ellipsis) { + + //set defaults + length = (length == 0 || !length || typeof length == 'undefined') ? 4 : length; + parens = (parens === null) ? true : parens; + ellipsis = (ellipsis === null) ? true : ellipsis; + + //create a template for length + var template = ''; + + for (var i = 0; i < length; i++) { + template = template + '#'; + } + + //prefix with ellipsis + template = (ellipsis) ? ['...', template].join('') : template; + + template = (parens) ? ['(', template, ')'].join('') : template; + + //generate random numbers + template = Helpers.replaceSymbolWithNumber(template); + + return template; + }; + + //min and max take in minimum and maximum amounts, dec is the decimal place you want rounded to, symbol is $, €, £, etc + //NOTE: this returns a string representation of the value, if you want a number use parseFloat and no symbol + + /** + * amount + * + * @method faker.finance.amount + * @param {number} min + * @param {number} max + * @param {number} dec + * @param {string} symbol + * + * @return {string} + */ + self.amount = function (min, max, dec, symbol) { + + min = min || 0; + max = max || 1000; + dec = dec === undefined ? 2 : dec; + symbol = symbol || ''; + var randValue = faker.random.number({ max: max, min: min, precision: Math.pow(10, -dec) }); + + return symbol + randValue.toFixed(dec); + }; + + /** + * transactionType + * + * @method faker.finance.transactionType + */ + self.transactionType = function () { + return Helpers.randomize(faker.definitions.finance.transaction_type); + }; + + /** + * currencyCode + * + * @method faker.finance.currencyCode + */ + self.currencyCode = function () { + return faker.random.objectElement(faker.definitions.finance.currency)['code']; + }; + + /** + * currencyName + * + * @method faker.finance.currencyName + */ + self.currencyName = function () { + return faker.random.objectElement(faker.definitions.finance.currency, 'key'); + }; + + /** + * currencySymbol + * + * @method faker.finance.currencySymbol + */ + self.currencySymbol = function () { + var symbol; + + while (!symbol) { + symbol = faker.random.objectElement(faker.definitions.finance.currency)['symbol']; + } + return symbol; + }; + + /** + * bitcoinAddress + * + * @method faker.finance.bitcoinAddress + */ + self.bitcoinAddress = function () { + var addressLength = faker.random.number({ min: 27, max: 34 }); + + var address = faker.random.arrayElement(['1', '3']); + + for (var i = 0; i < addressLength - 1; i++) + address += faker.random.alphaNumeric().toUpperCase(); + + return address; + }; + + /** + * iban + * + * @method faker.finance.iban + */ + self.iban = function (formatted) { + var ibanFormat = faker.random.arrayElement(ibanLib.formats); + var s = ""; + var count = 0; + for (var b = 0; b < ibanFormat.bban.length; b++) { + var bban = ibanFormat.bban[b]; + var c = bban.count; + count += bban.count; + while (c > 0) { + if (bban.type == "a") { + s += faker.random.arrayElement(ibanLib.alpha); + } else if (bban.type == "c") { + if (faker.random.number(100) < 80) { + s += faker.random.number(9); + } else { + s += faker.random.arrayElement(ibanLib.alpha); + } + } else { + if (c >= 3 && faker.random.number(100) < 30) { + if (faker.random.boolean()) { + s += faker.random.arrayElement(ibanLib.pattern100); + c -= 2; + } else { + s += faker.random.arrayElement(ibanLib.pattern10); + c--; + } + } else { + s += faker.random.number(9); + } + } + c--; + } + s = s.substring(0, count); + } + var checksum = 98 - ibanLib.mod97(ibanLib.toDigitString(s + ibanFormat.country + "00")); + if (checksum < 10) { + checksum = "0" + checksum; + } + var iban = ibanFormat.country + checksum + s; + return formatted ? iban.match(/.{1,4}/g).join(" ") : iban; + }; + + /** + * bic + * + * @method faker.finance.bic + */ + self.bic = function () { + var vowels = ["A", "E", "I", "O", "U"]; + var prob = faker.random.number(100); + return Helpers.replaceSymbols("???") + + faker.random.arrayElement(vowels) + + faker.random.arrayElement(ibanLib.iso3166) + + Helpers.replaceSymbols("?") + "1" + + (prob < 10 ? + Helpers.replaceSymbols("?" + faker.random.arrayElement(vowels) + "?") : + prob < 40 ? + Helpers.replaceSymbols("###") : ""); + }; +}; + +module['exports'] = Finance; + +},{"./iban":66}],64:[function(require,module,exports){ +/** + * + * @namespace faker.hacker + */ +var Hacker = function (faker) { + var self = this; + + /** + * abbreviation + * + * @method faker.hacker.abbreviation + */ + self.abbreviation = function () { + return faker.random.arrayElement(faker.definitions.hacker.abbreviation); + }; + + /** + * adjective + * + * @method faker.hacker.adjective + */ + self.adjective = function () { + return faker.random.arrayElement(faker.definitions.hacker.adjective); + }; + + /** + * noun + * + * @method faker.hacker.noun + */ + self.noun = function () { + return faker.random.arrayElement(faker.definitions.hacker.noun); + }; + + /** + * verb + * + * @method faker.hacker.verb + */ + self.verb = function () { + return faker.random.arrayElement(faker.definitions.hacker.verb); + }; + + /** + * ingverb + * + * @method faker.hacker.ingverb + */ + self.ingverb = function () { + return faker.random.arrayElement(faker.definitions.hacker.ingverb); + }; + + /** + * phrase + * + * @method faker.hacker.phrase + */ + self.phrase = function () { + + var data = { + abbreviation: self.abbreviation, + adjective: self.adjective, + ingverb: self.ingverb, + noun: self.noun, + verb: self.verb + }; + + var phrase = faker.random.arrayElement([ "If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!", + "We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!", + "Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!", + "You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!", + "Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!", + "The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!", + "{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!", + "I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!" + ]); + + return faker.helpers.mustache(phrase, data); + + }; + + return self; +}; + +module['exports'] = Hacker; +},{}],65:[function(require,module,exports){ +/** + * + * @namespace faker.helpers + */ +var Helpers = function (faker) { + + var self = this; + + /** + * backword-compatibility + * + * @method faker.helpers.randomize + * @param {array} array + */ + self.randomize = function (array) { + array = array || ["a", "b", "c"]; + return faker.random.arrayElement(array); + }; + + /** + * slugifies string + * + * @method faker.helpers.slugify + * @param {string} string + */ + self.slugify = function (string) { + string = string || ""; + return string.replace(/ /g, '-').replace(/[^\w\.\-]+/g, ''); + }; + + /** + * parses string for a symbol and replace it with a random number from 1-10 + * + * @method faker.helpers.replaceSymbolWithNumber + * @param {string} string + * @param {string} symbol defaults to `"#"` + */ + self.replaceSymbolWithNumber = function (string, symbol) { + string = string || ""; + // default symbol is '#' + if (symbol === undefined) { + symbol = '#'; + } + + var str = ''; + for (var i = 0; i < string.length; i++) { + if (string.charAt(i) == symbol) { + str += faker.random.number(9); + } else { + str += string.charAt(i); + } + } + return str; + }; + + /** + * parses string for symbols (numbers or letters) and replaces them appropriately + * + * @method faker.helpers.replaceSymbols + * @param {string} string + */ + self.replaceSymbols = function (string) { + string = string || ""; + var alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] + var str = ''; + + for (var i = 0; i < string.length; i++) { + if (string.charAt(i) == "#") { + str += faker.random.number(9); + } else if (string.charAt(i) == "?") { + str += faker.random.arrayElement(alpha); + } else { + str += string.charAt(i); + } + } + return str; + }; + + /** + * takes an array and returns it randomized + * + * @method faker.helpers.shuffle + * @param {array} o + */ + self.shuffle = function (o) { + if (typeof o === 'undefined' || o.length === 0) { + return []; + } + o = o || ["a", "b", "c"]; + for (var j, x, i = o.length-1; i; j = faker.random.number(i), x = o[--i], o[i] = o[j], o[j] = x); + return o; + }; + + /** + * mustache + * + * @method faker.helpers.mustache + * @param {string} str + * @param {object} data + */ + self.mustache = function (str, data) { + if (typeof str === 'undefined') { + return ''; + } + for(var p in data) { + var re = new RegExp('{{' + p + '}}', 'g') + str = str.replace(re, data[p]); + } + return str; + }; + + /** + * createCard + * + * @method faker.helpers.createCard + */ + self.createCard = function () { + return { + "name": faker.name.findName(), + "username": faker.internet.userName(), + "email": faker.internet.email(), + "address": { + "streetA": faker.address.streetName(), + "streetB": faker.address.streetAddress(), + "streetC": faker.address.streetAddress(true), + "streetD": faker.address.secondaryAddress(), + "city": faker.address.city(), + "state": faker.address.state(), + "country": faker.address.country(), + "zipcode": faker.address.zipCode(), + "geo": { + "lat": faker.address.latitude(), + "lng": faker.address.longitude() + } + }, + "phone": faker.phone.phoneNumber(), + "website": faker.internet.domainName(), + "company": { + "name": faker.company.companyName(), + "catchPhrase": faker.company.catchPhrase(), + "bs": faker.company.bs() + }, + "posts": [ + { + "words": faker.lorem.words(), + "sentence": faker.lorem.sentence(), + "sentences": faker.lorem.sentences(), + "paragraph": faker.lorem.paragraph() + }, + { + "words": faker.lorem.words(), + "sentence": faker.lorem.sentence(), + "sentences": faker.lorem.sentences(), + "paragraph": faker.lorem.paragraph() + }, + { + "words": faker.lorem.words(), + "sentence": faker.lorem.sentence(), + "sentences": faker.lorem.sentences(), + "paragraph": faker.lorem.paragraph() + } + ], + "accountHistory": [faker.helpers.createTransaction(), faker.helpers.createTransaction(), faker.helpers.createTransaction()] + }; + }; + + /** + * contextualCard + * + * @method faker.helpers.contextualCard + */ + self.contextualCard = function () { + var name = faker.name.firstName(), + userName = faker.internet.userName(name); + return { + "name": name, + "username": userName, + "avatar": faker.internet.avatar(), + "email": faker.internet.email(userName), + "dob": faker.date.past(50, new Date("Sat Sep 20 1992 21:35:02 GMT+0200 (CEST)")), + "phone": faker.phone.phoneNumber(), + "address": { + "street": faker.address.streetName(true), + "suite": faker.address.secondaryAddress(), + "city": faker.address.city(), + "zipcode": faker.address.zipCode(), + "geo": { + "lat": faker.address.latitude(), + "lng": faker.address.longitude() + } + }, + "website": faker.internet.domainName(), + "company": { + "name": faker.company.companyName(), + "catchPhrase": faker.company.catchPhrase(), + "bs": faker.company.bs() + } + }; + }; + + + /** + * userCard + * + * @method faker.helpers.userCard + */ + self.userCard = function () { + return { + "name": faker.name.findName(), + "username": faker.internet.userName(), + "email": faker.internet.email(), + "address": { + "street": faker.address.streetName(true), + "suite": faker.address.secondaryAddress(), + "city": faker.address.city(), + "zipcode": faker.address.zipCode(), + "geo": { + "lat": faker.address.latitude(), + "lng": faker.address.longitude() + } + }, + "phone": faker.phone.phoneNumber(), + "website": faker.internet.domainName(), + "company": { + "name": faker.company.companyName(), + "catchPhrase": faker.company.catchPhrase(), + "bs": faker.company.bs() + } + }; + }; + + /** + * createTransaction + * + * @method faker.helpers.createTransaction + */ + self.createTransaction = function(){ + return { + "amount" : faker.finance.amount(), + "date" : new Date(2012, 1, 2), //TODO: add a ranged date method + "business": faker.company.companyName(), + "name": [faker.finance.accountName(), faker.finance.mask()].join(' '), + "type" : self.randomize(faker.definitions.finance.transaction_type), + "account" : faker.finance.account() + }; + }; + + return self; + +}; + + +/* +String.prototype.capitalize = function () { //v1.0 + return this.replace(/\w+/g, function (a) { + return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase(); + }); +}; +*/ + +module['exports'] = Helpers; + +},{}],66:[function(require,module,exports){ +module["exports"] = { + alpha: [ + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' + ], + pattern10: [ + "01", "02", "03", "04", "05", "06", "07", "08", "09" + ], + pattern100: [ + "001", "002", "003", "004", "005", "006", "007", "008", "009" + ], + toDigitString: function (str) { + return str.replace(/[A-Z]/gi, function(match) { + return match.toUpperCase().charCodeAt(0) - 55; + }); + }, + mod97: function (digitStr) { + var m = 0; + for (var i = 0; i < digitStr.length; i++) { + m = ((m * 10) + (digitStr[i] |0)) % 97; + } + return m; + }, + formats: [ + { + country: "AL", + total: 28, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "c", + count: 16 + } + ], + format: "ALkk bbbs sssx cccc cccc cccc cccc" + }, + { + country: "AD", + total: 24, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "c", + count: 12 + } + ], + format: "ADkk bbbb ssss cccc cccc cccc" + }, + { + country: "AT", + total: 20, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "n", + count: 11 + } + ], + format: "ATkk bbbb bccc cccc cccc" + }, + { + country: "AZ", + total: 28, + bban: [ + { + type: "c", + count: 4 + }, + { + type: "n", + count: 20 + } + ], + format: "AZkk bbbb cccc cccc cccc cccc cccc" + }, + { + country: "BH", + total: 22, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "c", + count: 14 + } + ], + format: "BHkk bbbb cccc cccc cccc cc" + }, + { + country: "BE", + total: 16, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 9 + } + ], + format: "BEkk bbbc cccc ccxx" + }, + { + country: "BA", + total: 20, + bban: [ + { + type: "n", + count: 6 + }, + { + type: "n", + count: 10 + } + ], + format: "BAkk bbbs sscc cccc ccxx" + }, + { + country: "BR", + total: 29, + bban: [ + { + type: "n", + count: 13 + }, + { + type: "n", + count: 10 + }, + { + type: "a", + count: 1 + }, + { + type: "c", + count: 1 + } + ], + format: "BRkk bbbb bbbb ssss sccc cccc ccct n" + }, + { + country: "BG", + total: 22, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 6 + }, + { + type: "c", + count: 8 + } + ], + format: "BGkk bbbb ssss ddcc cccc cc" + }, + { + country: "CR", + total: 21, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 14 + } + ], + format: "CRkk bbbc cccc cccc cccc c" + }, + { + country: "HR", + total: 21, + bban: [ + { + type: "n", + count: 7 + }, + { + type: "n", + count: 10 + } + ], + format: "HRkk bbbb bbbc cccc cccc c" + }, + { + country: "CY", + total: 28, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "c", + count: 16 + } + ], + format: "CYkk bbbs ssss cccc cccc cccc cccc" + }, + { + country: "CZ", + total: 24, + bban: [ + { + type: "n", + count: 10 + }, + { + type: "n", + count: 10 + } + ], + format: "CZkk bbbb ssss sscc cccc cccc" + }, + { + country: "DK", + total: 18, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "n", + count: 10 + } + ], + format: "DKkk bbbb cccc cccc cc" + }, + { + country: "DO", + total: 28, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 20 + } + ], + format: "DOkk bbbb cccc cccc cccc cccc cccc" + }, + { + country: "TL", + total: 23, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 16 + } + ], + format: "TLkk bbbc cccc cccc cccc cxx" + }, + { + country: "EE", + total: 20, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "n", + count: 12 + } + ], + format: "EEkk bbss cccc cccc cccx" + }, + { + country: "FO", + total: 18, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "n", + count: 10 + } + ], + format: "FOkk bbbb cccc cccc cx" + }, + { + country: "FI", + total: 18, + bban: [ + { + type: "n", + count: 6 + }, + { + type: "n", + count: 8 + } + ], + format: "FIkk bbbb bbcc cccc cx" + }, + { + country: "FR", + total: 27, + bban: [ + { + type: "n", + count: 10 + }, + { + type: "c", + count: 11 + }, + { + type: "n", + count: 2 + } + ], + format: "FRkk bbbb bggg ggcc cccc cccc cxx" + }, + { + country: "GE", + total: 22, + bban: [ + { + type: "c", + count: 2 + }, + { + type: "n", + count: 16 + } + ], + format: "GEkk bbcc cccc cccc cccc cc" + }, + { + country: "DE", + total: 22, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "n", + count: 10 + } + ], + format: "DEkk bbbb bbbb cccc cccc cc" + }, + { + country: "GI", + total: 23, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "c", + count: 15 + } + ], + format: "GIkk bbbb cccc cccc cccc ccc" + }, + { + country: "GR", + total: 27, + bban: [ + { + type: "n", + count: 7 + }, + { + type: "c", + count: 16 + } + ], + format: "GRkk bbbs sssc cccc cccc cccc ccc" + }, + { + country: "GL", + total: 18, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "n", + count: 10 + } + ], + format: "GLkk bbbb cccc cccc cc" + }, + { + country: "GT", + total: 28, + bban: [ + { + type: "c", + count: 4 + }, + { + type: "c", + count: 4 + }, + { + type: "c", + count: 16 + } + ], + format: "GTkk bbbb mmtt cccc cccc cccc cccc" + }, + { + country: "HU", + total: 28, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "n", + count: 16 + } + ], + format: "HUkk bbbs sssk cccc cccc cccc cccx" + }, + { + country: "IS", + total: 26, + bban: [ + { + type: "n", + count: 6 + }, + { + type: "n", + count: 16 + } + ], + format: "ISkk bbbb sscc cccc iiii iiii ii" + }, + { + country: "IE", + total: 22, + bban: [ + { + type: "c", + count: 4 + }, + { + type: "n", + count: 6 + }, + { + type: "n", + count: 8 + } + ], + format: "IEkk aaaa bbbb bbcc cccc cc" + }, + { + country: "IL", + total: 23, + bban: [ + { + type: "n", + count: 6 + }, + { + type: "n", + count: 13 + } + ], + format: "ILkk bbbn nncc cccc cccc ccc" + }, + { + country: "IT", + total: 27, + bban: [ + { + type: "a", + count: 1 + }, + { + type: "n", + count: 10 + }, + { + type: "c", + count: 12 + } + ], + format: "ITkk xaaa aabb bbbc cccc cccc ccc" + }, + { + country: "JO", + total: 30, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 4 + }, + { + type: "n", + count: 18 + } + ], + format: "JOkk bbbb nnnn cccc cccc cccc cccc cc" + }, + { + country: "KZ", + total: 20, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "c", + count: 13 + } + ], + format: "KZkk bbbc cccc cccc cccc" + }, + { + country: "XK", + total: 20, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "n", + count: 12 + } + ], + format: "XKkk bbbb cccc cccc cccc" + }, + { + country: "KW", + total: 30, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "c", + count: 22 + } + ], + format: "KWkk bbbb cccc cccc cccc cccc cccc cc" + }, + { + country: "LV", + total: 21, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "c", + count: 13 + } + ], + format: "LVkk bbbb cccc cccc cccc c" + }, + { + country: "LB", + total: 28, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "c", + count: 20 + } + ], + format: "LBkk bbbb cccc cccc cccc cccc cccc" + }, + { + country: "LI", + total: 21, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "c", + count: 12 + } + ], + format: "LIkk bbbb bccc cccc cccc c" + }, + { + country: "LT", + total: 20, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "n", + count: 11 + } + ], + format: "LTkk bbbb bccc cccc cccc" + }, + { + country: "LU", + total: 20, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "c", + count: 13 + } + ], + format: "LUkk bbbc cccc cccc cccc" + }, + { + country: "MK", + total: 19, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "c", + count: 10 + }, + { + type: "n", + count: 2 + } + ], + format: "MKkk bbbc cccc cccc cxx" + }, + { + country: "MT", + total: 31, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 5 + }, + { + type: "c", + count: 18 + } + ], + format: "MTkk bbbb ssss sccc cccc cccc cccc ccc" + }, + { + country: "MR", + total: 27, + bban: [ + { + type: "n", + count: 10 + }, + { + type: "n", + count: 13 + } + ], + format: "MRkk bbbb bsss sscc cccc cccc cxx" + }, + { + country: "MU", + total: 30, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 4 + }, + { + type: "n", + count: 15 + }, + { + type: "a", + count: 3 + } + ], + format: "MUkk bbbb bbss cccc cccc cccc 000d dd" + }, + { + country: "MC", + total: 27, + bban: [ + { + type: "n", + count: 10 + }, + { + type: "c", + count: 11 + }, + { + type: "n", + count: 2 + } + ], + format: "MCkk bbbb bsss sscc cccc cccc cxx" + }, + { + country: "MD", + total: 24, + bban: [ + { + type: "c", + count: 2 + }, + { + type: "c", + count: 18 + } + ], + format: "MDkk bbcc cccc cccc cccc cccc" + }, + { + country: "ME", + total: 22, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 15 + } + ], + format: "MEkk bbbc cccc cccc cccc xx" + }, + { + country: "NL", + total: 18, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 10 + } + ], + format: "NLkk bbbb cccc cccc cc" + }, + { + country: "NO", + total: 15, + bban: [ + { + type: "n", + count: 4 + }, + { + type: "n", + count: 7 + } + ], + format: "NOkk bbbb cccc ccx" + }, + { + country: "PK", + total: 24, + bban: [ + { + type: "c", + count: 4 + }, + { + type: "n", + count: 16 + } + ], + format: "PKkk bbbb cccc cccc cccc cccc" + }, + { + country: "PS", + total: 29, + bban: [ + { + type: "c", + count: 4 + }, + { + type: "n", + count: 9 + }, + { + type: "n", + count: 12 + } + ], + format: "PSkk bbbb xxxx xxxx xccc cccc cccc c" + }, + { + country: "PL", + total: 28, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "n", + count: 16 + } + ], + format: "PLkk bbbs sssx cccc cccc cccc cccc" + }, + { + country: "PT", + total: 25, + bban: [ + { + type: "n", + count: 8 + }, + { + type: "n", + count: 13 + } + ], + format: "PTkk bbbb ssss cccc cccc cccx x" + }, + { + country: "QA", + total: 29, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "c", + count: 21 + } + ], + format: "QAkk bbbb cccc cccc cccc cccc cccc c" + }, + { + country: "RO", + total: 24, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "c", + count: 16 + } + ], + format: "ROkk bbbb cccc cccc cccc cccc" + }, + { + country: "SM", + total: 27, + bban: [ + { + type: "a", + count: 1 + }, + { + type: "n", + count: 10 + }, + { + type: "c", + count: 12 + } + ], + format: "SMkk xaaa aabb bbbc cccc cccc ccc" + }, + { + country: "SA", + total: 24, + bban: [ + { + type: "n", + count: 2 + }, + { + type: "c", + count: 18 + } + ], + format: "SAkk bbcc cccc cccc cccc cccc" + }, + { + country: "RS", + total: 22, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 15 + } + ], + format: "RSkk bbbc cccc cccc cccc xx" + }, + { + country: "SK", + total: 24, + bban: [ + { + type: "n", + count: 10 + }, + { + type: "n", + count: 10 + } + ], + format: "SKkk bbbb ssss sscc cccc cccc" + }, + { + country: "SI", + total: 19, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "n", + count: 10 + } + ], + format: "SIkk bbss sccc cccc cxx" + }, + { + country: "ES", + total: 24, + bban: [ + { + type: "n", + count: 10 + }, + { + type: "n", + count: 10 + } + ], + format: "ESkk bbbb gggg xxcc cccc cccc" + }, + { + country: "SE", + total: 24, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 17 + } + ], + format: "SEkk bbbc cccc cccc cccc cccc" + }, + { + country: "CH", + total: 21, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "c", + count: 12 + } + ], + format: "CHkk bbbb bccc cccc cccc c" + }, + { + country: "TN", + total: 24, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "n", + count: 15 + } + ], + format: "TNkk bbss sccc cccc cccc cccc" + }, + { + country: "TR", + total: 26, + bban: [ + { + type: "n", + count: 5 + }, + { + type: "c", + count: 1 + }, + { + type: "c", + count: 16 + } + ], + format: "TRkk bbbb bxcc cccc cccc cccc cc" + }, + { + country: "AE", + total: 23, + bban: [ + { + type: "n", + count: 3 + }, + { + type: "n", + count: 16 + } + ], + format: "AEkk bbbc cccc cccc cccc ccc" + }, + { + country: "GB", + total: 22, + bban: [ + { + type: "a", + count: 4 + }, + { + type: "n", + count: 6 + }, + { + type: "n", + count: 8 + } + ], + format: "GBkk bbbb ssss sscc cccc cc" + }, + { + country: "VG", + total: 24, + bban: [ + { + type: "c", + count: 4 + }, + { + type: "n", + count: 16 + } + ], + format: "VGkk bbbb cccc cccc cccc cccc" + } + ], + iso3166: [ + "AC", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ", "AR", "AS", + "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", + "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BY", + "BZ", "CA", "CC", "CD", "CE", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", + "CO", "CP", "CR", "CS", "CS", "CU", "CV", "CW", "CX", "CY", "CZ", "DD", "DE", + "DG", "DJ", "DK", "DM", "DO", "DZ", "EA", "EC", "EE", "EG", "EH", "ER", "ES", + "ET", "EU", "FI", "FJ", "FK", "FM", "FO", "FR", "FX", "GA", "GB", "GD", "GE", + "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", + "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "IC", "ID", "IE", "IL", "IM", + "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", + "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", + "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", + "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", + "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", + "NT", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", + "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", + "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", + "SS", "ST", "SU", "SV", "SX", "SY", "SZ", "TA", "TC", "TD", "TF", "TG", "TH", + "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", + "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", + "YE", "YT", "YU", "ZA", "ZM", "ZR", "ZW" + ] +} +},{}],67:[function(require,module,exports){ +/** + * + * @namespace faker.image + */ +var Image = function (faker) { + + var self = this; + + /** + * image + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.image + */ + self.image = function (width, height, randomize) { + var categories = ["abstract", "animals", "business", "cats", "city", "food", "nightlife", "fashion", "people", "nature", "sports", "technics", "transport"]; + return self[faker.random.arrayElement(categories)](width, height, randomize); + }; + /** + * avatar + * + * @method faker.image.avatar + */ + self.avatar = function () { + return faker.internet.avatar(); + }; + /** + * imageUrl + * + * @param {number} width + * @param {number} height + * @param {string} category + * @param {boolean} randomize + * @method faker.image.imageUrl + */ + self.imageUrl = function (width, height, category, randomize, https) { + var width = width || 640; + var height = height || 480; + var protocol = 'http://'; + if (typeof https !== 'undefined' && https === true) { + protocol = 'https://'; + } + var url = protocol + 'lorempixel.com/' + width + '/' + height; + if (typeof category !== 'undefined') { + url += '/' + category; + } + + if (randomize) { + url += '?' + faker.random.number() + } + + return url; + }; + /** + * abstract + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.abstract + */ + self.abstract = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'abstract', randomize); + }; + /** + * animals + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.animals + */ + self.animals = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'animals', randomize); + }; + /** + * business + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.business + */ + self.business = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'business', randomize); + }; + /** + * cats + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.cats + */ + self.cats = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'cats', randomize); + }; + /** + * city + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.city + */ + self.city = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'city', randomize); + }; + /** + * food + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.food + */ + self.food = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'food', randomize); + }; + /** + * nightlife + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.nightlife + */ + self.nightlife = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'nightlife', randomize); + }; + /** + * fashion + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.fashion + */ + self.fashion = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'fashion', randomize); + }; + /** + * people + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.people + */ + self.people = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'people', randomize); + }; + /** + * nature + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.nature + */ + self.nature = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'nature', randomize); + }; + /** + * sports + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.sports + */ + self.sports = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'sports', randomize); + }; + /** + * technics + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.technics + */ + self.technics = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'technics', randomize); + }; + /** + * transport + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.transport + */ + self.transport = function (width, height, randomize) { + return faker.image.imageUrl(width, height, 'transport', randomize); + }; + /** + * dataUri + * + * @param {number} width + * @param {number} height + * @method faker.image.dataurl + */ + self.dataUri = function (width, height) { + var rawPrefix = 'data:image/svg+xml;charset=UTF-8,'; + var svgString = ' ' + width + 'x' + height + ' '; + return rawPrefix + encodeURIComponent(svgString); + }; +} + +module["exports"] = Image; +},{}],68:[function(require,module,exports){ +/* + + this index.js file is used for including the faker library as a CommonJS module, instead of a bundle + + you can include the faker library into your existing node.js application by requiring the entire /faker directory + + var faker = require(./faker); + var randomName = faker.name.findName(); + + you can also simply include the "faker.js" file which is the auto-generated bundled version of the faker library + + var faker = require(./customAppPath/faker); + var randomName = faker.name.findName(); + + + if you plan on modifying the faker library you should be performing your changes in the /lib/ directory + +*/ + +/** + * + * @namespace faker + */ +function Faker (opts) { + + var self = this; + + opts = opts || {}; + + // assign options + var locales = self.locales || opts.locales || {}; + var locale = self.locale || opts.locale || "en"; + var localeFallback = self.localeFallback || opts.localeFallback || "en"; + + self.locales = locales; + self.locale = locale; + self.localeFallback = localeFallback; + + self.definitions = {}; + + function bindAll(obj) { + Object.keys(obj).forEach(function(meth) { + if (typeof obj[meth] === 'function') { + obj[meth] = obj[meth].bind(obj); + } + }); + return obj; + } + + var Fake = require('./fake'); + self.fake = new Fake(self).fake; + + var Random = require('./random'); + self.random = bindAll(new Random(self)); + + var Helpers = require('./helpers'); + self.helpers = new Helpers(self); + + var Name = require('./name'); + self.name = bindAll(new Name(self)); + + var Address = require('./address'); + self.address = bindAll(new Address(self)); + + var Company = require('./company'); + self.company = bindAll(new Company(self)); + + var Finance = require('./finance'); + self.finance = bindAll(new Finance(self)); + + var Image = require('./image'); + self.image = bindAll(new Image(self)); + + var Lorem = require('./lorem'); + self.lorem = bindAll(new Lorem(self)); + + var Hacker = require('./hacker'); + self.hacker = bindAll(new Hacker(self)); + + var Internet = require('./internet'); + self.internet = bindAll(new Internet(self)); + + var Database = require('./database'); + self.database = bindAll(new Database(self)); + + var Phone = require('./phone_number'); + self.phone = bindAll(new Phone(self)); + + var _Date = require('./date'); + self.date = bindAll(new _Date(self)); + + var Commerce = require('./commerce'); + self.commerce = bindAll(new Commerce(self)); + + var System = require('./system'); + self.system = bindAll(new System(self)); + + var _definitions = { + "name": ["first_name", "last_name", "prefix", "suffix", "title", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"], + "address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "country_code", "state", "state_abbr", "street_prefix", "postcode"], + "company": ["adjective", "noun", "descriptor", "bs_adjective", "bs_noun", "bs_verb", "suffix"], + "lorem": ["words"], + "hacker": ["abbreviation", "adjective", "noun", "verb", "ingverb"], + "phone_number": ["formats"], + "finance": ["account_type", "transaction_type", "currency", "iban"], + "internet": ["avatar_uri", "domain_suffix", "free_email", "example_email", "password"], + "commerce": ["color", "department", "product_name", "price", "categories"], + "database": ["collation", "column", "engine", "type"], + "system": ["mimeTypes"], + "date": ["month", "weekday"], + "title": "", + "separator": "" + }; + + // Create a Getter for all definitions.foo.bar properties + Object.keys(_definitions).forEach(function(d){ + if (typeof self.definitions[d] === "undefined") { + self.definitions[d] = {}; + } + + if (typeof _definitions[d] === "string") { + self.definitions[d] = _definitions[d]; + return; + } + + _definitions[d].forEach(function(p){ + Object.defineProperty(self.definitions[d], p, { + get: function () { + if (typeof self.locales[self.locale][d] === "undefined" || typeof self.locales[self.locale][d][p] === "undefined") { + // certain localization sets contain less data then others. + // in the case of a missing definition, use the default localeFallback to substitute the missing set data + // throw new Error('unknown property ' + d + p) + return self.locales[localeFallback][d][p]; + } else { + // return localized data + return self.locales[self.locale][d][p]; + } + } + }); + }); + }); + +}; + +Faker.prototype.seed = function(value) { + var Random = require('./random'); + this.seedValue = value; + this.random = new Random(this, this.seedValue); +} +module['exports'] = Faker; + +},{"./address":57,"./commerce":58,"./company":59,"./database":60,"./date":61,"./fake":62,"./finance":63,"./hacker":64,"./helpers":65,"./image":67,"./internet":69,"./lorem":1097,"./name":1098,"./phone_number":1099,"./random":1100,"./system":1101}],69:[function(require,module,exports){ +var random_ua = require('../vendor/user-agent'); + +/** + * + * @namespace faker.internet + */ +var Internet = function (faker) { + var self = this; + /** + * avatar + * + * @method faker.internet.avatar + */ + self.avatar = function () { + return faker.random.arrayElement(faker.definitions.internet.avatar_uri); + }; + + self.avatar.schema = { + "description": "Generates a URL for an avatar.", + "sampleResults": ["https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg"] + }; + + /** + * email + * + * @method faker.internet.email + * @param {string} firstName + * @param {string} lastName + * @param {string} provider + */ + self.email = function (firstName, lastName, provider) { + provider = provider || faker.random.arrayElement(faker.definitions.internet.free_email); + return faker.helpers.slugify(faker.internet.userName(firstName, lastName)) + "@" + provider; + }; + + self.email.schema = { + "description": "Generates a valid email address based on optional input criteria", + "sampleResults": ["foo.bar@gmail.com"], + "properties": { + "firstName": { + "type": "string", + "required": false, + "description": "The first name of the user" + }, + "lastName": { + "type": "string", + "required": false, + "description": "The last name of the user" + }, + "provider": { + "type": "string", + "required": false, + "description": "The domain of the user" + } + } + }; + /** + * exampleEmail + * + * @method faker.internet.exampleEmail + * @param {string} firstName + * @param {string} lastName + */ + self.exampleEmail = function (firstName, lastName) { + var provider = faker.random.arrayElement(faker.definitions.internet.example_email); + return self.email(firstName, lastName, provider); + }; + + /** + * userName + * + * @method faker.internet.userName + * @param {string} firstName + * @param {string} lastName + */ + self.userName = function (firstName, lastName) { + var result; + firstName = firstName || faker.name.firstName(); + lastName = lastName || faker.name.lastName(); + switch (faker.random.number(2)) { + case 0: + result = firstName + faker.random.number(99); + break; + case 1: + result = firstName + faker.random.arrayElement([".", "_"]) + lastName; + break; + case 2: + result = firstName + faker.random.arrayElement([".", "_"]) + lastName + faker.random.number(99); + break; + } + result = result.toString().replace(/'/g, ""); + result = result.replace(/ /g, ""); + return result; + }; + + self.userName.schema = { + "description": "Generates a username based on one of several patterns. The pattern is chosen randomly.", + "sampleResults": [ + "Kirstin39", + "Kirstin.Smith", + "Kirstin.Smith39", + "KirstinSmith", + "KirstinSmith39", + ], + "properties": { + "firstName": { + "type": "string", + "required": false, + "description": "The first name of the user" + }, + "lastName": { + "type": "string", + "required": false, + "description": "The last name of the user" + } + } + }; + + /** + * protocol + * + * @method faker.internet.protocol + */ + self.protocol = function () { + var protocols = ['http','https']; + return faker.random.arrayElement(protocols); + }; + + self.protocol.schema = { + "description": "Randomly generates http or https", + "sampleResults": ["https", "http"] + }; + + /** + * url + * + * @method faker.internet.url + */ + self.url = function () { + return faker.internet.protocol() + '://' + faker.internet.domainName(); + }; + + self.url.schema = { + "description": "Generates a random URL. The URL could be secure or insecure.", + "sampleResults": [ + "http://rashawn.name", + "https://rashawn.name" + ] + }; + + /** + * domainName + * + * @method faker.internet.domainName + */ + self.domainName = function () { + return faker.internet.domainWord() + "." + faker.internet.domainSuffix(); + }; + + self.domainName.schema = { + "description": "Generates a random domain name.", + "sampleResults": ["marvin.org"] + }; + + /** + * domainSuffix + * + * @method faker.internet.domainSuffix + */ + self.domainSuffix = function () { + return faker.random.arrayElement(faker.definitions.internet.domain_suffix); + }; + + self.domainSuffix.schema = { + "description": "Generates a random domain suffix.", + "sampleResults": ["net"] + }; + + /** + * domainWord + * + * @method faker.internet.domainWord + */ + self.domainWord = function () { + return faker.name.firstName().replace(/([\\~#&*{}/:<>?|\"'])/ig, '').toLowerCase(); + }; + + self.domainWord.schema = { + "description": "Generates a random domain word.", + "sampleResults": ["alyce"] + }; + + /** + * ip + * + * @method faker.internet.ip + */ + self.ip = function () { + var randNum = function () { + return (faker.random.number(255)).toFixed(0); + }; + + var result = []; + for (var i = 0; i < 4; i++) { + result[i] = randNum(); + } + + return result.join("."); + }; + + self.ip.schema = { + "description": "Generates a random IP.", + "sampleResults": ["97.238.241.11"] + }; + + /** + * ipv6 + * + * @method faker.internet.ipv6 + */ + self.ipv6 = function () { + var randHash = function () { + var result = ""; + for (var i = 0; i < 4; i++) { + result += (faker.random.arrayElement(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"])); + } + return result + }; + + var result = []; + for (var i = 0; i < 8; i++) { + result[i] = randHash(); + } + return result.join(":"); + }; + + self.ipv6.schema = { + "description": "Generates a random IPv6 address.", + "sampleResults": ["2001:0db8:6276:b1a7:5213:22f1:25df:c8a0"] + }; + + /** + * userAgent + * + * @method faker.internet.userAgent + */ + self.userAgent = function () { + return random_ua.generate(); + }; + + self.userAgent.schema = { + "description": "Generates a random user agent.", + "sampleResults": ["Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_7_5 rv:6.0; SL) AppleWebKit/532.0.1 (KHTML, like Gecko) Version/7.1.6 Safari/532.0.1"] + }; + + /** + * color + * + * @method faker.internet.color + * @param {number} baseRed255 + * @param {number} baseGreen255 + * @param {number} baseBlue255 + */ + self.color = function (baseRed255, baseGreen255, baseBlue255) { + baseRed255 = baseRed255 || 0; + baseGreen255 = baseGreen255 || 0; + baseBlue255 = baseBlue255 || 0; + // based on awesome response : http://stackoverflow.com/questions/43044/algorithm-to-randomly-generate-an-aesthetically-pleasing-color-palette + var red = Math.floor((faker.random.number(256) + baseRed255) / 2); + var green = Math.floor((faker.random.number(256) + baseGreen255) / 2); + var blue = Math.floor((faker.random.number(256) + baseBlue255) / 2); + var redStr = red.toString(16); + var greenStr = green.toString(16); + var blueStr = blue.toString(16); + return '#' + + (redStr.length === 1 ? '0' : '') + redStr + + (greenStr.length === 1 ? '0' : '') + greenStr + + (blueStr.length === 1 ? '0': '') + blueStr; + + }; + + self.color.schema = { + "description": "Generates a random hexadecimal color.", + "sampleResults": ["#06267f"], + "properties": { + "baseRed255": { + "type": "number", + "required": false, + "description": "The red value. Valid values are 0 - 255." + }, + "baseGreen255": { + "type": "number", + "required": false, + "description": "The green value. Valid values are 0 - 255." + }, + "baseBlue255": { + "type": "number", + "required": false, + "description": "The blue value. Valid values are 0 - 255." + } + } + }; + + /** + * mac + * + * @method faker.internet.mac + */ + self.mac = function(){ + var i, mac = ""; + for (i=0; i < 12; i++) { + mac+= faker.random.number(15).toString(16); + if (i%2==1 && i != 11) { + mac+=":"; + } + } + return mac; + }; + + self.mac.schema = { + "description": "Generates a random mac address.", + "sampleResults": ["78:06:cc:ae:b3:81"] + }; + + /** + * password + * + * @method faker.internet.password + * @param {number} len + * @param {boolean} memorable + * @param {string} pattern + * @param {string} prefix + */ + self.password = function (len, memorable, pattern, prefix) { + len = len || 15; + if (typeof memorable === "undefined") { + memorable = false; + } + /* + * password-generator ( function ) + * Copyright(c) 2011-2013 Bermi Ferrer + * MIT Licensed + */ + var consonant, letter, password, vowel; + letter = /[a-zA-Z]$/; + vowel = /[aeiouAEIOU]$/; + consonant = /[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/; + var _password = function (length, memorable, pattern, prefix) { + var char, n; + if (length == null) { + length = 10; + } + if (memorable == null) { + memorable = true; + } + if (pattern == null) { + pattern = /\w/; + } + if (prefix == null) { + prefix = ''; + } + if (prefix.length >= length) { + return prefix; + } + if (memorable) { + if (prefix.match(consonant)) { + pattern = vowel; + } else { + pattern = consonant; + } + } + n = faker.random.number(94) + 33; + char = String.fromCharCode(n); + if (memorable) { + char = char.toLowerCase(); + } + if (!char.match(pattern)) { + return _password(length, memorable, pattern, prefix); + } + return _password(length, memorable, pattern, "" + prefix + char); + }; + return _password(len, memorable, pattern, prefix); + } + + self.password.schema = { + "description": "Generates a random password.", + "sampleResults": [ + "AM7zl6Mg", + "susejofe" + ], + "properties": { + "length": { + "type": "number", + "required": false, + "description": "The number of characters in the password." + }, + "memorable": { + "type": "boolean", + "required": false, + "description": "Whether a password should be easy to remember." + }, + "pattern": { + "type": "regex", + "required": false, + "description": "A regex to match each character of the password against. This parameter will be negated if the memorable setting is turned on." + }, + "prefix": { + "type": "string", + "required": false, + "description": "A value to prepend to the generated password. The prefix counts towards the length of the password." + } + } + }; + +}; + + +module["exports"] = Internet; + +},{"../vendor/user-agent":1103}],70:[function(require,module,exports){ +exports['az'] = require('./locales/az'); +exports['cz'] = require('./locales/cz'); +exports['de'] = require('./locales/de'); +exports['de_AT'] = require('./locales/de_AT'); +exports['de_CH'] = require('./locales/de_CH'); +exports['en'] = require('./locales/en'); +exports['en_AU'] = require('./locales/en_AU'); +exports['en_BORK'] = require('./locales/en_BORK'); +exports['en_CA'] = require('./locales/en_CA'); +exports['en_GB'] = require('./locales/en_GB'); +exports['en_IE'] = require('./locales/en_IE'); +exports['en_IND'] = require('./locales/en_IND'); +exports['en_US'] = require('./locales/en_US'); +exports['en_au_ocker'] = require('./locales/en_au_ocker'); +exports['es'] = require('./locales/es'); +exports['es_MX'] = require('./locales/es_MX'); +exports['fa'] = require('./locales/fa'); +exports['fr'] = require('./locales/fr'); +exports['fr_CA'] = require('./locales/fr_CA'); +exports['ge'] = require('./locales/ge'); +exports['id_ID'] = require('./locales/id_ID'); +exports['it'] = require('./locales/it'); +exports['ja'] = require('./locales/ja'); +exports['ko'] = require('./locales/ko'); +exports['nb_NO'] = require('./locales/nb_NO'); +exports['nep'] = require('./locales/nep'); +exports['nl'] = require('./locales/nl'); +exports['pl'] = require('./locales/pl'); +exports['pt_BR'] = require('./locales/pt_BR'); +exports['ru'] = require('./locales/ru'); +exports['sk'] = require('./locales/sk'); +exports['sv'] = require('./locales/sv'); +exports['tr'] = require('./locales/tr'); +exports['uk'] = require('./locales/uk'); +exports['vi'] = require('./locales/vi'); +exports['zh_CN'] = require('./locales/zh_CN'); +exports['zh_TW'] = require('./locales/zh_TW'); + +},{"./locales/az":95,"./locales/cz":134,"./locales/de":172,"./locales/de_AT":205,"./locales/de_CH":224,"./locales/en":304,"./locales/en_AU":336,"./locales/en_BORK":344,"./locales/en_CA":352,"./locales/en_GB":365,"./locales/en_IE":375,"./locales/en_IND":387,"./locales/en_US":399,"./locales/en_au_ocker":419,"./locales/es":451,"./locales/es_MX":495,"./locales/fa":514,"./locales/fr":540,"./locales/fr_CA":560,"./locales/ge":586,"./locales/id_ID":615,"./locales/it":652,"./locales/ja":674,"./locales/ko":695,"./locales/nb_NO":725,"./locales/nep":745,"./locales/nl":769,"./locales/pl":809,"./locales/pt_BR":838,"./locales/ru":875,"./locales/sk":915,"./locales/sv":962,"./locales/tr":988,"./locales/uk":1021,"./locales/vi":1048,"./locales/zh_CN":1071,"./locales/zh_TW":1090}],71:[function(require,module,exports){ +module["exports"] = [ + "###" +]; + +},{}],72:[function(require,module,exports){ +module["exports"] = [ + "#{Address.city_name}" +]; + +},{}],73:[function(require,module,exports){ +module["exports"] = [ + "Ağcabədi", + "Ağdam", + "Ağdaş", + "Ağdərə", + "Ağstafa", + "Ağsu", + "Astara", + "Bakı", + "Balakən", + "Beyləqan", + "Bərdə", + "Biləsuvar", + "Cəbrayıl", + "Cəlilabad", + "Culfa", + "Daşkəsən", + "Dəliməmmədli", + "Füzuli", + "Gədəbəy", + "Gəncə", + "Goranboy", + "Göyçay", + "Göygöl", + "Göytəpə", + "Hacıqabul", + "Horadiz", + "Xaçmaz", + "Xankəndi", + "Xocalı", + "Xocavənd", + "Xırdalan", + "Xızı", + "Xudat", + "İmişli", + "İsmayıllı", + "Kəlbəcər", + "Kürdəmir", + "Qax", + "Qazax", + "Qəbələ", + "Qobustan", + "Qovlar", + "Quba", + "Qubadlı", + "Qusar", + "Laçın", + "Lerik", + "Lənkəran", + "Liman", + "Masallı", + "Mingəçevir", + "Naftalan", + "Naxçıvan (şəhər)", + "Neftçala", + "Oğuz", + "Ordubad", + "Saatlı", + "Sabirabad", + "Salyan", + "Samux", + "Siyəzən", + "Sumqayıt", + "Şabran", + "Şahbuz", + "Şamaxı", + "Şəki", + "Şəmkir", + "Şərur", + "Şirvan", + "Şuşa", + "Tərtər", + "Tovuz", + "Ucar", + "Yardımlı", + "Yevlax", + "Zaqatala", + "Zəngilan", + "Zərdab" +]; + +},{}],74:[function(require,module,exports){ +module["exports"] = [ + "Akrotiri və Dekeliya", + "Aland adaları", + "Albaniya", + "Almaniya", + "Amerika Samoası", + "Andorra", + "Angilya", + "Anqola", + "Antiqua və Barbuda", + "Argentina", + "Aruba", + "Avstraliya", + "Avstriya", + "Azərbaycan", + "Baham adaları", + "Banqladeş", + "Barbados", + "Belçika", + "Beliz", + "Belarus", + "Benin", + "Bermud adaları", + "BƏƏ", + "ABŞ", + "Boliviya", + "Bolqarıstan", + "Bosniya və Herseqovina", + "Botsvana", + "Böyük Britaniya", + "Braziliya", + "Bruney", + "Burkina-Faso", + "Burundi", + "Butan", + "Bəhreyn", + "Cersi", + "Cəbəli-Tariq", + "CAR", + "Cənubi Sudan", + "Cənubi Koreya", + "Cibuti", + "Çad", + "Çexiya", + "Monteneqro", + "Çili", + "ÇXR", + "Danimarka", + "Dominika", + "Dominikan Respublikası", + "Efiopiya", + "Ekvador", + "Ekvatorial Qvineya", + "Eritreya", + "Ermənistan", + "Estoniya", + "Əfqanıstan", + "Əlcəzair", + "Farer adaları", + "Fələstin Dövləti", + "Fici", + "Kot-d’İvuar", + "Filippin", + "Finlandiya", + "Folklend adaları", + "Fransa", + "Fransa Polineziyası", + "Gernsi", + "Gürcüstan", + "Haiti", + "Hindistan", + "Honduras", + "Honkonq", + "Xorvatiya", + "İndoneziya", + "İordaniya", + "İraq", + "İran", + "İrlandiya", + "İslandiya", + "İspaniya", + "İsrail", + "İsveç", + "İsveçrə", + "İtaliya", + "Kabo-Verde", + "Kamboca", + "Kamerun", + "Kanada", + "Kayman adaları", + "Keniya", + "Kipr", + "Kiribati", + "Kokos adaları", + "Kolumbiya", + "Komor adaları", + "Konqo Respublikası", + "KDR", + "Kosovo", + "Kosta-Rika", + "Kuba", + "Kuk adaları", + "Küveyt", + "Qabon", + "Qambiya", + "Qana", + "Qətər", + "Qayana", + "Qazaxıstan", + "Qərbi Sahara", + "Qırğızıstan", + "Qrenada", + "Qrenlandiya", + "Quam", + "Qvatemala", + "Qvineya", + "Qvineya-Bisau", + "Laos", + "Latviya", + "Lesoto", + "Liberiya", + "Litva", + "Livan", + "Liviya", + "Lixtenşteyn", + "Lüksemburq", + "Macarıstan", + "Madaqaskar", + "Makao", + "Makedoniya", + "Malavi", + "Malayziya", + "Maldiv adaları", + "Mali", + "Malta", + "Marşall adaları", + "Mavriki", + "Mavritaniya", + "Mayotta", + "Meksika", + "Men adası", + "Mərakeş", + "MAR", + "Mikroneziya", + "Milad adası", + "Misir", + "Myanma", + "Moldova", + "Monako", + "Monqolustan", + "Montserrat", + "Mozambik", + "Müqəddəs Yelena, Askenson və Tristan-da-Kunya adaları", + "Namibiya", + "Nauru", + "Nepal", + "Niderland", + "Niderland Antil adaları", + "Niger", + "Nigeriya", + "Nikaraqua", + "Niue", + "Norfolk adası", + "Norveç", + "Oman", + "Özbəkistan", + "Pakistan", + "Palau", + "Panama", + "Papua-Yeni Qvineya", + "Paraqvay", + "Peru", + "Pitkern adaları", + "Polşa", + "Portuqaliya", + "Prednestroviya", + "Puerto-Riko", + "Ruanda", + "Rumıniya", + "Rusiya", + "Salvador", + "Samoa", + "San-Marino", + "San-Tome və Prinsipi", + "Seneqal", + "Sen-Bartelemi", + "Sent-Kits və Nevis", + "Sent-Lüsiya", + "Sen-Marten", + "Sen-Pyer və Mikelon", + "Sent-Vinsent və Qrenadina", + "Serbiya", + "Seyşel adaları", + "Səudiyyə Ərəbistanı", + "Sinqapur", + "Slovakiya", + "Sloveniya", + "Solomon adaları", + "Somali", + "Somalilend", + "Sudan", + "Surinam", + "Suriya", + "Svazilend", + "Syerra-Leone", + "Şərqi Timor", + "Şimali Marian adaları", + "Şpisbergen və Yan-Mayen", + "Şri-Lanka", + "Tacikistan", + "Tanzaniya", + "Tailand", + "Çin Respublikası", + "Törks və Kaykos adaları", + "Tokelau", + "Tonqa", + "Toqo", + "Trinidad və Tobaqo", + "Tunis", + "Tuvalu", + "Türkiyə", + "Türkmənistan", + "Ukrayna", + "Uollis və Futuna", + "Uqanda", + "Uruqvay", + "Vanuatu", + "Vatikan", + "Venesuela", + "Amerika Virgin adaları", + "Britaniya Virgin adaları", + "Vyetnam", + "Yamayka", + "Yaponiya", + "Yeni Kaledoniya", + "Yeni Zelandiya", + "Yəmən", + "Yunanıstan", + "Zambiya", + "Zimbabve" +]; + +},{}],75:[function(require,module,exports){ +module["exports"] = [ + "Azərbaycan" +]; + +},{}],76:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.street_title = require("./street_title"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":71,"./city":72,"./city_name":73,"./country":74,"./default_country":75,"./postcode":77,"./secondary_address":78,"./state":79,"./street_address":80,"./street_name":81,"./street_suffix":82,"./street_title":83}],77:[function(require,module,exports){ +module["exports"] = [ + "AZ####" +]; + +},{}],78:[function(require,module,exports){ +module["exports"] = [ + "m. ###" +]; + +},{}],79:[function(require,module,exports){ +module["exports"] = [ + +]; + +},{}],80:[function(require,module,exports){ +module["exports"] = [ + "#{street_name}, #{building_number}" +]; + +},{}],81:[function(require,module,exports){ +module["exports"] = [ + "#{street_suffix} #{Address.street_title}", + "#{Address.street_title} #{street_suffix}" +]; + +},{}],82:[function(require,module,exports){ +module["exports"] = [ + "küç.", + "küçəsi", + "prospekti", + "pr.", + "sahəsi", + "sh." +]; + +},{}],83:[function(require,module,exports){ +module["exports"] = [ + "Abbas Fətullayev", + "Abbas Mirzə Şərifzadə", + "Abbas Səhhət", + "Abdulla Şaiq", + "Afiyəddin Cəlilov", + "Axundov", + "Ağa Nemətulla", + "Ağadadaş Qurbanov", + "Akademik Həsən Əliyev", + "Akademik Lətif İmanov", + "Alı Mustafayev", + "Almas İldırım", + "Asəf Zeynallı", + "Asif Əsədullayev", + "Aşıq Alı", + "Aşıq Ələsgər", + "Azadlıq prospekti", + "Bakıxanov", + "Balababa Məcidov", + "Balaəmi Dadaşov", + "Behbud Şaxtantinski", + "Bəkir Çobanzadə", + "Bəsti Bağırova", + "Bəşir Səfəroğlu", + "Böyük Qala", + "Cabir Əliyev", + "Camal Hacıəliyev", + "Cavadxan", + "Cavanşir", + "Ceyhun Səlimov", + "Ceyhunbəy Hacıbəyli", + "Cəbiyev", + "Cəfər Xəndan", + "Cəfər Cabbarlı", + "Cəlal Qurbanov", + "Cəlil Məmmədquluzadə", + "Çingiz Mustafayev", + "Çobanzadə", + "Dadaş Bünyadzadə", + "Dağlı Yunus", + "Dilarə Əliyeva", + "Elçin Əzimov", + "Eldar və Abdulla Əlibəyovlar", + "Elxan Həsənov", + "Elşən Mehdiyev", + "Elşən Süleymanov", + "Etibar Bəkirov", + "Əbdüləzəl Dəmirçizadə", + "Əbdülhəsən Anaplı", + "Əbdülkərim Əlizadə", + "Əhməd bəy Ağaoğlu", + "Əhməd Cavad", + "Əhməd Cəmil", + "Əhməd Mehbalıyev", + "Əhməd Rəcəbli", + "Əjdər Xanbabayev", + "Əkrəm Cəfərov", + "Ələsgər Qayıbov", + "Əliağa Vahid", + "Əli Bəy Hüseynzadə", + "Əlimərdan bəy Topçubaşov", + "Əliyar Əliyev", + "Əlövsət Abdulrəhimov", + "Əlövsət Quliyev", + "Əmir Bağırov", + "Əsəd Əhmədov", + "Əşrəf Yunusov", + "Əzim Əzimzadə", + "Əziz Əliyev", + "Heybət Heybətov", + "Həqiqət Rzayeva", + "Həmid Araslı", + "Hənifə Ələsgərova", + "Hərbçilər", + "Həsənoğu", + "Həsən Seyidbəyli", + "Hətəm Allahverdiyev", + "Həzi Aslanov", + "Hüsü Hacıyev", + "Hüseynqulu Sarabski", + "Fətəli xan Xoyski", + "Fəzail Bayramov", + "Fikrət Əmirov", + "Fuad İbrahimbəyov", + "Fuad Yusifov", + "General Əliağa Şıxlinski", + "Gülayə Qədirbəyova", + "Gənclik", + "Xaqani", + "Xan Şuşinski", + "Xanlar", + "Xudu Məmmədov", + "İbrahimpaşa Dadaşov", + "İdris Süleymanov", + "İlqar Abbasov", + "İlqar İsmayılov", + "İmran Qasımov", + "İnqilab İsmayılov", + "İsfəndiyar Zülalov", + "İslam Abışov", + "İslam Səfərli", + "İsmayıl bəy Qutqaşınlı", + "İsmayıl Mirzəgülov", + "İstiqlaliyyət", + "28 May", + "İsgəndərov", + "İvan Turgenev", + "İzmir", + "İzzət Həmidov", + "İzzət Orucova", + "Kamal Rəhimov", + "Kazım Kazımzadə", + "Kazımağa Kərimov", + "Kərəm İsmayılov", + "Kiçik Qala", + "Koroğlu Rəhimov", + "Qaçaq Nəbi", + "Qarabağ", + "Qədirbəyov", + "Qəzənfər Musabəyov", + "Qəzənfər Vəliyev", + "Leyla Məmmədbəyova", + "Mahmud İbrahimov", + "Malik Məmmədov", + "Mehdi Abbasov", + "Mehdi Mehdizadə", + "Məhəmməd Əmin Rəsulzadə", + "Məhəmməd Hadi", + "Məhəmməd Xiyabani", + "Məhəmməd ibn Hinduşah Naxçıvani", + "Məhsəti Gəncəvi", + "Məmmədyarov", + "Mərdanov qardaşları", + "Mətləb Ağayev", + "Məşədi Hilal", + "Məzahir Rüstəmov", + "Mikayıl Müşviq", + "Mingəçevir", + "Mirəli Qaşqay", + "Mirəli Seyidov", + "Mirzağa Əliyev", + "Mirzə İbrahimov", + "Mirzə Mənsur", + "Mirzə Mustafayev", + "Murtuza Muxtarov", + "Mustafa Topçubaşov", + "Müqtədir Aydınbəyov", + "Müslüm Maqomayev", + "Müzəffər Həsənov", + "Nabat Aşurbəyova", + "Naxçıvani", + "Naximov", + "Nazim İsmaylov", + "Neapol", + "Neftçi Qurban Abbasov", + "Neftçilər prospekti", + "Nəcəfbəy Vəzirov", + "Nəcəfqulu Rəfiyev", + "Nəriman Nərimanov", + "Nəsirəddin Tusi", + "Nigar Rəfibəyli", + "Niyazi", + "Nizami", + "Nizami Abdullayev", + "Nobel prospekti", + "Novruz", + "Novruzov qardaşları", + "Oqtay Vəliyev", + "Parlament", + "Puşkin", + "Rafiq Ağayev", + "Ramiz Qəmbərov", + "Rəşid Behbudov", + "Rəşid Məcidov", + "Ruhulla Axundov", + "Ruslan Allahverdiyev", + "Rüstəm Rüstəmov", + "Tahir Bağırov", + "Tarzan Hacı Məmmədov", + "Tbilisi prospekti", + "Təbriz (Bakı)", + "Təbriz Xəlilbəyli", + "Tofiq Məmmədov", + "Tolstoy", + "Sabit Orucov", + "Sabit Rəhman", + "Sahib Hümmətov", + "Salatın Əsgərova", + "Sarayevo", + "Seyid Əzim Şirvani", + "Seyid Şuşinski", + "Seyidov", + "Səməd bəy Mehmandarov", + "Səməd Vurğun", + "Səttar Bəhlulzadə", + "Sona xanım Vəlixanlı", + "Sübhi Salayev", + "Süleyman Əhmədov", + "Süleyman Rəhimov", + "Süleyman Rüstəm", + "Süleyman Sani Axundov", + "Süleyman Vəzirov", + "Şahin Səmədov", + "Şamil Əzizbəyov", + "Şamil Kamilov", + "Şeyx Şamil", + "Şəfayət Mehdiyev", + "Şəmsi Bədəlbəyli", + "Şirin Mirzəyev", + "Şıxəli Qurbanov", + "Şövkət Ələkbərova", + "Ülvi Bünyadzadə", + "Üzeyir Hacıbəyov", + "Vasif Əliyev", + "Vəli Məmmədov", + "Vladislav Plotnikov", + "Vüqar Quliyev", + "Vunq Tau", + "Yaqub Əliyev", + "Yaşar Abdullayev", + "Yaşar Əliyev", + "Yavər Əliyev", + "Yesenin", + "Yəhya Hüseynov", + "Yılmaz Axundzadə", + "Yüsif Eyvazov", + "Yusif Qasımov", + "Yusif Məmmədəliyev", + "Yusif Səfərov", + "Yusif Vəzir Çəmənzəminli", + "Zahid Əliyev", + "Zahid Xəlilov", + "Zaur Kərimov", + "Zavod", + "Zərgərpalan" +]; + +},{}],84:[function(require,module,exports){ +module["exports"] = [ + "ala", + "açıq bənövşəyi", + "ağ", + "mavi", + "boz", + "bənövşəyi", + "göy rəng", + "gümüşü", + "kardinal", + "narıncı", + "qara", + "qırmızı", + "qəhvəyi", + "tünd göy", + "tünd qırmızı", + "xlorofil", + "yaşıl", + "çəhrayı" +]; + +},{}],85:[function(require,module,exports){ +module["exports"] = [ + "Kitablar", + "Filmlər", + "musiqi", + "oyunlar", + "Elektronika", + "Kompyuterlər", + "Ev", + "садинструмент", + "Səhiyyə", + "gözəllik", + "Oyuncaqlar", + "uşaq üçün", + "Geyim", + "Ayyaqqabı", + "bəzək", + "İdman", + "turizm", + "Avtomobil", +]; + +},{}],86:[function(require,module,exports){ +var commerce = {}; +module['exports'] = commerce; +commerce.color = require("./color"); +commerce.department = require("./department"); +commerce.product_name = require("./product_name"); + +},{"./color":84,"./department":85,"./product_name":87}],87:[function(require,module,exports){ +module["exports"] = { + "adjective": [ + "Balaca", + "Ergonomik", + "Kobud", + "İntellektual", + "Möhtəşəm", + "İnanılmaz", + "Fantastik", + "Əlverişli", + "Parlaq", + "Mükəmməl" + ], + "material": [ + "Polad", + "Ağac", + "Beton", + "Plastik", + "Pambıq", + "Qranit", + "Rezin" + ], + "product": [ + "Stul", + "Avtomobil", + "Kompyuter", + "Beret", + "Kulon", + "Stol", + "Sviter", + "Kəmər", + ] +}; + +},{}],88:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.prefix = require("./prefix"); +company.suffix = require("./suffix"); +company.name = require("./name"); + +},{"./name":89,"./prefix":90,"./suffix":91}],89:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{Name.female_first_name}", + "#{prefix} #{Name.male_first_name}", + "#{prefix} #{Name.male_last_name}", + "#{prefix} #{suffix}#{suffix}", + "#{prefix} #{suffix}#{suffix}#{suffix}", + "#{prefix} #{Address.city_name}#{suffix}", + "#{prefix} #{Address.city_name}#{suffix}#{suffix}", + "#{prefix} #{Address.city_name}#{suffix}#{suffix}#{suffix}" +]; + +},{}],90:[function(require,module,exports){ +module["exports"] = [ + "ASC", + "MMC", + "QSC", +]; + +},{}],91:[function(require,module,exports){ +arguments[4][79][0].apply(exports,arguments) +},{"dup":79}],92:[function(require,module,exports){ +var date = {}; +module["exports"] = date; +date.month = require("./month"); +date.weekday = require("./weekday"); + +},{"./month":93,"./weekday":94}],93:[function(require,module,exports){ +// source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/ru.xml#L1734 +module["exports"] = { + wide: [ + "yanvar", + "fevral", + "mart", + "aprel", + "may", + "iyun", + "iyul", + "avqust", + "sentyabr", + "oktyabr", + "noyabr", + "dekabr" + ], + wide_context: [ + "января", + "февраля", + "марта", + "апреля", + "мая", + "июня", + "июля", + "августа", + "сентября", + "октября", + "ноября", + "декабря" + ], + abbr: [ + "янв.", + "февр.", + "март", + "апр.", + "май", + "июнь", + "июль", + "авг.", + "сент.", + "окт.", + "нояб.", + "дек." + ], + abbr_context: [ + "янв.", + "февр.", + "марта", + "апр.", + "мая", + "июня", + "июля", + "авг.", + "сент.", + "окт.", + "нояб.", + "дек." + ] +}; + +},{}],94:[function(require,module,exports){ +// source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/ru.xml#L1825 +module["exports"] = { + wide: [ + "Bazar", + "Bazar ertəsi", + "Çərşənbə axşamı", + "Çərşənbə", + "Cümə axşamı", + "Cümə", + "Şənbə" + ], + wide_context: [ + "воскресенье", + "понедельник", + "вторник", + "среда", + "четверг", + "пятница", + "суббота" + ], + abbr: [ + "Ba", + "BE", + "ÇA", + "Çə", + "CA", + "Cü", + "Şə" + ], + abbr_context: [ + "вс", + "пн", + "вт", + "ср", + "чт", + "пт", + "сб" + ] +}; + +},{}],95:[function(require,module,exports){ +var az = {}; +module['exports'] = az; +az.title = "Azerbaijani"; +az.separator = " və "; +az.address = require("./address"); +az.internet = require("./internet"); +az.name = require("./name"); +az.phone_number = require("./phone_number"); +az.commerce = require("./commerce"); +az.company = require("./company"); +az.date = require("./date"); + +},{"./address":76,"./commerce":86,"./company":88,"./date":92,"./internet":98,"./name":101,"./phone_number":108}],96:[function(require,module,exports){ +module["exports"] = [ + "com", + "az", + "com.az", + "info", + "net", + "org" +]; + +},{}],97:[function(require,module,exports){ +module["exports"] = [ + "box.az", + "mail.az", + "gmail.com", + "yahoo.com", + "hotmail.com" +]; + +},{}],98:[function(require,module,exports){ +var internet = {}; +module['exports'] = internet; +internet.free_email = require("./free_email"); +internet.domain_suffix = require("./domain_suffix"); + +},{"./domain_suffix":96,"./free_email":97}],99:[function(require,module,exports){ +module["exports"] = [ + "Anna", + "Adeliya", + "Afaq", + "Afət", + "Afərim", + "Aidə", + "Aygün", + "Aynur", + "Alsu", + "Ayan", + "Aytən", + "Aygül", + "Aydan", + "Aylin", + "Bahar", + "Banu", + "Bəyaz", + "Billurə", + "Cansu", + "Ceyla", + "Damla", + "Dəniz", + "Diana", + "Dilarə", + "Ella", + "Elza", + "Elyanora", + "Ellada", + "Elvira", + "Elnarə", + "Esmira", + "Estella", + "Fatimə", + "Fəxriyyə", + "Fərəh", + "Fərqanə", + "Fidan", + "Firuzə", + "Gövhər", + "Günay", + "Gülay", + "Gülçin", + "Gülər", + "Gülsüm", + "Humay", + "Hüriyə", + "Hülya", + "Jalə", + "Jasmin", + "Kübra", + "Ləman", + "Lamiyə", + "Lalə", + "Liliya", + "Laura", + "Leyla", + "Maya", + "Mehriban", + "Mələk", + "Nuray", + "Nurgün", + "Nərgiz", + "Nigar", + "Ofelya", + "Pəri", + "Röya", + "Səbinə", + "Selcan", + "Tansu", + "Tuba", + "Ülviyyə", + "Ulduz", + "Ülkər" +]; + +},{}],100:[function(require,module,exports){ +module["exports"] = [ + "Qasımova", + "Əfəndiyeva", + "Soltanova", + "Abdullayeva", + "Rəşidova", + "Ələkbərova", + "Əliyeva", + "Tahirova", + "Seyidova", + "Vəsiyeva" +]; + +},{}],101:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.male_first_name = require("./male_first_name"); +name.male_last_name = require("./male_last_name"); +name.female_first_name = require("./female_first_name"); +name.female_last_name = require("./female_last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.name = require("./name"); + +},{"./female_first_name":99,"./female_last_name":100,"./male_first_name":102,"./male_last_name":103,"./name":104,"./prefix":105,"./suffix":106}],102:[function(require,module,exports){ +module["exports"] = [ + "Anar", + "Amid", + "Afəl", + "Abbas", + "Abdulla", + "Adil", + "Akif", + "Aqil", + "Bəhram", + "Nurlan", + "Rafiq", + "Tərlan", + "Zaur", + "Emin", + "Emil", + "Kamran", + "Elnur", + "Natiq", + "Rəşad", + "Rəşid", + "Tahir", + "Əhməd", + "Zahir", + "İlham", + "İlqar", + "Nahid", + "Nihad", + "Faiq", + "İxtiyar", + "Şəhriyar", + "Şaiq", + "Bəxtiyar", + "Bəhruz", + "Tunar", + "Nadir" +]; + +},{}],103:[function(require,module,exports){ +module["exports"] = [ + "Əhmədov", + "Ələkbərov", + "Əliyev", + "Vəliyev", + "Soltanov", + "Quliyev", + "Məmmədov", + "Xəlilov", + "Nəzərov", + "Rəhimov" +]; + +},{}],104:[function(require,module,exports){ +module["exports"] = [ + "#{male_first_name}", + "#{male_last_name} #{male_first_name}", + "#{male_first_name} #{male_last_name}", + "#{female_first_name}", + "#{female_first_name} #{female_last_name}", + "#{female_last_name} #{female_first_name}", +]; + +},{}],105:[function(require,module,exports){ +module["exports"] = []; + +},{}],106:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],107:[function(require,module,exports){ +module["exports"] = [ + "(9##)###-##-##" +]; + +},{}],108:[function(require,module,exports){ +var phone_number = {}; +module['exports'] = phone_number; +phone_number.formats = require("./formats"); + +},{"./formats":107}],109:[function(require,module,exports){ +module["exports"] = [ + "#", + "##", + "###" +]; + +},{}],110:[function(require,module,exports){ +module["exports"] = [ + "#{city_name}" +]; + +},{}],111:[function(require,module,exports){ +module["exports"] = [ + "Abertamy", + "Adamov", + "Andělská Hora", + "Aš", + "Bakov nad Jizerou", + "Bavorov", + "Bechyně", + "Bečov nad Teplou", + "Bělá nad Radbuzou", + "Bělá pod Bezdězem", + "Benátky nad Jizerou", + "Benešov", + "Benešov nad Ploučnicí", + "Beroun", + "Bezdružice", + "Bílina", + "Bílovec", + "Blansko", + "Blatná", + "Blovice", + "Blšany", + "Bochov", + "Bohumín", + "Bohušovice nad Ohří", + "Bojkovice", + "Bor", + "Borohrádek", + "Borovany", + "Boskovice", + "Boží Dar", + "Brandýs nad Labem-Stará Boleslav", + "Brandýs nad Orlicí", + "Brno", + "Broumov", + "Brtnice", + "Brumov-Bylnice", + "Bruntál", + "Brušperk", + "Břeclav", + "Březnice", + "Březová", + "Březová nad Svitavou", + "Břidličná", + "Bučovice", + "Budišov nad Budišovkou", + "Budyně nad Ohří", + "Buštěhrad", + "Bystré", + "Bystřice", + "Bystřice nad Pernštejnem", + "Bystřice pod Hostýnem", + "Bzenec", + "Chabařovice", + "Cheb", + "Chlumec", + "Chlumec nad Cidlinou", + "Choceň", + "Chodov", + "Chomutov", + "Chotěboř", + "Chrast", + "Chrastava", + "Chropyně", + "Chrudim", + "Chřibská", + "Chvaletice", + "Chýnov", + "Chyše", + "Cvikov", + "Čáslav", + "Čelákovice", + "Černošice", + "Černošín", + "Černovice", + "Červená Řečice", + "Červený Kostelec", + "Česká Kamenice", + "Česká Lípa", + "Česká Skalice", + "Česká Třebová", + "České Budějovice", + "České Velenice", + "Český Brod", + "Český Dub", + "Český Krumlov", + "Český Těšín", + "Dačice", + "Dašice", + "Děčín", + "Desná", + "Deštná", + "Dobrovice", + "Dobruška", + "Dobřany", + "Dobřichovice", + "Dobříš", + "Doksy", + "Dolní Benešov", + "Dolní Bousov", + "Dolní Kounice", + "Dolní Poustevna", + "Domažlice", + "Dubá", + "Dubí", + "Dubňany", + "Duchcov", + "Dvůr Králové nad Labem", + "Františkovy Lázně", + "Frenštát pod Radhoštěm", + "Frýdek-Místek", + "Frýdlant", + "Frýdlant nad Ostravicí", + "Fryšták", + "Fulnek", + "Golčův Jeníkov", + "Habartov", + "Habry", + "Hanušovice", + "Harrachov", + "Hartmanice", + "Havířov", + "Havlíčkův Brod", + "Hejnice", + "Heřmanův Městec", + "Hlinsko", + "Hluboká nad Vltavou", + "Hlučín", + "Hluk", + "Hodkovice nad Mohelkou", + "Hodonín", + "Holešov", + "Holice", + "Holýšov", + "Hora Svaté Kateřiny", + "Horažďovice", + "Horní Benešov", + "Horní Blatná", + "Horní Bříza", + "Horní Cerekev", + "Horní Jelení", + "Horní Jiřetín", + "Horní Planá", + "Horní Slavkov", + "Horšovský Týn", + "Hořice", + "Hořovice", + "Hostinné", + "Hostivice", + "Hostomice", + "Hostouň", + "Hoštka", + "Hradec Králové", + "Hradec nad Moravicí", + "Hrádek", + "Hrádek nad Nisou", + "Hranice (okres Cheb)", + "Hranice (okres Přerov)", + "Hrob", + "Hrochův Týnec", + "Hronov", + "Hrotovice", + "Hroznětín", + "Hrušovany nad Jevišovkou", + "Hulín", + "Humpolec", + "Husinec", + "Hustopeče", + "Ivančice", + "Ivanovice na Hané", + "Jablonec nad Jizerou", + "Jablonec nad Nisou", + "Jablonné nad Orlicí", + "Jablonné v Podještědí", + "Jablunkov", + "Jáchymov", + "Janov", + "Janovice nad Úhlavou", + "Janské Lázně", + "Jaroměř", + "Jaroměřice nad Rokytnou", + "Javorník", + "Jemnice", + "Jesenice (okres Rakovník)", + "Jeseník", + "Jevíčko", + "Jevišovice", + "Jičín", + "Jihlava", + "Jilemnice", + "Jílové", + "Jílové u Prahy", + "Jindřichův Hradec", + "Jirkov", + "Jiříkov", + "Jistebnice", + "Kadaň", + "Kamenice nad Lipou", + "Kamenický Šenov", + "Kaplice", + "Kardašova Řečice", + "Karlovy Vary", + "Karolinka", + "Karviná", + "Kasejovice", + "Kašperské Hory", + "Kaznějov", + "Kdyně", + "Kelč", + "Kladno", + "Kladruby", + "Klášterec nad Ohří", + "Klatovy", + "Klecany", + "Klimkovice", + "Klobouky u Brna", + "Kojetín", + "Kolín", + "Konice", + "Kopidlno", + "Kopřivnice", + "Koryčany", + "Kosmonosy", + "Kostelec na Hané", + "Kostelec nad Černými lesy", + "Kostelec nad Labem", + "Kostelec nad Orlicí", + "Košťany", + "Kouřim", + "Kožlany", + "Králíky", + "Kralovice", + "Kralupy nad Vltavou", + "Králův Dvůr", + "Kraslice", + "Krásná Hora nad Vltavou", + "Krásná Lípa", + "Krásné Údolí", + "Krásno", + "Kravaře", + "Krnov", + "Kroměříž", + "Krupka", + "Kryry", + "Kunovice", + "Kunštát", + "Kuřim", + "Kutná Hora", + "Kyjov", + "Kynšperk nad Ohří", + "Lanškroun", + "Lanžhot", + "Lázně Bělohrad", + "Lázně Bohdaneč", + "Lázně Kynžvart", + "Ledeč nad Sázavou", + "Ledvice", + "Letohrad", + "Letovice", + "Libáň", + "Libčice nad Vltavou", + "Liběchov", + "Liberec", + "Libochovice", + "Libušín", + "Lipník nad Bečvou", + "Lišov", + "Litoměřice", + "Litomyšl", + "Litovel", + "Litvínov", + "Loket", + "Lom", + "Lomnice nad Lužnicí", + "Lomnice nad Popelkou", + "Loštice", + "Loučná pod Klínovcem", + "Louny", + "Lovosice", + "Luby", + "Lučany nad Nisou", + "Luhačovice", + "Luže", + "Lysá nad Labem", + "Manětín", + "Mariánské Lázně", + "Mašťov", + "Měčín", + "Mělník", + "Městec Králové", + "Město Albrechtice", + "Město Touškov", + "Meziboří", + "Meziměstí", + "Mikulášovice", + "Mikulov", + "Miletín", + "Milevsko", + "Milovice", + "Mimoň", + "Miroslav", + "Mirošov", + "Mirotice", + "Mirovice", + "Mladá Boleslav", + "Mladá Vožice", + "Mnichovice", + "Mnichovo Hradiště", + "Mníšek pod Brdy", + "Modřice", + "Mohelnice", + "Moravská Třebová", + "Moravské Budějovice", + "Moravský Beroun", + "Moravský Krumlov", + "Morkovice-Slížany", + "Most", + "Mšeno", + "Mýto", + "Náchod", + "Nalžovské Hory", + "Náměšť nad Oslavou", + "Napajedla", + "Nasavrky", + "Nechanice", + "Nejdek", + "Němčice nad Hanou", + "Nepomuk", + "Neratovice", + "Netolice", + "Neveklov", + "Nová Bystřice", + "Nová Paka", + "Nová Role", + "Nová Včelnice", + "Nové Hrady", + "Nové Město na Moravě", + "Nové Město nad Metují", + "Nové Město pod Smrkem", + "Nové Sedlo", + "Nové Strašecí", + "Nový Bor", + "Nový Bydžov", + "Nový Jičín", + "Nový Knín", + "Nymburk", + "Nýrsko", + "Nýřany", + "Odolena Voda", + "Odry", + "Olešnice", + "Olomouc", + "Oloví", + "Opava", + "Opočno", + "Orlová", + "Osečná", + "Osek", + "Oslavany", + "Ostrava", + "Ostrov", + "Otrokovice", + "Pacov", + "Pardubice", + "Paskov", + "Pec pod Sněžkou", + "Pečky", + "Pelhřimov", + "Petřvald", + "Pilníkov", + "Písek", + "Planá", + "Planá nad Lužnicí", + "Plánice", + "Plasy", + "Plesná", + "Plumlov", + "Plzeň", + "Poběžovice", + "Počátky", + "Podbořany", + "Poděbrady", + "Podivín", + "Pohořelice", + "Police nad Metují", + "Polička", + "Polná", + "Postoloprty", + "Potštát", + "Prachatice", + "Praha", + "Proseč", + "Prostějov", + "Protivín", + "Přebuz", + "Přelouč", + "Přerov", + "Přeštice", + "Příbor", + "Příbram", + "Přibyslav", + "Přimda", + "Pyšely", + "Rabí", + "Radnice", + "Rájec-Jestřebí", + "Rajhrad", + "Rakovník", + "Ralsko", + "Raspenava", + "Rejštejn", + "Rokycany", + "Rokytnice nad Jizerou", + "Rokytnice v Orlických horách", + "Ronov nad Doubravou", + "Rosice", + "Rotava", + "Roudnice nad Labem", + "Rousínov", + "Rovensko pod Troskami", + "Roztoky", + "Rožďalovice", + "Rožmberk nad Vltavou", + "Rožmitál pod Třemšínem", + "Rožnov pod Radhoštěm", + "Rtyně v Podkrkonoší", + "Rudná", + "Rudolfov", + "Rumburk", + "Rychnov nad Kněžnou", + "Rychnov u Jablonce nad Nisou", + "Rychvald", + "Rýmařov", + "Řevnice", + "Říčany", + "Sadská", + "Sázava", + "Seč", + "Sedlčany", + "Sedlec-Prčice", + "Sedlice", + "Semily", + "Sezemice", + "Sezimovo Ústí", + "Skalná", + "Skuteč", + "Slaný", + "Slatiňany", + "Slavičín", + "Slavkov u Brna", + "Slavonice", + "Slušovice", + "Smečno", + "Smiřice", + "Smržovka", + "Soběslav", + "Sobotka", + "Sokolov", + "Solnice", + "Spálené Poříčí", + "Staňkov", + "Staré Město (okres Šumperk)", + "Staré Město (okres Uherské Hradiště)", + "Stárkov", + "Starý Plzenec", + "Stochov", + "Stod", + "Strakonice", + "Stráž nad Nežárkou", + "Stráž pod Ralskem", + "Strážnice", + "Strážov", + "Strmilov", + "Stříbro", + "Studénka", + "Suchdol nad Lužnicí", + "Sušice", + "Světlá nad Sázavou", + "Svitavy", + "Svoboda nad Úpou", + "Svratka", + "Šenov", + "Šlapanice", + "Šluknov", + "Špindlerův Mlýn", + "Šternberk", + "Štětí", + "Štíty", + "Štramberk", + "Šumperk", + "Švihov", + "Tábor", + "Tachov", + "Tanvald", + "Telč", + "Teplá", + "Teplice", + "Teplice nad Metují", + "Terezín", + "Tišnov", + "Toužim", + "Tovačov", + "Trhové Sviny", + "Trhový Štěpánov", + "Trmice", + "Trutnov", + "Třebechovice pod Orebem", + "Třebenice", + "Třebíč", + "Třeboň", + "Třemošná", + "Třemošnice", + "Třešť", + "Třinec", + "Turnov", + "Týn nad Vltavou", + "Týnec nad Labem", + "Týnec nad Sázavou", + "Týniště nad Orlicí", + "Uherské Hradiště", + "Uherský Brod", + "Uherský Ostroh", + "Uhlířské Janovice", + "Újezd u Brna", + "Unhošť", + "Uničov", + "Úpice", + "Úsov", + "Ústí nad Labem", + "Ústí nad Orlicí", + "Úštěk", + "Úterý", + "Úvaly", + "Valašské Klobouky", + "Valašské Meziříčí", + "Valtice", + "Vamberk", + "Varnsdorf", + "Vejprty", + "Velešín", + "Velká Bíteš", + "Velká Bystřice", + "Velké Bílovice", + "Velké Hamry", + "Velké Meziříčí", + "Velké Opatovice", + "Velké Pavlovice", + "Velký Šenov", + "Veltrusy", + "Velvary", + "Verneřice", + "Veselí nad Lužnicí", + "Veselí nad Moravou", + "Vidnava", + "Vimperk", + "Vítkov", + "Vizovice", + "Vlachovo Březí", + "Vlašim", + "Vodňany", + "Volary", + "Volyně", + "Votice", + "Vracov", + "Vratimov", + "Vrbno pod Pradědem", + "Vrchlabí", + "Vroutek", + "Vsetín", + "Všeruby", + "Výsluní", + "Vysoké Mýto", + "Vysoké nad Jizerou", + "Vysoké Veselí", + "Vyškov", + "Vyšší Brod", + "Zábřeh", + "Zákupy", + "Zásmuky", + "Zbiroh", + "Zbýšov", + "Zdice", + "Zlaté Hory", + "Zlín", + "Zliv", + "Znojmo", + "Zruč nad Sázavou", + "Zubří", + "Žacléř", + "Žamberk", + "Žandov", + "Žatec", + "Ždánice", + "Žďár nad Sázavou", + "Ždírec nad Doubravou", + "Žebrák", + "Železná Ruda", + "Železnice", + "Železný Brod", + "Židlochovice", + "Žirovnice", + "Žlutice", + "Žulová", +]; + +},{}],112:[function(require,module,exports){ +module["exports"] = [ + "Afghánistán", + "Albánie", + "Alžírsko", + "Andorra", + "Angola", + "Antigua a Barbuda", + "Argentina", + "Arménie", + "Austrálie", + "Ázerbájdžán", + "Bahamy", + "Bahrajn", + "Bangladéš", + "Barbados", + "Belgie", + "Belize", + "Benin", + "Bělorusko", + "Bhútán", + "Bolívie", + "Bosna a Hercegovina", + "Botswana", + "Brazílie", + "Brunej", + "Bulharsko", + "Burkina Faso", + "Burundi", + "Čad", + "Černá Hora", + "Česko", + "Čína", + "Dánsko", + "DR Kongo", + "Dominika", + "Dominik", + "Džibutsko", + "Egypt", + "Ekvádor", + "Eritrea", + "Estonsko", + "Etiopie", + "Fidži", + "Filipíny", + "Finsko", + "Francie", + "Gabon", + "Gambie", + "Gruzie", + "Německo", + "Ghana", + "Grenada", + "Guatemala", + "Guinea", + "Guinea-Bissau", + "Guyana", + "Haiti", + "Honduras", + "Chile", + "Chorvatsko", + "Indie", + "Indonésie", + "Irák", + "Írán", + "Irsko", + "Island", + "Itálie", + "Izrael", + "Jamajka", + "Japonsko", + "Jemen", + "Jihoaf", + "Jižní Korea", + "Jižní Súdán", + "Jordánsko", + "Kambodža", + "Kamerun", + "Kanada", + "Kapverdy", + "Katar", + "Kazachstán", + "Keňa", + "Kiribati", + "Kolumbie", + "Komory", + "Kongo", + "Kostarika", + "Kuba", + "Kuvajt", + "Kypr", + "Kyrgyzstán", + "Laos", + "Lesotho", + "Libanon", + "Libérie", + "Libye", + "Lichtenštejnsko", + "Litva", + "Lotyšsko", + "Lucembursko", + "Madagaskar", + "Maďarsko", + "Makedonie", + "Malajsie", + "Malawi", + "Maledivy", + "Mali", + "Malta", + "Maroko", + "Marshallovy ostrovy", + "Mauritánie", + "Mauricius", + "Mexiko", + "Mikronésie", + "Moldavsko", + "Monako", + "Mongolsko", + "Mosambik", + "Myanmar (Barma)", + "Namibie", + "Nauru", + "Nepál", + "Niger", + "Nigérie", + "Nikaragua", + "Nizozemsko", + "Norsko", + "Nový Zéland", + "Omán", + "Pákistán", + "Palau", + "Palestina", + "Panama", + "Papua-Nová Guinea", + "Paraguay", + "Peru", + "Pobřeží slonoviny", + "Polsko", + "Portugalsko", + "Rakousko", + "Rovníková Guinea", + "Rumunsko", + "Rusko", + "Rwanda", + "Řecko", + "Salvador", + "Samoa", + "San Marino", + "Saúdská Arábie", + "Senegal", + "Severní Korea", + "Seychely", + "Sierra Leone", + "Singapur", + "Slovensko", + "Slovinsko", + "Srbsko", + "Středo", + "Somálsko", + "Surinam", + "Súdán", + "Svatá Lucie", + "Svatý Kryštof a Nevis", + "Svatý Tomáš a Princův ostrov", + "Svatý Vincenc a Grenadiny", + "Svazijsko", + "Spojené arabské emiráty", + "Spojené království", + "Spojené státy americké", + "Sýrie", + "Šalamounovy ostrovy", + "Španělsko", + "Srí Lanka", + "Švédsko", + "Švýcarsko", + "Tádžikistán", + "Tanzanie", + "Thajsko", + "Togo", + "Tonga", + "Trinidad a Tobago", + "Tunisko", + "Turecko", + "Turkmenistán", + "Tuvalu", + "Uganda", + "Ukrajina", + "Uruguay", + "Uzbekistán", + "Vanuatu", + "Vatikán", + "Venezuela", + "Vietnam", + "Východní Timor", + "Zambie", + "Zimbabwe", +]; + +},{}],113:[function(require,module,exports){ +module["exports"] = [ + "Česká republika" +]; + +},{}],114:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.country = require("./country"); +address.building_number = require("./building_number"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.time_zone = require("./time_zone"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street = require("./street"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":109,"./city":110,"./city_name":111,"./country":112,"./default_country":113,"./postcode":115,"./secondary_address":116,"./state":117,"./state_abbr":118,"./street":119,"./street_address":120,"./street_name":121,"./time_zone":122}],115:[function(require,module,exports){ +module["exports"] = [ + "#####", + "### ##", + "###-##" +]; + +},{}],116:[function(require,module,exports){ +module["exports"] = [ + "Apt. ###", + "Suite ###" +]; + +},{}],117:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],118:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],119:[function(require,module,exports){ +module["exports"] = [ + "17. Listopadu", + "17. Listopadu", + "28. Pluku", + "28. Října", + "28. Října", + "5. Května", + "5. Května", + "5. Máje", + "7. Května", + "8. Listopadu", + "9. Května", + "Achátová", + "Adamova", + "Adamovská", + "Adélčina", + "Africká", + "Akademická", + "Aksamitova", + "Akátová", + "Alabastrová", + "Albertov", + "Albrechtická", + "Albánská", + "Albíny Hochové", + "Aldašínská", + "Alej Českých Exulantů", + "Aleny Santarové", + "Aloisovská", + "Aloisovská", + "Aloisovská", + "Altajská", + "Alšovo Nábř.", + "Alšovo Nábřeží", + "Alšovy Sady", + "Alžírská", + "Ambrožova", + "Americká", + "Ametystová", + "Amforová", + "Amortova", + "Ampérova", + "Amurská", + "Anastázova", + "Anderleho", + "Andersenova", + "Andrštova", + "Andělova", + "Anenská", + "Anenské Nám.", + "Anenské Náměstí", + "Anežky Malé", + "Anežská", + "Angelovova", + "Anglická", + "Angolská", + "Anhaltova", + "Ankarská", + "Anny Drabíkové", + "Anny Letenské", + "Anny Rybníčkové", + "Anny Čížkové", + "Anny Čížkové", + "Antala Staška", + "Antonína Hodného", + "Antonína Čermáka", + "Antonínská", + "Anýzová", + "Apolinářská", + "Arabská", + "Aranžérská", + "Arbesovo Nám.", + "Arbesovo Náměstí", + "Archangelská", + "Archeologická", + "Archimédova", + "Archivní", + "Argentinská", + "Aristotelova", + "Arkalycká", + "Armádní", + "Armádního Sboru", + "Armády", + "Arménská", + "Arnošta Valenty", + "Astlova", + "Athénská", + "Atletická", + "Aubrechtové", + "Augustinova", + "Augustova", + "Austova", + "Aviatická", + "Axmanova", + "Azalková", + "Azuritová", + "Ašská", + "Baarova", + "Babická", + "Babiččina", + "Babočková", + "Babská", + "Babylonská", + "Babákova", + "Bachmačské Nám.", + "Bachmačské Náměstí", + "Bachova", + "Bacháčkova", + "Badeniho", + "Badeniho", + "Bajgarova", + "Bajkalská", + "Bajkonurská", + "Bakalářská", + "Bakovská", + "Bakurinova", + "Balabánova", + "Balbínova", + "Banskobystrická", + "Baranova", + "Barchovická", + "Barešova", + "Barrandova", + "Barrandovská", + "Bartolomějská", + "Bartoňkova", + "Bartoňova", + "Bartoškova", + "Bartoškova", + "Bartoškova", + "Bartákova", + "Bartůňkova", + "Barunčina", + "Barvířská", + "Barákova", + "Basilejské Nám.", + "Basilejské Náměstí", + "Bassova", + "Batelovská", + "Batličkova", + "Bavorovská", + "Bavorská", + "Bazalková", + "Bazovského", + "Bačetínská", + "Baňská", + "Baškirská", + "Bašteckého", + "Baštýřská", + "Bažantní", + "Beaufortova", + "Bechlínská", + "Bechyňova", + "Bechyňská", + "Beckovská", + "Bedlová", + "Bednářská", + "Bedrnova", + "Bedřichovská", + "Beethovenova", + "Beldova", + "Belgická", + "Bellova", + "Bellušova", + "Bendlova", + "Bendova", + "Benecká", + "Benediktská", + "Benešovská", + "Benická", + "Benkova", + "Benákova", + "Benátská", + "Benáčanova", + "Beníškové", + "Beranových", + "Bergerova", + "Bergmanova", + "Berkovská", + "Berlínská", + "Bermanova", + "Bernartická", + "Bernolákova", + "Berounská", + "Bertrámová", + "Berylová", + "Besední", + "Beskydská", + "Betlémská", + "Betlémské Nám.", + "Betlémské Náměstí", + "Betáňská", + "Bezdrevská", + "Bezděkovská", + "Bezinková", + "Bezová", + "Bezprašná", + "Bečovská", + "Bečvářova", + "Bečvářská", + "Bečvářská", + "Beřkovická", + "Bešťákova", + "Bieblova", + "Binarova", + "Biskupcova", + "Biskupská", + "Biskupský Dvůr", + "Blachutova", + "Blahníkova", + "Blahoslavova", + "Blanická", + "Blatenská", + "Blatnická", + "Blatovská", + "Blatská", + "Blattného", + "Blažimská", + "Blažkova", + "Blažíčkova", + "Blešnovská", + "Blodkova", + "Bludovická", + "Blériotova", + "Blšanecká", + "Bobkova", + "Bochovská", + "Bodláková", + "Bohdalec", + "Bohdalec", + "Bohdalecká", + "Bohdalecká", + "Bohdanečská", + "Bohdašínská", + "Bohnická", + "Bohrova", + "Bohumínská", + "Bohuslava Martinů", + "Bohuslava Martinů", + "Bohuslava Ze Švamberka", + "Bohuslavická", + "Bohušovická", + "Bohušovická", + "Boháčova", + "Bohúňova", + "Bojanovická", + "Bojasova", + "Bojetická", + "Boješická", + "Bojkovická", + "Bojovská", + "Bojínková", + "Bojčenkova", + "Bolebořská", + "Boleratická", + "Boleslavova", + "Boleslavská", + "Boletická", + "Bolevecká", + "Bolinská", + "Boloňská", + "Bolzanova", + "Bolívarova", + "Borecká", + "Borečkova", + "Borodinská", + "Borotínská", + "Borovanská", + "Borovanského", + "Borovnická", + "Borovská", + "Borová", + "Borošova", + "Borská", + "Borského", + "Boršov", + "Boršovská", + "Borůvková", + "Boseňská", + "Botevova", + "Botičská", + "Botičská", + "Boudova", + "Bousovská", + "Boučkova", + "Bouřilova", + "Boušova", + "Bozděchova", + "Boční I", + "Boční Ii", + "Bořanovická", + "Bořetická", + "Bořetínská", + "Bořivojova", + "Bořivojova", + "Boříkova", + "Bošická", + "Bošilecká", + "Bošínská", + "Božanovská", + "Božecká", + "Božejovická", + "Boženy Hofmeisterové", + "Boženy Jandlové", + "Boženy Němcové", + "Boženy Němcové", + "Boženy Stárkové", + "Božetická", + "Božetěchova", + "Božkova", + "Božkovská", + "Božídarská", + "Brabcova", + "Bramboříková", + "Branaldova", + "Brandejsova", + "Brandejsovo Nám.", + "Brandejsovo Náměstí", + "Brandlova", + "Brandýská", + "Branická", + "Branická", + "Branické Nám.", + "Branické Náměstí", + "Branislavova", + "Branišovská", + "Branská", + "Bratislavská", + "Bratranců Veverkových", + "Bratří Dohalských", + "Bratří Venclíků", + "Bratří Čapků", + "Bratříkovská", + "Braunerova", + "Braunova", + "Braškovská", + "Brdecká", + "Brdičkova", + "Brdlíkova", + "Brechtova", + "Brechtova", + "Brehmova", + "Breitcetlova", + "Brichtova", + "Brigádnická", + "Brigádníků", + "Brixiho", + "Brodecká", + "Brodecká", + "Brodského", + "Bromova", + "Bronzová", + "Broskvoňová", + "Broumarská", + "Broumovská", + "Brozánská", + "Brožíkova", + "Brtecká", + "Brtnická", + "Brumovická", + "Brunclíkova", + "Brunelova", + "Brunnerova", + "Bruselská", + "Brusinková", + "Bruslařská", + "Bryksova", + "Brzická", + "Brzorádových", + "Brázdimská", + "Brňovská", + "Bubenečská", + "Bubenečská", + "Bubenská", + "Bubenské Nábř.", + "Bubenské Nábřeží", + "Bubeníčkova", + "Bublavská", + "Bublíkova", + "Bubnova", + "Bucharova", + "Buchlovská", + "Buchovcova", + "Budapešťská", + "Budečská", + "Budilova", + "Budilovská", + "Budovatelská", + "Budyňská", + "Budyšínská", + "Budínova", + "Budčická", + "Budějovická", + "Budějovická", + "Bukolská", + "Bukovecká", + "Bukovinská", + "Buková", + "Bulharská", + "Buližníková", + "Bulovka", + "Burdova", + "Burešova", + "Burianova", + "Butovická", + "Butovická", + "Buzulucká", + "Buštěhradská", + "Bydhošťská", + "Bydžovská", + "Bydžovského", + "Bylanská", + "Bystrá", + "Bystřická", + "Bystřičná", + "Byšická", + "Byškovická", + "Bzenecká", + "Bártlova", + "Bášťská", + "Bílenecké Nám.", + "Bílenecké Náměstí", + "Bílinská", + "Bílkova", + "Bílkova", + "Bílovská", + "Bílá", + "Bílčická", + "Bínova", + "Bítovská", + "Böhmova", + "Býšovská", + "Běchorská", + "Běchovická", + "Běhounkova", + "Bělehradská", + "Bělehradská", + "Bělehradská", + "Bělečská", + "Bělinského", + "Bělocerkevská", + "Bělocká", + "Bělohorská", + "Bělohorská", + "Bělomlýnská", + "Bělomlýnská", + "Běloveská", + "Běluňská", + "Bělušická", + "Bělásková", + "Bělčická", + "Bělčická", + "Běžecká", + "Běžná", + "Břeclavská", + "Břehová", + "Břehová", + "Břetislavova", + "Břevnovská", + "Březanova", + "Březecká", + "Březenská", + "Březinova", + "Březiněveská", + "Březnická", + "Březnová", + "Březovická", + "Březovského", + "Březová", + "Břečťanová", + "Břežanská", + "Břežánecká", + "Břidlicová", + "Břidličná", + "Břízova", + "Bříšťanská", + "Cafourkova", + "Cedrová", + "Celetná", + "Celniční", + "Celsiova", + "Cementářská", + "Ceplechova", + "Cerhenická", + "Cerhýnská", + "Cetyňská", + "Chabařovická", + "Chaberská", + "Chabeřická", + "Chabská", + "Chalabalova", + "Chaloupeckého", + "Chaloupky", + "Chaltická", + "Chalupkova", + "Chalupnická", + "Chaplinovo Nám.", + "Chaplinovo Náměstí", + "Charkovská", + "Charlese De Gaulla", + "Charvátova", + "Chatařská", + "Chatová", + "Chebská", + "Chelčického", + "Chemická", + "Chilská", + "Chittussiho", + "Chladírenská", + "Chlebovická", + "Chlumecká", + "Chlumecká", + "Chlumecká", + "Chlumova", + "Chlumínská", + "Chlumčanského", + "Chlupova", + "Chlupáčova", + "Chládkova", + "Chmelařská", + "Chmelická", + "Chmelová", + "Chmelířova", + "Choceradská", + "Choceňská", + "Chocholouškova", + "Chocholova", + "Chodecká", + "Chodovecké Nám.", + "Chodovecké Náměstí", + "Chodovická", + "Chodovská", + "Chodovská", + "Chodovská", + "Chodská", + "Cholupická", + "Chomutovická", + "Chomutovská", + "Chopinova", + "Choratická", + "Chorošová", + "Chorušická", + "Chorvatská", + "Chotečská", + "Chotkova", + "Chotouchovská", + "Chotouňská", + "Chotovická", + "Chotutická", + "Chotěbuzská", + "Chotěnovská", + "Chotětovská", + "Chotěšovská", + "Chovatelská", + "Chrastavská", + "Chrobolská", + "Chrpová", + "Chrudimská", + "Chráněná", + "Chrášťanská", + "Chuchelská", + "Chudenická", + "Chudoměřická", + "Churnajevova", + "Churáňovská", + "Chvaletická", + "Chvaletická", + "Chvalečská", + "Chvalkovická", + "Chvalova", + "Chvalská", + "Chvalská", + "Chvalšovická", + "Chvatěrubská", + "Chvojenecká", + "Chyjická", + "Chýnická", + "Chýnovská", + "Chýňská", + "Chřibská", + "Cibulka", + "Cidlinská", + "Cigánkova", + "Cihelná", + "Cihlářova", + "Cihlářská", + "Cimburkova", + "Ciolkovského", + "Cirkusová", + "Cisterciácká", + "Citolibská", + "Coriových", + "Ctiborova", + "Ctiněveská", + "Ctiradova", + "Ctěnická", + "Cukerní", + "Cukrovarnická", + "Cukrovarská", + "Cuřínova", + "Cvikovská", + "Cvičebná", + "Cvrčkova", + "Cvrčkova", + "Cvrčkova", + "Cyprichova", + "Cíglerova", + "Cílkova", + "Cínovecká", + "Církova", + "Církvická", + "Církvičná", + "Císařská Louka", + "Císařský Ostrov", + "Císařský Ostrov", + "Císařský Ostrov", + "Cítovská", + "Daimlerova", + "Dalejská", + "Dalejská", + "Dalešická", + "Daliborova", + "Dalimilova", + "Dalovická", + "Dandova", + "Danielova", + "Dany Medřické", + "Darwinova", + "Dasnická", + "Davelská", + "Davidovičova", + "Davídkova", + "Davídkova", + "Dačická", + "Dačického", + "Daňkova", + "Dašická", + "Daškova", + "Dehtínská", + "Dejvická", + "Dejvická", + "Demlova", + "Demoliční", + "Desenská", + "Destinnové", + "Destinové", + "Devonská", + "Deylova", + "Deštná", + "Dešťová", + "Diabasová", + "Diamantová", + "Diblíkova", + "Diblíkova", + "Dienzenhoferovy Sady", + "Dieselova", + "Diskařská", + "Diskařská", + "Dismanova", + "Dittrichova", + "Divadelní", + "Divadelní", + "Divecká", + "Diviznová", + "Divišova", + "Divišovská", + "Divoká Šárka", + "Divoká Šárka", + "Dlabačov", + "Dlabačov", + "Dlouhá", + "Dlážděná", + "Do Blatin", + "Do Borovin", + "Do Chuchle", + "Do Dolnic", + "Do Dubin", + "Do Dubče", + "Do Hlinek", + "Do Klukovic", + "Do Kopečka", + "Do Koutů", + "Do Koutů", + "Do Lipan", + "Do Lipin", + "Do Lipin", + "Do Luk", + "Do Panenek", + "Do Podkovy", + "Do Polí", + "Do Potoků", + "Do Píšovic", + "Do Roklí", + "Do Rybníčků", + "Do Svépravic", + "Do Vozovny", + "Do Vrchu", + "Do Vršku", + "Do Zahrádek I", + "Do Zahrádek I", + "Do Zahrádek I", + "Do Zahrádek Ii", + "Do Zahrádek Ii", + "Do Zátiší", + "Do Údolí", + "Do Újezda", + "Do Čertous", + "Do Čtvrti", + "Do Říčan", + "Dobevská", + "Dobnerova", + "Dobratická", + "Dobronická", + "Dobronická", + "Dobropolská", + "Dobrovická", + "Dobrovolného", + "Dobrovolského", + "Dobrovského", + "Dobrovízská", + "Dobročovická", + "Dobrošovská", + "Dobrušská", + "Dobřanská", + "Dobřejovická", + "Dobřenická", + "Dobřichovská", + "Dobšická", + "Dobšínská", + "Dohalická", + "Doksanská", + "Dolanská", + "Dolejškova", + "Doležalova", + "Dolina", + "Dolnobranská", + "Dolnobřežanská", + "Dolnocholupická", + "Dolnojirčanská", + "Dolnokrčská", + "Dolnokřeslická", + "Dolnomlýnská", + "Dolnoměcholupská", + "Dolnoměcholupská", + "Dolnopočernická", + "Dolnočernošická", + "Dolní", + "Dolní", + "Dolní Chaloupky", + "Dolomitová", + "Dolská", + "Dolákova", + "Dolínecká", + "Dolňanská", + "Domanovická", + "Domašínská", + "Domažlická", + "Dominova", + "Dominínská", + "Domkovská", + "Domkářská", + "Domousnická", + "Donatellova", + "Donovalská", + "Donská", + "Donátova", + "Donínská", + "Dopplerova", + "Dopravní", + "Dopraváků", + "Dopraváků", + "Dostihová", + "Dostojevského", + "Doubecká", + "Doubická", + "Doubravická", + "Doubravská", + "Doubravínova", + "Doubravčická", + "Doudlebská", + "Doudova", + "Doupovská", + "Dr. Marodyho", + "Dr. Zikmunda Wintra", + "Dr.Zikmunda Wintra", + "Dragounská", + "Drahanská", + "Drahanská", + "Drahelická", + "Drahelčická", + "Drahobejlova", + "Drahorádova", + "Drahotická", + "Drahotínská", + "Drahovská", + "Drahovská", + "Drahoňovského", + "Draženovská", + "Draženovská", + "Dražetická", + "Dražická", + "Dražického", + "Dražického Nám.", + "Dražického Náměstí", + "Dražkovská", + "Dreyerova", + "Drimlova", + "Drnovská", + "Drobná", + "Drtikolova", + "Drtinova", + "Druhanická", + "Druhého Odboje", + "Družicová", + "Družnosti", + "Družná", + "Družstevní", + "Družstevní Ochoz", + "Družstevní Ochoz", + "Drážní", + "Drůbežnická", + "Drůbežářská", + "Dubanská", + "Dubenecká", + "Dubečská", + "Dubečské Horky", + "Dubinská", + "Dubnická", + "Dubnova", + "Dubovická", + "Dubová", + "Dubrovnická", + "Dubská", + "Duchcovská", + "Duchoslávka", + "Dudkova", + "Dudínská", + "Duhová", + "Dukelská", + "Dukelských Hrdinů", + "Dunajevského", + "Dunajská", + "Dunická", + "Dunovského", + "Durychova", + "Durychova", + "Dusíkova", + "Duškova", + "Duškova", + "Dušní", + "Dušní", + "Dvorecká", + "Dvorecké Nám.", + "Dvorecké Náměstí", + "Dvorní", + "Dvorská", + "Dvoudílná", + "Dvouletky", + "Dvouramenná", + "Dvořeckého", + "Dvořišťská", + "Dvořákova", + "Dvořákovo Nábř.", + "Dvořákovo Nábřeží", + "Dygrýnova", + "Dyjská", + "Dykova", + "Dářská", + "Dürerova", + "Dýšinská", + "Děbolínská", + "Dědická", + "Dědinova", + "Dědinská", + "Děkanská", + "Děkanská Vinice I", + "Děkanská Vinice Ii", + "Dělená", + "Dělnická", + "Dělostřelecká", + "Dětenická", + "Dětská", + "Dětský Ostrov", + "Děvínská", + "Děčínská", + "Děčínská", + "Dřevařská", + "Dřevnická", + "Dřevná", + "Dřevčická", + "Dřínovská", + "Dřínová", + "Dřítenská", + "Eberlova", + "Ebrova", + "Edisonova", + "Edvardova", + "Egyptská", + "Eichlerova", + "Einsteinova", + "Ejpovická", + "Ekonomická", + "Eledrova", + "Elektrárenská", + "Eliášova", + "Eliášova", + "Elišky Junkové", + "Elišky Krásnohorské", + "Elišky Krásnohorské", + "Elišky Peškové", + "Elišky Přemyslovny", + "Ellnerové", + "Elsnicovo Náměstí", + "Emilie Hyblerové", + "Emlerova", + "Engelmüllerova", + "Engelova", + "Engelova", + "Englerova", + "Erbenova", + "Erbenova", + "Estonská", + "Etiopská", + "Euklidova", + "Evropská", + "Evropská", + "Evropská", + "Evropská", + "Evropská", + "Evy Olmerové", + "Exnárova", + "F.V.Veselého", + "Fabiánova", + "Fabiánská", + "Fadějevova", + "Fajmanové", + "Fajtlova", + "Falcká", + "Faltysova", + "Famfulíkova", + "Fantova", + "Faradayova", + "Farkašova", + "Farní", + "Farská", + "Farského", + "Fastrova", + "Federova", + "Fejfarova", + "Felberova", + "Fenyklová", + "Fetrovská", + "Feřtekova", + "Fialková", + "Fibichova", + "Fikerova", + "Filipova", + "Filipovského", + "Filipíny Welserové", + "Fillova", + "Filmařská", + "Filosofská", + "Fingerova", + "Finkovská", + "Finská", + "Firkušného", + "Fischlova", + "Fišerova", + "Flemingovo Nám.", + "Flemingovo Náměstí", + "Flájská", + "Flöglova", + "Foerstrova", + "Folmavská", + "Formanská", + "Formánkova", + "Fořtova", + "Fragnerova", + "Francouzská", + "Francouzská", + "Francouzská", + "Františka Diviše", + "Františka Jansy", + "Františka Kadlece", + "Františka Křížka", + "Františka Černého", + "Františka Červeného", + "Františka Šimáčka", + "Františkova", + "Franty Kocourka", + "Frančíkova", + "Freiwaldova", + "Freyova", + "Frimlova", + "Fričova", + "Froncova", + "Frostova", + "Froňkova", + "Frydrychova", + "Fryčovická", + "Fráni Šrámka", + "Frézařská", + "Frýdecká", + "Frýdlantská", + "Fuchsova", + "Fügnerovo Nám.", + "Fügnerovo Náměstí", + "Gabinova", + "Gabčíkova", + "Gagarinova", + "Galandova", + "Galileova", + "Gallašova", + "Galvaniho", + "Gaussova", + "Gdaňská", + "Generála Janouška", + "Generála Mejstříka", + "Generála Píky", + "Generála Šišky", + "Generála Šišky", + "Gensovská", + "Geologická", + "Gercenova", + "Gerstnerova", + "Ginzova", + "Glazunovova", + "Glinkova", + "Glowackého", + "Goetheho", + "Gogolova", + "Golfová", + "Gollova", + "Golčova", + "Gončarenkova", + "Gončarenkova", + "Gorazdova", + "Gotthardská", + "Goyova", + "Gočárova", + "Grafická", + "Grafitová", + "Grammova", + "Granátová", + "Gregorova", + "Grussova", + "Gruzínská", + "Gutfreundova", + "Gutova", + "Gymnasijní", + "Gymnastická", + "Habartická", + "Habartická", + "Habartovská", + "Haberfeldova", + "Habrovská", + "Habrová", + "Habřická", + "Habřická", + "Hackerova", + "Hadovitá", + "Hadravská", + "Hajní", + "Hakenova", + "Halasova", + "Halenkovská", + "Halštatská", + "Hamerská", + "Hamplova", + "Hamrová", + "Hamsíkova", + "Hankova", + "Hanouškova", + "Hanusova", + "Hanušova", + "Hanzelkova", + "Hanzlíkova", + "Harantova", + "Harcovská", + "Harlacherova", + "Harmonická", + "Harrachovská", + "Hartenberská", + "Hasičská", + "Hasičů", + "Hasova", + "Hastrmanská", + "Haunerova", + "Hauptova", + "Hausmannova", + "Havanská", + "Havelská", + "Havelská Ulička", + "Havlovického", + "Havlovického", + "Havlovská", + "Havlínova", + "Havlíčkova", + "Havlíčkovo Nám.", + "Havlíčkovo Náměstí", + "Havlíčkovy Sady", + "Havlůjové", + "Havlůjové", + "Havranická", + "Havraní", + "Havránkova", + "Havířovská", + "Havířská", + "Haškova", + "Hašlerova", + "Haštalská", + "Haštalské Nám.", + "Haštalské Náměstí", + "Heckelova", + "Heineho", + "Heinemannova", + "Hejnická", + "Hejnická", + "Hejplíkova", + "Hejtmanská", + "Hejtmánkova", + "Hekova", + "Hekrova", + "Heldova", + "Heleny Malířové", + "Hellichova", + "Helmova", + "Helsinská", + "Helénská", + "Hennerova", + "Heranova", + "Herbenova", + "Herdovská", + "Herlíkovická", + "Hermanická", + "Hermelínská", + "Hermíny Týrlové", + "Heroldovy Sady", + "Herrmannova", + "Herrova", + "Hertzova", + "Herálecká I", + "Herálecká Ii", + "Herálecká Iii", + "Herálecká Iv", + "Herčíkova", + "Hevlínská", + "Heydukova", + "Heyrovského Nám.", + "Heyrovského Nám.", + "Heyrovského Náměstí", + "Heyrovského Náměstí", + "Hečkova", + "Heřmanova", + "Heřmánková", + "Hildy Čihákové", + "Hillebrantova", + "Hilmarova", + "Hiršlova", + "Hlavatého", + "Hlavenecká", + "Hlavní", + "Hlavova", + "Hlaváčkova", + "Hlaváčova", + "Hlaďova", + "Hledíková", + "Hlinská", + "Hlivická", + "Hlohová", + "Hloubětínská", + "Hloubětínská", + "Hlubocká", + "Hluboká", + "Hlubočepská", + "Hlušičkova", + "Hládkov", + "Hládkov", + "Hlávkova", + "Hněvkovská", + "Hněvkovského", + "Hnězdenská", + "Hoblířská", + "Hodkovická", + "Hodkovská", + "Hodonínská", + "Hodčina", + "Hodějovská", + "Hodějovská", + "Hoděšovická", + "Hofbauerova", + "Hoffmannova", + "Hokejová", + "Hokešovo Nám.", + "Hokešovo Náměstí", + "Holandská", + "Holekova", + "Holenická", + "Holenská", + "Holečkova", + "Holečkova", + "Holešovické Nábřeží", + "Holešovický Přístav", + "Holická", + "Hollarovo Nám.", + "Hollarovo Náměstí", + "Holohlavská", + "Holotínská", + "Holoubkova", + "Holoubkovská", + "Holubická", + "Holubinková", + "Holubkova", + "Holubova", + "Holubí", + "Holušická", + "Holyňská", + "Holátova", + "Holínská", + "Holýšovská", + "Holčovická", + "Holšická", + "Homolová", + "Homérova", + "Honzíkova", + "Hornická", + "Hornocholupická", + "Hornocholupická", + "Hornofova", + "Hornokrčská", + "Hornokřeslická", + "Hornomlýnská", + "Hornoměcholupská", + "Hornoměcholupská", + "Hornopočernická", + "Horní", + "Horní Chaloupky", + "Horní Hrdlořezská", + "Horní Stromky", + "Horníčkova", + "Horolezecká", + "Horoměřická", + "Horoměřická", + "Horoušanská", + "Horoušanská", + "Horovo Nám.", + "Horovo Náměstí", + "Horská", + "Horusická", + "Horymírovo Nám.", + "Horymírovo Náměstí", + "Horákova", + "Horáčkova", + "Horčičkova", + "Horňátecká", + "Horšovská", + "Horšovská", + "Hospodářská", + "Hostavická", + "Hostavická", + "Hostinského", + "Hostivařská", + "Hostivařské Nám.", + "Hostivařské Náměstí", + "Hostivická", + "Hostivítova", + "Hostišovská", + "Hostouňská", + "Hostošova", + "Hostýnská", + "Hostýnská", + "Houbařská", + "Houdova", + "Hovorčovická", + "Hořanská", + "Hořejší Náb.", + "Hořejší Nábřeží", + "Hořejšího", + "Hořelická", + "Hořická", + "Hořovského", + "Hořínecká", + "Hoškova", + "Hoštická", + "Hošťálkova", + "Hrabačovská", + "Hrabákova", + "Hrachovská", + "Hrad I. Nádvoří", + "Hrad Ii. Nádvoří", + "Hrad Iii. Nádvoří", + "Hradební", + "Hradecká", + "Hradeckých", + "Hradečkova", + "Hradešínská", + "Hradčanské Nám.", + "Hradčanské Náměstí", + "Hraniční", + "Hrazanská", + "Hrazanská", + "Hrdinova", + "Hrdličkova", + "Hrdlořezská", + "Hrdoňovická", + "Hroncova", + "Hronovská", + "Hronětická", + "Hrozenkovská", + "Hroznová", + "Hrozného", + "Hrubého", + "Hrubínova", + "Hrudičkova", + "Hrusická", + "Hruškovská", + "Hruškovská", + "Hrušovanské Nám.", + "Hrušovanské Náměstí", + "Hrušovická", + "Hrušovská", + "Hrušínského", + "Hrušňová", + "Hrušňová", + "Hrádková", + "Hráského", + "Huberova", + "Hubičkova", + "Hubáčkova", + "Hudcova", + "Hudební", + "Hudečkova", + "Hudečkova", + "Hugo Haase", + "Hulanova", + "Hulická", + "Humenecká", + "Humpolecká", + "Huntířovská", + "Hurbanova", + "Husařská", + "Husinecká", + "Husitská", + "Husitská", + "Husníkova", + "Husova", + "Husovo Nám.", + "Husovo Náměstí", + "Hustopečská", + "Hutnická", + "Huťská", + "Hviezdoslavova", + "Hviezdoslavova", + "Hvozdecká", + "Hvozdnická", + "Hvozdíková", + "Hvožďanská", + "Hvězdonická", + "Hvězdova", + "Hvězdářská", + "Hyacintová", + "Hybernská", + "Hybešova", + "Hynaisova", + "Hypšmanova", + "Hábova", + "Hájecká", + "Hájenská", + "Hájkova", + "Hájovna U Podjezdu", + "Hájovna V Šárce", + "Hájová", + "Hájíčkova", + "Hájčí", + "Hákova", + "Hálkova", + "Hálova", + "Hálův Statek", + "Högerova", + "Hübnerové", + "Hřbitovní", + "Hřebenová", + "Hřebíkova", + "Hřenská", + "Hřibojedská", + "Hřibská", + "Hříbková", + "Hřídelecká", + "Hůlkova", + "Hůlkova", + "Hůrská", + "Ibsenova", + "Imrychova", + "Ingrišova", + "Internacionální", + "Irkutská", + "Irská", + "Irvingova", + "Italská", + "Italská", + "Italská", + "Ivančická", + "Izraelská", + "Izraelská", + "Jabkenická", + "Jablonecká", + "Jablonecká", + "Jablonského", + "Jabloňová", + "Jablunkovská", + "Jagellonská", + "Jagellonská", + "Jahodnická", + "Jahodová", + "Jakobiho", + "Jakubovská", + "Jakubská", + "Jakutská", + "Jalodvorská", + "Jalovcová", + "Jaltská", + "Jamborova", + "Jamská", + "Jana Bílka", + "Jana Jindřicha", + "Jana Karafiáta", + "Jana Kašpara", + "Jana Marka", + "Jana Masaryka", + "Jana Ouřady", + "Jana Přibíka", + "Jana Růžičky", + "Jana Srba", + "Jana Zajíce", + "Jana Čerstvého", + "Jana Želivského", + "Janderova", + "Jandova", + "Janečkova", + "Jankovcova", + "Jankovská", + "Janouchova", + "Janouškova", + "Janovická", + "Janovská", + "Janovského", + "Jansenova", + "Janského", + "Jansova", + "Jantarová", + "Janákova", + "Janáčkovo Nábř.", + "Janáčkovo Nábř.", + "Janáčkovo Nábřeží", + "Janáčkovo Nábřeží", + "Janýrova", + "Jančova", + "Jarešova", + "Jarkovská", + "Jarmily Novotné", + "Jarní", + "Jarníkova", + "Jaromíra Jindry", + "Jaromíra Vejvody", + "Jaromírova", + "Jaroměřská", + "Jaroslava Foglara", + "Jaroslava Švehly", + "Jaroslavická", + "Jasanová", + "Jaselská", + "Jaselská", + "Jasenická", + "Jasenná", + "Jasmínová", + "Jasná I", + "Jasná Ii", + "Jaspisová", + "Jateční", + "Jaurisova", + "Jaurisova", + "Javorenská", + "Javornická", + "Javorová", + "Javorská", + "Javořická", + "Jašíkova", + "Jažlovická", + "Jedlová", + "Jednostranná", + "Jednostranná", + "Jednotného Zemědělského Družstva", + "Jednořadá", + "Jelenovská", + "Jelení", + "Jelínkova", + "Jemenská", + "Jemnická", + "Jenerálka", + "Jenečská", + "Jenišovská", + "Jenská", + "Jeníkovická", + "Jenštejnská", + "Jeremenkova", + "Jeremenkova", + "Jeremenkova", + "Jeremiášova", + "Jeremiášova", + "Jerevanská", + "Jeronýmova", + "Jeruzalémská", + "Jesenická", + "Jeseniova", + "Jestřebická", + "Jetelová", + "Jetřichovická", + "Jevanská", + "Jezdecká", + "Jezdovická", + "Jezerní", + "Jezerská", + "Jezevčí", + "Ječná", + "Jeřabinová", + "Jeřabinová", + "Jeřická", + "Jeřábkova", + "Jeřábnická", + "Jeřábová", + "Ješetická", + "Ještědská", + "Ježdíkova", + "Ježkova", + "Ježovická", + "Ježovická", + "Ježovská", + "Jihlavská", + "Jihovýchodní I", + "Jihovýchodní Ii", + "Jihovýchodní Iii", + "Jihovýchodní Iv", + "Jihovýchodní Ix", + "Jihovýchodní V", + "Jihovýchodní Vi", + "Jihovýchodní Vii", + "Jihovýchodní Viii", + "Jihozápadní I", + "Jihozápadní Ii", + "Jihozápadní Iii", + "Jihozápadní Iv", + "Jihozápadní V", + "Jihozápadní Vi", + "Jihočeská", + "Jilemnická", + "Jilemnická", + "Jilemnického", + "Jilmová", + "Jilská", + "Jindrova", + "Jindřicha Jindřicha", + "Jindřicha Plachty", + "Jindřichova", + "Jindřišská", + "Jinolická", + "Jinonická", + "Jinonická", + "Jinočanská", + "Jirenská", + "Jirečkova", + "Jirkovská", + "Jirsákova", + "Jirsíkova", + "Jiránkova", + "Jiráskovo Nám.", + "Jiráskovo Náměstí", + "Jirčanská", + "Jiskrova", + "Jistebnická", + "Jitkovská", + "Jitravská", + "Jitravská", + "Jitrocelová", + "Jitřní", + "Jivenská", + "Jizerská", + "Jičínská", + "Jičínská", + "Jiřická", + "Jiřinková", + "Jiřiny Štěpničkové", + "Jiřská", + "Jiřího Jandy", + "Jiřího Mašína", + "Jiřího Ze Vtelna", + "Jiříčkova", + "Jiříčkové", + "Jižní I", + "Jižní Ii", + "Jižní Iii", + "Jižní Iv", + "Jižní Ix", + "Jižní Nám.", + "Jižní Náměstí", + "Jižní Spojka", + "Jižní Spojka", + "Jižní Spojka", + "Jižní Spojka", + "Jižní V", + "Jižní Vi", + "Jižní Vii", + "Jižní Viii", + "Jižní Xi", + "Jižní Xii", + "Jižní Xiii", + "Jižní Xiv", + "Jižní Xv", + "Jižní Xvi", + "Jižní Xvii", + "Johanitská", + "Jordana Jovkova", + "Jordánská", + "Josefa Bíbrdlíka", + "Josefa Houdka", + "Josefa Houdka", + "Josefa Kočího", + "Josefa Němce", + "Josefa Vašíčka", + "Josefa Šimůnka", + "Josefská", + "José Martího", + "Juarézova", + "Jugoslávská", + "Jugoslávských Partyzánů", + "Jugoslávských Partyzánů", + "Jungmannova", + "Jungmannova", + "Jungmannovo Náměstí", + "Junácká", + "Jupiterova", + "Jurkovičova", + "Juárezova", + "Jzd", + "Jáchymova", + "Jáchymova", + "Jáchymovská", + "Jánošíkova", + "Jánská", + "Jánský Vršek", + "Jíchova", + "Jílkova", + "Jílovická", + "Jílovišťská", + "Jílovská", + "Jílovská", + "Jílová", + "Jírova", + "Jírovcovo Nám.", + "Jírovcovo Náměstí", + "Jívanská", + "Jívová", + "K Austisu", + "K Avii", + "K Barrandovu", + "K Bateriím", + "K Bažantnici", + "K Belvederu", + "K Berance", + "K Beranovu", + "K Berounce", + "K Beránku", + "K Betonárně", + "K Betáni", + "K Blatovu", + "K Bohnicím", + "K Borovíčku", + "K Botiči", + "K Brance", + "K Brnkám", + "K Brusce", + "K Brusce", + "K Brůdku", + "K Bílému Vrchu", + "K Běchovicům", + "K Březince", + "K Březiněvsi", + "K Břečkám", + "K Celinám", + "K Cementárně", + "K Chabům", + "K Chabům", + "K Chaloupce", + "K Chaloupkám", + "K Chatám", + "K Chmelnici", + "K Chumberku", + "K Cihelně", + "K Cikánce", + "K Cíli", + "K Dalejím", + "K Dobré Vodě", + "K Dobré Vodě", + "K Dolům", + "K Drahani", + "K Drahani", + "K Drazdům", + "K Drsnici", + "K Dubinám", + "K Dubovému Mlýnu", + "K Dubu", + "K Dubči", + "K Dálnici", + "K Dálnici", + "K Dýmači", + "K Děrám", + "K Fantovu Mlýnu", + "K Farkám", + "K Fialce", + "K Fišpance", + "K Habrovce", + "K Habru", + "K Haltýři", + "K Havlínu", + "K Hluboké Cestě", + "K Hlásku", + "K Holyni", + "K Holému Vrchu", + "K Holému Vrchu", + "K Homolce", + "K Horkám", + "K Horkám", + "K Horkám", + "K Horním Počernicím", + "K Horoměřicům", + "K Hořavce", + "K Hradišti", + "K Hrnčířům", + "K Hrušovu", + "K Hrušovu", + "K Hrázi", + "K Hutím", + "K Hutím", + "K Hutím", + "K Hádku", + "K Háječku", + "K Háji", + "K Háji", + "K Hájku", + "K Hájovně", + "K Hájovně", + "K Hájovně", + "K Hájům", + "K Hárunce", + "K Interně", + "K Jalovce", + "K Jasánkám", + "K Jelenu", + "K Jelenám", + "K Jezeru", + "K Jezeru", + "K Jezu", + "K Jezírku", + "K Jihu", + "K Jihu", + "K Jinočanům", + "K Jinočanům", + "K Jižnímu Městu", + "K Juliáně", + "K Jízdárně", + "K Labeškám", + "K Ladům", + "K Lahovičkám", + "K Lahovské", + "K Lažance", + "K Lesoparku", + "K Lesu", + "K Lesu", + "K Lesíku", + "K Letišti", + "K Letňanům", + "K Libuši", + "K Lindě", + "K Lipanům", + "K Lipinám", + "K Lipám", + "K Lochkovu", + "K Lomu", + "K Louži", + "K Luhu", + "K Lukám", + "K Lučinám", + "K Lužinám", + "K Ládví", + "K Ládví", + "K Lánu", + "K Lávce", + "K Lázním", + "K Lípě", + "K Markétě", + "K Matěji", + "K Mejtu", + "K Metru", + "K Metru", + "K Milíčovu", + "K Mlíčníku", + "K Mlýnu", + "K Modřanskému Nádraží", + "K Mohyle", + "K Moravině", + "K Moravině", + "K Mostku", + "K Mostu", + "K Motelu", + "K Motolu", + "K Mírám", + "K Měcholupům", + "K Měchurce", + "K Nedvězí", + "K Netlukám", + "K Noskovně", + "K Nouzovu", + "K Nové Vsi", + "K Nové Vsi", + "K Nové Škole", + "K Novému Dvoru", + "K Novému Hradu", + "K Novému Sídlišti", + "K Novým Domkům", + "K Nádraží", + "K Nádrži", + "K Náhonu", + "K Náměstí", + "K Náplavce", + "K Náplavce", + "K Návrší", + "K Návrší", + "K Návsi", + "K Obci", + "K Obecním Hájovnám", + "K Oboře", + "K Obsinám", + "K Ochozu", + "K Ohradě", + "K Okrouhlíku", + "K Olympiku", + "K Opatřilce", + "K Opatřilce", + "K Oplocení", + "K Orionce", + "K Osmidomkům", + "K Otočce", + "K Ovčínu", + "K Ovčínu", + "K Padesátníku", + "K Palečku", + "K Panenkám", + "K Parku", + "K Pastvinám", + "K Pazderkám", + "K Pekárně", + "K Peluňku", + "K Petrově Komoře", + "K Pitkovicům", + "K Podchodu", + "K Podjezdu", + "K Podjezdu", + "K Polím", + "K Pomníku", + "K Popelce", + "K Popelce", + "K Potoku", + "K Poště", + "K Pramenu", + "K Prelátům", + "K Prádelně", + "K Průhonicům", + "K Průhonu", + "K Průmstavu", + "K Pyramidce", + "K Pérovně", + "K Pískovně", + "K Písnici", + "K Přehradám", + "K Přejezdu", + "K Přístavišti", + "K Přívozu", + "K Radhošti", + "K Radonicům", + "K Radotínu", + "K Radotínu", + "K Remízku", + "K Rokli", + "K Rokytce", + "K Rotundě", + "K Rovinám", + "K Rozkoši", + "K Rozmezí", + "K Roztokům", + "K Rozvodně", + "K Rukavičkárně", + "K Rybníku", + "K Rybníčku", + "K Rybníčkům", + "K Rybárně", + "K Ryšánce", + "K Ryšánce", + "K Sadu", + "K Safině", + "K Samoobsluze", + "K Samotě", + "K Sedlišti", + "K Sibřině", + "K Sokolovně", + "K Sopce", + "K Sopce", + "K Starému Bubenči", + "K Starému Lomu", + "K Stavebninám", + "K Sukovu", + "K Sádkám", + "K Sádkám", + "K Sídlišti", + "K Sídlišti", + "K Teplárně", + "K Topolům", + "K Topírně", + "K Transformátoru", + "K Trati", + "K Trninám", + "K Trnkám", + "K Trníčku", + "K Truhlářce", + "K Tržišti", + "K Tuchoměřicům", + "K Táboru", + "K Třebonicům", + "K Třešňovce", + "K Tůni", + "K Ubytovnám", + "K Uhříněvsi", + "K Uhříněvsi", + "K Učilišti", + "K Valu", + "K Vejvoďáku", + "K Velké Ohradě", + "K Velké Ohradě", + "K Velkému Dvoru", + "K Verneráku", + "K Viaduktu", + "K Vidouli", + "K Vilkám", + "K Vinici", + "K Vinicím", + "K Vinoři", + "K Vizerce", + "K Višňovce", + "K Višňovce", + "K Višňovému Sadu", + "K Vltavě", + "K Vlásence", + "K Vodici", + "K Vodojemu", + "K Vodárně", + "K Vodě", + "K Vrbičkám", + "K Vrbě", + "K Vrcholu", + "K Vrtilce", + "K Vršíčku", + "K Vyhlídce", + "K Vysoké Cestě", + "K Vystrkovu", + "K Václavce", + "K Vápence", + "K Váze", + "K Výboru", + "K Výtopně", + "K Výzkumným Ústavům", + "K Větrolamu", + "K Zabrkům", + "K Zadní Kopanině", + "K Zadní Kopanině", + "K Zahradnictví", + "K Zahradám", + "K Zahrádkám", + "K Zastávce", + "K Zatáčce", + "K Zelené Louce", + "K Zeleným Domkům", + "K Zelenči", + "K Zámku", + "K Zátiší", + "K Závodišti", + "K Závorám", + "K Závěrce", + "K Závětinám", + "K Údolí", + "K Údolí Hvězd", + "K Újezdu", + "K Ústavu", + "K Úvozu", + "K Černošicím", + "K Červenému Dvoru", + "K Červenému Dvoru", + "K Červenému Dvoru", + "K Červenému Vrchu", + "K Čestlicům", + "K Čihadlům", + "K Ďáblicům", + "K Řece", + "K Řeporyjím", + "K Řeporyjím", + "K Říčanům", + "K Šafránce", + "K Šafránce", + "K Šancím", + "K Šeberovu", + "K Šeberáku", + "K Šedivce", + "K Šubrtce", + "K Železnici", + "K Žižkovu", + "Kabeláčova", + "Kabešova", + "Kabátové", + "Kadaňská", + "Kadeřávkovská", + "Kafkova", + "Kahovská", + "Kaizlovy Sady", + "Kakosova", + "Kakostová", + "Kalabisova", + "Kalašova", + "Kalinová", + "Kališnická", + "Kališťská", + "Kalská", + "Kalvodova", + "Kamelova", + "Kamencová", + "Kamenická", + "Kamenická", + "Kamenitá", + "Kamenná", + "Kameníků", + "Kamerunská", + "Kampanova", + "Kamzíková", + "Kamýcká", + "Kamýcká", + "Kamýcká", + "Kanadská", + "Kandertova", + "Kanovnická", + "Kapitulská", + "Kaplanova", + "Kaplická", + "Kapraďová", + "Kaprova", + "Kaprova", + "Kapucínská", + "Karafiátová", + "Karasova", + "Karasovská", + "Kardausova", + "Kardašovská", + "Kardašovská", + "Karenova", + "Karfíkova", + "Karla Engliše", + "Karla Hlaváčka", + "Karla Kryla", + "Karla Křížka", + "Karla Michala", + "Karla Rachůnka", + "Karla Tomáše", + "Karla Zicha", + "Karla Černého", + "Karlická", + "Karlova", + "Karlovarská", + "Karlovarská", + "Karlovická", + "Karlovo Nám.", + "Karlovo Nám.", + "Karlovo Náměstí", + "Karlovo Náměstí", + "Karlínské Nám.", + "Karlínské Náměstí", + "Karlštejnská", + "Karmelitská", + "Karolinská", + "Karoliny Světlé", + "Karpatská", + "Kartounářů", + "Kartouzská", + "Kasalická", + "Kateřinská", + "Kateřinské Nám.", + "Kateřinské Náměstí", + "Katovická", + "Katusická", + "Kavkazská", + "Kazaňská", + "Kazašská", + "Kazimírova", + "Kaznějovská", + "Kazín", + "Kazínská", + "Kačerovská", + "Kačínská", + "Kaňkova", + "Kaňkovského", + "Kaňovská", + "Kašeho", + "Kaškova", + "Kašovická", + "Kašparovo Nám.", + "Kašparovo Náměstí", + "Kašperská", + "Kaštanová", + "Kbelská", + "Kbelská", + "Kbelská", + "Kbelská", + "Kdoulová", + "Ke Březině", + "Ke Břvům", + "Ke Cvičišti", + "Ke Dračkám", + "Ke Dráze", + "Ke Dvoru", + "Ke Džbánu", + "Ke Garážím", + "Ke Golfu", + "Ke Goniu", + "Ke Hlásce", + "Ke Hrádku", + "Ke Hrázi", + "Ke Hrázi", + "Ke Hřbitovu", + "Ke Hřišti", + "Ke Kablu", + "Ke Kablu", + "Ke Kalvárii", + "Ke Kaménce", + "Ke Kamínce", + "Ke Kamýku", + "Ke Kapličce", + "Ke Kapslovně", + "Ke Karlovu", + "Ke Kateřinkám", + "Ke Kazínu", + "Ke Kašně", + "Ke Kinu", + "Ke Kladivům", + "Ke Klimentce", + "Ke Klubovně", + "Ke Klínku", + "Ke Klínku", + "Ke Klíčovu", + "Ke Koh-I-Nooru", + "Ke Kolodějskému Zámku", + "Ke Kolodějům", + "Ke Kolonii", + "Ke Konstruktivě", + "Ke Kopečku", + "Ke Korunce", + "Ke Kostelu", + "Ke Kostelíčku", + "Ke Kotlářce", + "Ke Koulce", + "Ke Koupališti", + "Ke Kovárně", + "Ke Kozím Hřbetům", + "Ke Královicům", + "Ke Krči", + "Ke Krčské Stráni", + "Ke Kulišce", + "Ke Kulturnímu Domu", + "Ke Kurtům", + "Ke Kyjovu", + "Ke Kálku", + "Ke Křížku", + "Ke Křížkám", + "Ke Lhoteckému Lesu", + "Ke Mlýnku", + "Ke Mlýnu", + "Ke Mlýnu", + "Ke Schodům", + "Ke Skalce", + "Ke Skalkám", + "Ke Skladům", + "Ke Sklárně", + "Ke Skále", + "Ke Slatinám", + "Ke Slivenci", + "Ke Smrčině", + "Ke Smíchovu", + "Ke Smíchovu", + "Ke Splávku", + "Ke Spofě", + "Ke Spořilovu", + "Ke Spálence", + "Ke Srážku", + "Ke Stadionu", + "Ke Stanici", + "Ke Starému Hřišti", + "Ke Starým Rybníkům", + "Ke Stinkovskému Rybníku", + "Ke Strašnické", + "Ke Strouze", + "Ke Stráni", + "Ke Strži", + "Ke Studni", + "Ke Studni", + "Ke Studánce", + "Ke Stupicím", + "Ke Stáčírně", + "Ke Stírce", + "Ke Střelnici", + "Ke Střelnici", + "Ke Sv. Izidoru", + "Ke Třem Mostům", + "Ke Xaverovu", + "Ke Zbraslavi", + "Ke Zbrojnici", + "Ke Zbuzanům", + "Ke Zdibům", + "Ke Zdravotnímu Středisku", + "Ke Zděři", + "Ke Zlatému Kopci", + "Ke Zličínu", + "Ke Znaku", + "Ke Zvonici", + "Ke Zvoničce", + "Ke Školce", + "Ke Škole", + "Ke Šmejkalu", + "Ke Štvanici", + "Ke Štítu", + "Ke Štěpcům", + "Ke Štěrkovně", + "Ke Švestkovce", + "Kecova", + "Kejhova", + "Kejnická", + "Kellnerova", + "Keltská", + "Keltů", + "Kelvinova", + "Kemrova", + "Keplerova", + "Keplerova", + "Keramická", + "Kesnerka", + "Kestřanská", + "Keteňská", + "Kettnerova", + "Keřová", + "Khodlova", + "Kischova", + "Kišiněvská", + "Kladenská", + "Kladenská", + "Kladenská", + "Kladinovská", + "Kladrubská", + "Kladská", + "Klamovka", + "Klapkova", + "Klapálkova", + "Klatovská", + "Klausova", + "Klecandova", + "Klecanská", + "Klenečská", + "Klenovická", + "Klenovská", + "Klenová", + "Klečkova", + "Klečákova", + "Klešická", + "Klicperova", + "Klidná", + "Klihařská", + "Klikatá", + "Klikatá", + "Klimentská", + "Klivarova", + "Kloboukova", + "Kloboučnická", + "Kloknerova", + "Klokotská", + "Klostermannova", + "Klouzková", + "Kludských", + "Klukovická", + "Klánova", + "Klánova", + "Klánova", + "Klánovická", + "Klánovická", + "Klárov", + "Klášterecká", + "Klášterská", + "Klášterského", + "Klímova", + "Klímova", + "Klínecká", + "Klínovecká", + "Klínová", + "Klírova", + "Klíčanská", + "Klíčova", + "Klíčovská", + "Klíčovská", + "Kmochova", + "Knínická", + "Kněževeská", + "Kněžická", + "Koberkova", + "Kobrova", + "Kobyliská", + "Kobyliské Nám.", + "Kobyliské Náměstí", + "Kobylákova", + "Kochanova", + "Kocianova", + "Koclířova", + "Kocourova", + "Kodaňská", + "Kodicilova", + "Kodymova", + "Kohoutovská", + "Kohoutových", + "Kojetická", + "Kojická", + "Kokořínská", + "Kolbenova", + "Kolbenova", + "Kolbenova", + "Koldínova", + "Kolejní", + "Kolektivní", + "Kolešovská", + "Kollárova", + "Kolmistrova", + "Kolmá", + "Kolocova", + "Kolodějská", + "Kolonie U Obecní Cihelny", + "Kolonka", + "Kolovečská", + "Kolovratská", + "Kolová", + "Kolátorova", + "Koláčkova", + "Koláře Kaliny", + "Kolářova", + "Kolínova", + "Kolínská", + "Kolčavka", + "Komenského Nám.", + "Komenského Náměstí", + "Komornická", + "Komořanská", + "Komořanská", + "Komořanská", + "Komunardů", + "Komárkova", + "Komárovská", + "Koncová", + "Konecchlumského", + "Konečná", + "Kongresová", + "Konojedská", + "Konopišťská", + "Konopova", + "Konopáskova", + "Konstantinova", + "Konvalinková", + "Konviktská", + "Konzumní", + "Konzumní", + "Koníčkovo Nám.", + "Koníčkovo Náměstí", + "Konětopská", + "Koněvova", + "Konšelská", + "Konžská", + "Kopalova", + "Kopanina", + "Kopanská", + "Kopeckého", + "Koperníkova", + "Kopečná", + "Kopretinová", + "Kopřivnická", + "Korandova", + "Korandova", + "Korunní", + "Korunní", + "Korunní", + "Korunovační", + "Korunovační", + "Korybutova", + "Korycanská", + "Korytná", + "Kosatcová", + "Kosařova", + "Kosmická", + "Kosmonoská", + "Kosova", + "Kosořická", + "Kosořská", + "Kostelecká", + "Kostelecká", + "Kostelní", + "Kostelní Náměstí", + "Kostečná", + "Kostková", + "Kostlivého", + "Kostnické Nám.", + "Kostnické Náměstí", + "Kostomlatská", + "Kostrbova", + "Kostřínská", + "Kosárkovo Nábř.", + "Kosárkovo Nábřeží", + "Kosí", + "Koterovská", + "Koterovská", + "Kotevní", + "Kotlaska", + "Kotlářka", + "Kotorská", + "Kotovka", + "Kotrčová", + "Kotršálova", + "Kotíkova", + "Kotěrova", + "Koubkova", + "Koubkova", + "Koubova", + "Koukolová", + "Koulka", + "Koulova", + "Kounická", + "Kounovská", + "Koutská", + "Kouřimská", + "Kovanecká", + "Kovařovicova", + "Kovriginova", + "Kováků", + "Kovárenská", + "Kovářova", + "Kovářská", + "Kováříkova", + "Kozinova", + "Kozinovo Náměstí", + "Kozlova", + "Kozlovská", + "Kozmíkova", + "Kozomínská", + "Kozácká", + "Kozákovská", + "Kozáková", + "Kozí", + "Kočova", + "Kořenského", + "Košařova", + "Košická", + "Koštířova", + "Košátecká", + "Košíkářská", + "Košířské Nám.", + "Košířské Náměstí", + "Košťálkova", + "Koťátkova", + "Koželužská", + "Kožlanská", + "Kožná", + "Kožíškova", + "Kpt. Nálepky", + "Kpt. Stránského", + "Krabošická", + "Krahulčí", + "Krajanská", + "Krajní", + "Krajová", + "Krajánkova", + "Krakovská", + "Kralická", + "Kralupská", + "Krameriova", + "Kramlova", + "Kramolná", + "Kramolínská", + "Kramperova", + "Kraslická", + "Krasnická", + "Krasnojarská", + "Kratochvílova", + "Krausova", + "Krbická", + "Krchlebská", + "Krejnická", + "Krejčího", + "Kremličkova", + "Kremnická", + "Kremnická", + "Krhanická", + "Krhanická", + "Kristiánova", + "Kriváňská", + "Krkonošská", + "Krnovská", + "Krnská", + "Krocínova", + "Krocínovská", + "Kroftova", + "Krohova", + "Krokova", + "Krolmusova", + "Kropáčkova", + "Krosenská", + "Kroupova", + "Kroupova", + "Krouzova", + "Krovova", + "Krteňská", + "Kruhová", + "Krumlovská", + "Krupkovo Nám.", + "Krupkovo Náměstí", + "Krupná", + "Krupská", + "Krušovická", + "Kružberská", + "Krylovecká", + "Krylovecká", + "Krymská", + "Krynická", + "Krystalová", + "Kryšpínova", + "Kryštofova", + "Krále Václava Iv.", + "Králodvorská", + "Králova", + "Královická", + "Královny Žofie", + "Královská Obora", + "Královská Obora", + "Krásnolipská", + "Krásného", + "Krásova", + "Krátká", + "Krátká", + "Krátkého", + "Krátký Lán", + "Krčmářovská", + "Krčská", + "Krčínovo Nám.", + "Krčínovo Náměstí", + "Krčínská", + "Krňovická", + "Krškova", + "Kubatova", + "Kubaštova", + "Kubelíkova", + "Kubišova", + "Kubištova", + "Kubova", + "Kubánské Nám.", + "Kubánské Náměstí", + "Kubíkova", + "Kubínova", + "Kuchařská", + "Kudeříkové", + "Kudrnova", + "Kukelská", + "Kukelská", + "Kukulova", + "Kukulova", + "Kukučínova", + "Kulhavého", + "Kulhánkovská", + "Kuncova", + "Kundratka", + "Kunešova", + "Kunická", + "Kunratická", + "Kunratická Spojka", + "Kunratická Spojka", + "Kuní", + "Kuní", + "Kunínova", + "Kunčická", + "Kunětická", + "Kupeckého", + "Kupkova", + "Kurandové", + "Kurkova", + "Kurta Konráda", + "Kurzova", + "Kurčatovova", + "Kusá", + "Kusého", + "Kutilova", + "Kutnauerovo Náměstí", + "Kutnohorská", + "Kutnohorská", + "Kutrovická", + "Kuttelwascherova", + "Kutvirtova", + "Kučerova", + "Kučerové", + "Kuťatská", + "Kuželova", + "Kvapilova", + "Kvasinská", + "Kvestorská", + "Květinková", + "Květinářská", + "Květnická", + "Květnová", + "Květnového Povstání", + "Květnového Povstání", + "Květnového Vítězství", + "Květnového Vítězství", + "Květná", + "Květoslavova", + "Květová", + "Kyjevská", + "Kyjevská", + "Kyjovská", + "Kyjská", + "Kyjská", + "Kykalova", + "Kymrova", + "Kynická", + "Kyselova", + "Kyslíková", + "Kysucká", + "Kysúcká", + "Kytlická", + "Kytínská", + "Kácovská", + "Kádnerova", + "Kálikova", + "Kálmánova", + "Káranská", + "Křejpského", + "Křelovická", + "Křemelná", + "Křemencova", + "Křemenná", + "Křemenáčová", + "Křemílkova", + "Křenická", + "Křenova", + "Křepelčí", + "Křepelčí", + "Křesadlova", + "Křesanovská", + "Křeslická", + "Křesomyslova", + "Křešínská", + "Křimická", + "Křimovská", + "Křivatcová", + "Křivenická", + "Křivoklátská", + "Křivá", + "Křičkova", + "Křišťanova", + "Křišťálová", + "Křižovnická", + "Křižovnické Nám.", + "Křižovnické Náměstí", + "Křižíkova", + "Křižíkova", + "Křovinovo Nám.", + "Křovinovo Náměstí", + "Křtinská", + "Kříženeckého Nám.", + "Kříženeckého Náměstí", + "Křížkovského", + "Křížová", + "Křížová", + "Labská", + "Labětínská", + "Ladislava Coňka", + "Ladova", + "Laglerové", + "Lahovská", + "Lahovská", + "Lamačova", + "Langweilova", + "Lannova", + "Lanýžová", + "Lanžhotská", + "Lanžovská", + "Laténská", + "Laubova", + "Laudonova", + "Laudova", + "Laurinova", + "Lazarská", + "Lazarská", + "Lačnovská", + "Lažanská", + "Lažanská", + "Lažanského", + "Lebeděvova", + "Ledařská", + "Ledecká", + "Ledečská", + "Ledkovská", + "Lednická", + "Lednová", + "Ledvická", + "Ledvinova", + "Ledč", + "Ledčická", + "Legerova", + "Legerova", + "Legerova", + "Legerova", + "Legionářů", + "Lehárova", + "Leitzova", + "Leknínová", + "Leopoldova", + "Leskovecká", + "Lesnická", + "Lesného", + "Lesní", + "Lessnerova", + "Lesáků", + "Letců", + "Letecká", + "Letenská", + "Letenské Nám.", + "Letenské Nám.", + "Letenské Náměstí", + "Letenské Náměstí", + "Letenské Sady", + "Letní", + "Letohradská", + "Letovská", + "Letňanská", + "Letňanská", + "Levandulová", + "Levobřežní", + "Levského", + "Levá", + "Lexova", + "Lečkova", + "Lešanská", + "Lešenská", + "Lešetínská", + "Lešovská", + "Leštínská", + "Lhenická", + "Lhotecká", + "Lhotecká", + "Lhotská", + "Lhotákova", + "Liberecká", + "Liberijská", + "Libečkova", + "Libeňská", + "Libeňský Ostrov", + "Libeňský Ostrov", + "Libeřská", + "Libichovská", + "Libická", + "Libišanská", + "Libišská", + "Libkovská", + "Liblická", + "Liblická", + "Libochovická", + "Libocká", + "Liborova", + "Libotovská", + "Libovická", + "Libočanská", + "Liboňovská", + "Libošovická", + "Libuňská", + "Libušina", + "Libušská", + "Libušská", + "Libušská", + "Libušská", + "Libáňská", + "Libínská", + "Libčanská", + "Libčická", + "Liběchovská", + "Libědická", + "Liběšická", + "Libřická", + "Lichá", + "Lidečská", + "Lidická", + "Lidického", + "Lihovarská", + "Liliová", + "Lilková", + "Limuzská", + "Limuzská", + "Lindavská", + "Lindleyova", + "Lindnerova", + "Linhartova", + "Linhartská", + "Lipanská", + "Lipecká", + "Lipenecká", + "Lipenská", + "Lipenská", + "Lipenské Nám.", + "Lipenské Náměstí", + "Lipnická", + "Lipoltická", + "Lipovická", + "Lipovská", + "Lipová Alej", + "Lipové Náměstí", + "Lipského", + "Lipí", + "Lisabonská", + "Lisabonská", + "Listopadová", + "Lisztova", + "Litavská", + "Litevská", + "Litická", + "Litochlebská", + "Litoměřická", + "Litoměřická", + "Litovická", + "Litošická", + "Litošická", + "Litožnická", + "Litvínovská", + "Litvínovská", + "Livornská", + "Lišanská", + "Lišická", + "Liškova", + "Lišovická", + "Liščí", + "Liščí", + "Lnářská", + "Lobečská", + "Lochenická", + "Lochkovská", + "Lochotínská", + "Lodecká", + "Lodní Mlýny", + "Loděnická", + "Lodžská", + "Lodžská", + "Lohenická", + "Lohniského", + "Lojovická", + "Lojovická", + "Lojovická", + "Lolkova", + "Lomařská", + "Lomecká", + "Lomená", + "Lomnická", + "Lomnického", + "Lomová", + "Londýnská", + "Loosova", + "Lopatecká", + "Lopatecká", + "Lopuchová", + "Loretánská", + "Loretánské Nám.", + "Loretánské Náměstí", + "Losinská", + "Lotyšská", + "Loucká", + "Loudova", + "Lounská", + "Lounských", + "Loutkářská", + "Loučanská", + "Loučimská", + "Loučná", + "Louňovická", + "Lovecká", + "Lovosická", + "Lovosická", + "Lovosická", + "Lovčenská", + "Lovčická", + "Lozická", + "Lošetická", + "Lošáková", + "Lstibořská", + "Lubenecká", + "Lublaňská", + "Lublaňská", + "Lublinská", + "Lubnická", + "Lucemburská", + "Lucemburská", + "Lucinková", + "Ludmilina", + "Ludvíkova", + "Luhovská", + "Lukavecká", + "Lukavského", + "Lukešova", + "Lukešova", + "Lukovská", + "Lukášova", + "Lumiérů", + "Lumírova", + "Lumírova", + "Luníkovská", + "Lupenická", + "Lupáčova", + "Lutínská", + "Luční", + "Luštěnická", + "Lužanská", + "Lužecká", + "Lužická", + "Lužnická", + "Lužná", + "Lužní", + "Lužská", + "Lvovská", + "Lysinská", + "Lysolajská", + "Lysolajské Údolí", + "Lyčkovo Nám.", + "Lyčkovo Náměstí", + "Lyžařská", + "Ládevská", + "Lánovská", + "Lánská", + "Lásenická", + "Láskova", + "Lázeňská", + "Lékařská", + "Lékořicová", + "Líbalova", + "Líbeznická", + "Lípová", + "Lískovická", + "Lísková", + "Líšnická", + "Lýskova", + "M. J. Lermontova", + "Macešková", + "Macharovo Nám.", + "Macharovo Náměstí", + "Machatého", + "Machkova", + "Machnova", + "Machovcova", + "Machovická", + "Machovská", + "Machuldova", + "Macháčkova", + "Madarova", + "Madaťjanova", + "Madridská", + "Magd. Rettigové", + "Magdalény Rettigové", + "Magistrů", + "Magnitogorská", + "Mahenova", + "Mahlerovy Sady", + "Mahulenina", + "Maiselova", + "Maiselova", + "Majerové", + "Majerského", + "Makedonská", + "Makovská", + "Makovského", + "Maková", + "Malachitová", + "Malebná", + "Malenická", + "Malešická", + "Malešická", + "Malešická", + "Malešické Nám.", + "Malešické Náměstí", + "Malešovská", + "Malinová", + "Maličká", + "Malkovského", + "Malletova", + "Malletova", + "Malobřevnovská", + "Malostranské Nábř.", + "Malostranské Nábřeží", + "Malostranské Náměstí", + "Malotická", + "Malovická", + "Maltézské Nám.", + "Maltézské Náměstí", + "Malá", + "Malá Bylanská", + "Malá Houdova", + "Malá Klášterní", + "Malá Lada", + "Malá Michnovka", + "Malá Plynární", + "Malá Skloněná", + "Malá Smidarská", + "Malá Tyršovka", + "Malá Xaveriova", + "Malá Štupartská", + "Malá Štěpánská", + "Malátova", + "Malé Nám.", + "Malé Náměstí", + "Malého", + "Malínská", + "Malířská", + "Malý Dvůr", + "Malý Okrouhlík", + "Malšovická", + "Malšovské Nám.", + "Malšovské Náměstí", + "Mandloňová", + "Mandova", + "Mansfeldova", + "Manská Zahrada", + "Mantovská", + "Manželů Dostálových", + "Manželů Kotrbových", + "Manželů Lyčkových", + "Marciho", + "Marešova", + "Marie Cibulkové", + "Marie Podvalové", + "Mariánská", + "Mariánská", + "Mariánské Hradby", + "Mariánské Hradby", + "Mariánské Nám.", + "Mariánské Náměstí", + "Markova", + "Markupova", + "Markušova", + "Markvartická", + "Markyta", + "Markétská", + "Maroldova", + "Martinelliho", + "Martinická", + "Martinova", + "Martinovská", + "Martinská", + "Marty Krásové", + "Marvanova", + "Maršovská", + "Masarykovo Nábř.", + "Masarykovo Nábř.", + "Masarykovo Nábřeží", + "Masarykovo Nábřeží", + "Masná", + "Matek", + "Matenská", + "Maternova", + "Mateřská", + "Mateřídoušková", + "Matjuchinova", + "Matoušova", + "Mattioliho", + "Matúškova", + "Matěchova", + "Matějkova", + "Matějovského", + "Matějská", + "Maxovská", + "Mazancova", + "Mazovská", + "Mazurská", + "Maďarská", + "Maňákova", + "Mařatkova", + "Mařákova", + "Maříkova", + "Mašatova", + "Maškova", + "Mašovická", + "Maštěřovského", + "Mašínova", + "Mechovka", + "Mechová", + "Medinská", + "Medkova", + "Medlovská", + "Medová", + "Meduňková", + "Meinlinova", + "Mejstříkova", + "Melantrichova", + "Meliorační", + "Melodická", + "Melounová", + "Menclova", + "Mendelova", + "Mendíků", + "Menšíkova", + "Menšíkovská", + "Merhoutova", + "Merkurova", + "Meruňková", + "Meskářova", + "Meteorologická", + "Meteorologická", + "Metodějova", + "Metujská", + "Mexická", + "Mezi Chatami", + "Mezi Domky", + "Mezi Domy", + "Mezi Humny", + "Mezi Lysinami", + "Mezi Lány", + "Mezi Poli", + "Mezi Potoky", + "Mezi Rolemi", + "Mezi Rybníky", + "Mezi Sklady", + "Mezi Stráněmi", + "Mezi Vodami", + "Mezi Úvozy", + "Mezi Školami", + "Mezibranská", + "Mezihorská", + "Mezihoří", + "Mezilehlá", + "Mezilesní", + "Mezilesí", + "Meziluží", + "Mezipolí", + "Mezitraťová", + "Mezitraťová", + "Mezitraťová", + "Mezivrší", + "Meziškolská", + "Mečislavova", + "Mečovská", + "Mečíková", + "Michalovicova", + "Michalská", + "Michelangelova", + "Michelská", + "Michelská", + "Michnova", + "Michnovka", + "Mickiewiczova", + "Mikanova", + "Mikova", + "Mikovcova", + "Mikovická", + "Mikulandská", + "Mikuleckého", + "Mikulova", + "Mikulovická", + "Mikuláše Z Husi", + "Mikulášská", + "Mikulčická", + "Mikšovského", + "Milady Horákové", + "Milady Horákové", + "Milady Horákové", + "Milady Horákové", + "Milady Horákové", + "Milana Kadlece", + "Milenovská", + "Milerova", + "Miletická", + "Miletínská", + "Milevská", + "Milevská", + "Milešovská", + "Milotická", + "Milovická", + "Milovická", + "Milánská", + "Milínská", + "Milíčova", + "Milíčovská", + "Mimoňská", + "Minaříkova", + "Minerální", + "Minická", + "Minská", + "Miranova", + "Miroslava Hajna", + "Miroslava Hamra", + "Mirotická", + "Mirotická", + "Mirovická", + "Mirošovická", + "Mirošovská", + "Mistrovská", + "Mistřínská", + "Miřetická", + "Miškovická", + "Mladenovova", + "Mladoboleslavská", + "Mladoboleslavská", + "Mladoboleslavská", + "Mladoboleslavská", + "Mladoboleslavská", + "Mladotická", + "Mladotova", + "Mladých", + "Mladých Běchovic", + "Mladčina", + "Mladějovská", + "Mlynářská", + "Mládeže", + "Mládežnická", + "Mládkova", + "Mládí", + "Mlázovická", + "Mlékárenská", + "Mlýnská", + "Mlýnská", + "Mnichovická", + "Mochovská", + "Mochovská", + "Modenská", + "Modlanská", + "Modletická", + "Modletínská", + "Modravská", + "Modrá", + "Modrého", + "Modřanská", + "Modřanská", + "Modřanská", + "Modřanská", + "Modřínová", + "Mohelnická", + "Mohylová", + "Mojmírova", + "Mokrá", + "Mokřanská", + "Moldavská", + "Molitorovská", + "Molákova", + "Mongolská", + "Moravanská", + "Moravanů", + "Moravská", + "Morseova", + "Morstadtova", + "Morušová", + "Morušová", + "Morávkova", + "Moskevská", + "Mostecká", + "Motolská", + "Moulíkova", + "Moysesova", + "Mozambická", + "Mozartova", + "Mošnova", + "Možného", + "Mramorová", + "Mratínská", + "Mračnická", + "Mrkosova", + "Mrkvičkova", + "Mrákovská", + "Mrázkova", + "Mrázovka", + "Mráčkova", + "Mrštíkova", + "Mrštíkova", + "Muchomůrková", + "Muchova", + "Mukařovská", + "Mukařovského", + "Murgašova", + "Murmanská", + "Musilova", + "Musorgského", + "Musílkova", + "Mutěnínská", + "Muzejní", + "Muzikova", + "Muškova", + "Mydlářka", + "Myjavská", + "Mylnerovka", + "Myslbekova", + "Myslbekova", + "Myslivecká", + "Myslivečkova", + "Myslíkova", + "Myslíkova", + "Myšlínská", + "Máchova", + "Máchova", + "Mádrova", + "Májovková", + "Májová", + "Málkovská", + "Mánesova", + "Márova", + "Máslova", + "Máslovická", + "Mátová", + "Mílovská", + "Mílová", + "Mírová", + "Mírového Hnutí", + "Mírového Hnutí", + "Místecká", + "Míčova", + "Míšeňská", + "Míšovická", + "Münzbergerových", + "Mýtní", + "Měchenická", + "Měcholupská", + "Měděnecká", + "Mělická", + "Mělnická", + "Městská", + "Měsíčková", + "Měsíční", + "Měšická", + "Měšínská", + "Mšecká", + "Mšenská", + "N. A. Někrasova", + "Na Babách", + "Na Babě", + "Na Bahnech", + "Na Balkáně", + "Na Balkáně", + "Na Bambouzku", + "Na Baních", + "Na Barikádách", + "Na Bartoňce", + "Na Bateriích", + "Na Bateriích", + "Na Bačálkách", + "Na Baště Sv. Jiří", + "Na Baště Sv. Ludmily", + "Na Baště Sv. Tomáše", + "Na Bendovce", + "Na Benátkách", + "Na Beránce", + "Na Betonce", + "Na Bečvářce", + "Na Bitevní Pláni", + "Na Blanici", + "Na Blanseku", + "Na Blatech", + "Na Bluku", + "Na Bohdalci", + "Na Bojišti", + "Na Boleslavce", + "Na Borovém", + "Na Botiči", + "Na Botě", + "Na Božkovně", + "Na Brabenci", + "Na Brázdě", + "Na Bučance", + "Na Bělici", + "Na Bělidle", + "Na Bělohorské Pláni", + "Na Břehu", + "Na Břevnovské Pláni", + "Na Březince", + "Na Celné", + "Na Cestě", + "Na Chmelnici", + "Na Chobotě", + "Na Chodovci", + "Na Chvalce", + "Na Chvalské Tvrzi", + "Na Cihelně", + "Na Cihlářce", + "Na Cikorce", + "Na Cikánce", + "Na Cimbále", + "Na Cípu", + "Na Císařce", + "Na Dionysce", + "Na Dlouhé Mezi", + "Na Dlouhé Mezi", + "Na Dlouhé Mezi", + "Na Dlouhé Mezi", + "Na Dlouhém Lánu", + "Na Dlážděnce", + "Na Dlážděnce", + "Na Dlážděnce", + "Na Dlážděnce", + "Na Dobešce", + "Na Dobré Vodě", + "Na Dolinách", + "Na Dolinách", + "Na Dolnici", + "Na Dolíku", + "Na Domovině", + "Na Doubkové", + "Na Drahách", + "Na Dračkách", + "Na Dračkách", + "Na Dražkách", + "Na Dubině", + "Na Dvorcích", + "Na Dyrince", + "Na Dílcích", + "Na Dílech", + "Na Dědince", + "Na Dědinách", + "Na Děkance", + "Na Děkance", + "Na Dělostřílnách", + "Na Džbánu", + "Na Fabiánce", + "Na Farkách", + "Na Farkáně I", + "Na Farkáně Ii", + "Na Farkáně Iii", + "Na Farkáně Iv", + "Na Fialce I", + "Na Fialce Ii", + "Na Fidlovačce", + "Na Fišerce", + "Na Florenci", + "Na Florenci", + "Na Floře", + "Na Folimance", + "Na Formance", + "Na Františku", + "Na Groši", + "Na Habrovce", + "Na Habrové", + "Na Hanspaulce", + "Na Harfě", + "Na Havránce", + "Na Hlavní", + "Na Hlinách", + "Na Hloubětínské Vinici", + "Na Hlídce", + "Na Holém Vrchu", + "Na Homolce", + "Na Homoli", + "Na Horce", + "Na Horkách", + "Na Hradním Vodovodu", + "Na Hranicích", + "Na Hranicích", + "Na Hrobci", + "Na Hroudě", + "Na Hroudě", + "Na Hrádku", + "Na Hrázi", + "Na Hubálce", + "Na Humnech", + "Na Hupech", + "Na Hutmance", + "Na Hutích", + "Na Hutích", + "Na Hvížďalce", + "Na Hvězdárně", + "Na Hádku", + "Na Hájku", + "Na Hřebenech I", + "Na Hřebenech Ii", + "Na Hřebenech Ii", + "Na Hřebenkách", + "Na Hůrce", + "Na Jabloňce", + "Na Jabloňce", + "Na Jahodách", + "Na Jarově", + "Na Jelenách", + "Na Jelenách", + "Na Jetelce", + "Na Jetelce", + "Na Jezerce", + "Na Jezerách", + "Na Jitřence", + "Na Jivinách", + "Na Julisce", + "Na Jílech", + "Na Jílu", + "Na Kameni", + "Na Kampě", + "Na Kapličce", + "Na Karlovce", + "Na Kavčích Horách", + "Na Kazance", + "Na Kačence", + "Na Kačerově", + "Na Kindlovce", + "Na Klaudiánce", + "Na Klaudiánce", + "Na Kleovce", + "Na Klikovce", + "Na Klimentce", + "Na Klášterním", + "Na Klínech", + "Na Klínech", + "Na Klínku", + "Na Knížce", + "Na Kocourkách", + "Na Kocínce", + "Na Kodymce", + "Na Kolejním Statku", + "Na Komořsku", + "Na Komořsku", + "Na Konci", + "Na Konečné", + "Na Konvářce", + "Na Kopanině", + "Na Kopci", + "Na Kopečku", + "Na Kopytářce", + "Na Korunce", + "Na Korábě", + "Na Korálově", + "Na Kotlářce", + "Na Koupaliště", + "Na Kovárně", + "Na Kozačce", + "Na Kozinci", + "Na Košince", + "Na Košíku", + "Na Kraji", + "Na Krocínce", + "Na Krutci", + "Na Královce", + "Na Královně", + "Na Krčské Stráni", + "Na Kuthence", + "Na Kvintusce", + "Na Květnici", + "Na Kyjově", + "Na Křemínku", + "Na Křenkově", + "Na Křečku", + "Na Křivce", + "Na Křivce", + "Na Křivce", + "Na Křivině", + "Na Křtině", + "Na Křídle", + "Na Labuťce", + "Na Labuťce I", + "Na Labuťce Ii", + "Na Labuťce Iii", + "Na Labuťce Iv", + "Na Ladách", + "Na Lahovské", + "Na Laurové", + "Na Lepším", + "Na Lhotech", + "Na Lhotkách", + "Na Libušince", + "Na Losách", + "Na Louce", + "Na Loukoti", + "Na Louži", + "Na Loužku", + "Na Luka", + "Na Lukách", + "Na Luzích", + "Na Lučinách", + "Na Lužci", + "Na Lysinách", + "Na Lysině", + "Na Ládví", + "Na Lánech", + "Na Lávce", + "Na Lázeňce", + "Na Líše", + "Na Malovance", + "Na Malé Šárce", + "Na Malém Klínu", + "Na Maninách", + "Na Manoušce", + "Na Markvartce", + "Na Marně", + "Na Mezi", + "Na Mlejnku", + "Na Moklině", + "Na Mokřině", + "Na Moráni", + "Na Močále", + "Na Mrázovce", + "Na Musilech", + "Na Mírách", + "Na Míčánce", + "Na Míčánkách", + "Na Mýtě", + "Na Můstku", + "Na Neklance", + "Na Nežárce", + "Na Nivách", + "Na Novině", + "Na Nové Silnici", + "Na Náspu", + "Na Návrati", + "Na Návrší", + "Na Návsi", + "Na Obrátce", + "Na Obrátce", + "Na Odbočce", + "Na Ohradě", + "Na Okraji", + "Na Okraji", + "Na Okrouhlíku", + "Na Okruhu", + "Na Opyši", + "Na Opyši", + "Na Ostrohu", + "Na Ostrově", + "Na Ostrůvku", + "Na Ovesníku", + "Na Ovčinách", + "Na Ovčáckém", + "Na Ovčíně", + "Na Ořechovce", + "Na Padesátníku I", + "Na Padesátníku Ii", + "Na Padesátníku Iii", + "Na Padesátníku Iv", + "Na Padesátníku V", + "Na Padesátém", + "Na Pahorku", + "Na Pahoubce", + "Na Palouku", + "Na Paloučku", + "Na Pankráci", + "Na Panorámě", + "Na Parcelách", + "Na Parkáně", + "Na Parukářce", + "Na Pasece", + "Na Pasece", + "Na Pastvinách", + "Na Pavím Vrchu", + "Na Pazderce", + "Na Pecích", + "Na Pernikářce", + "Na Perštýně", + "Na Petynce", + "Na Petynce", + "Na Petřinách", + "Na Petřinách", + "Na Placích", + "Na Planině", + "Na Plužině", + "Na Plzeňce", + "Na Plácku", + "Na Pláni", + "Na Plískavě", + "Na Podkovce", + "Na Pokraji", + "Na Pokraji", + "Na Poli", + "Na Polníku", + "Na Pomezí", + "Na Pomezí", + "Na Popelce", + "Na Popelce", + "Na Potůčku", + "Na Poustkách", + "Na Pozorce", + "Na Poříčním Právu", + "Na Poříčí", + "Na Poříčí", + "Na Požáru", + "Na Požáru", + "Na Pramenech", + "Na Pramenech", + "Na Prosecké Vyhlídce", + "Na Proseku", + "Na Prostřední Cestě", + "Na Proutcích", + "Na Provaznici", + "Na Průhonu", + "Na Průseku", + "Na Pučálce", + "Na Pískovně", + "Na Písku", + "Na Pískách", + "Na Pěkné Vyhlídce", + "Na Pěšinách", + "Na Pěšinách", + "Na Pěšině", + "Na Předevsi", + "Na Přesypu", + "Na Přesypu", + "Na Přídole", + "Na Příkopě", + "Na Příkopě", + "Na Přívozích", + "Na Příčce", + "Na Příčné Mezi", + "Na Radosti", + "Na Radosti", + "Na Rampách", + "Na Rejdišti", + "Na Roháčku", + "Na Rokytce", + "Na Rolích", + "Na Rovinách", + "Na Rovině", + "Na Rovni", + "Na Rovnosti", + "Na Rovném", + "Na Rozcestí", + "Na Rozdílu", + "Na Rozdílu", + "Na Rozhledu", + "Na Rozhraní", + "Na Rozhraní", + "Na Rozvodí", + "Na Ročkově", + "Na Rybníčku", + "Na Rybářce", + "Na Rybářce", + "Na Rymáni", + "Na Rynku", + "Na Salabce", + "Na Samotě", + "Na Schodech", + "Na Schůdkách", + "Na Sedlišti", + "Na Sekyrce", + "Na Selském", + "Na Seníku", + "Na Skalce", + "Na Skalách", + "Na Sklonku", + "Na Skále", + "Na Slatince", + "Na Slatinách", + "Na Slatinách", + "Na Slatinách", + "Na Slavíkově", + "Na Slovance", + "Na Slupi", + "Na Slupi", + "Na Smetance", + "Na Souvrati", + "Na Souvrati", + "Na Spojce", + "Na Spádu", + "Na Spáleništi", + "Na Srpečku", + "Na Srázu", + "Na Srážku", + "Na Staré", + "Na Staré Cestě", + "Na Staré Návsi", + "Na Staré Silnici", + "Na Staré Vinici", + "Na Stezce", + "Na Stezce", + "Na Struze", + "Na Stráni", + "Na Stráňkách", + "Na Stráži", + "Na Stráži", + "Na Strži", + "Na Strži", + "Na Stupních", + "Na Stárce", + "Na Stírce", + "Na Střelnici", + "Na Svahu", + "Na Svěcence", + "Na Sychrově", + "Na Sychrově", + "Na Sypkém", + "Na Sypčině", + "Na Sádce", + "Na Terase", + "Na Topolce", + "Na Topolce", + "Na Truhlářce", + "Na Tržišti", + "Na Tykačce", + "Na Táboře", + "Na Třebešíně", + "Na Třebešíně", + "Na Universitním Statku", + "Na Usedlosti", + "Na Vackově", + "Na Valech", + "Na Valentince", + "Na Vartě", + "Na Vaňhově", + "Na Veselí", + "Na Vidouli", + "Na Viktorce", + "Na Vinici", + "Na Viničce", + "Na Viničkách", + "Na Viničních Horách", + "Na Vinobraní", + "Na Vinohradu", + "Na Višňovce", + "Na Vlasačce", + "Na Vlastní Půdě", + "Na Vlastním", + "Na Vlku", + "Na Vlčovce", + "Na Volánové", + "Na Vrchmezí", + "Na Vrchmezí", + "Na Vrchmezí", + "Na Vrcholu", + "Na Vrchu", + "Na Vrchu", + "Na Vrchách", + "Na Vrchách", + "Na Vrstevnici", + "Na Vrstvách", + "Na Vršku", + "Na Vrškách", + "Na Vrších", + "Na Vrších", + "Na Vydrholci", + "Na Vyhlídce", + "Na Vypichu", + "Na Vypichu", + "Na Vysoké I", + "Na Vysoké I", + "Na Vysoké Ii", + "Na Vysočanských Vinicích", + "Na Vysočině", + "Na Václavce", + "Na Vápence", + "Na Vápenném", + "Na Vítězné Pláni", + "Na Výběžku", + "Na Výhledech", + "Na Výhonku", + "Na Výrovně", + "Na Výsledku I", + "Na Výsledku Ii", + "Na Výsluní", + "Na Výspě", + "Na Výspě", + "Na Výstupu", + "Na Výtoni", + "Na Výši", + "Na Výšince", + "Na Výšinách", + "Na Výšině", + "Na Věnečku", + "Na Větrníku", + "Na Větrníku", + "Na Větrově", + "Na Větru", + "Na Zahrádkách", + "Na Zatlance", + "Na Zavadilce", + "Na Zbořenci", + "Na Zderaze", + "Na Zedníkové", + "Na Zelené Louce", + "Na Zemance", + "Na Zkratce", + "Na Zlatnici", + "Na Zlaté", + "Na Zlíchově", + "Na Zlíchově", + "Na Zmrzlíku", + "Na Znělci", + "Na Zvoničce", + "Na Zábradlí", + "Na Záhonech", + "Na Zájezdu", + "Na Zámecké", + "Na Zámkách", + "Na Zámyšli", + "Na Zástřelu", + "Na Zástřelu", + "Na Zátorce", + "Na Zátorách", + "Na Závěji", + "Na Úbočí", + "Na Úhoru", + "Na Úlehli", + "Na Úseku", + "Na Úspěchu", + "Na Černé Hoře", + "Na Černé Strouze", + "Na Černém Vrchu", + "Na Července", + "Na Čečeličce", + "Na Čihadle", + "Na Čisté", + "Na Říháku", + "Na Šabatce", + "Na Šachtě", + "Na Šafránce", + "Na Šancích", + "Na Šedivé", + "Na Šejdru", + "Na Šejdru", + "Na Šmukýřce", + "Na Špejcharu", + "Na Špitálce", + "Na Špitálsku", + "Na Štamberku", + "Na Štěpnici", + "Na Šubě", + "Na Šumavě", + "Na Šutce", + "Na Švihance", + "Na Šťáhlavce", + "Na Žertvách", + "Na Žvahově", + "Naardenská", + "Nad Akcízem", + "Nad Akáty", + "Nad Alejí", + "Nad Belvederem", + "Nad Belárií", + "Nad Berounkou", + "Nad Bertramkou", + "Nad Botičem", + "Nad Bořislavkou", + "Nad Bořislavkou", + "Nad Branickým Pivovarem", + "Nad Brůdkem", + "Nad Brůdkem", + "Nad Buďánkami I", + "Nad Buďánkami Ii", + "Nad Buďánkami Iii", + "Nad Cementárnou", + "Nad Chaloupkami", + "Nad Chuchlí", + "Nad Cihelnou", + "Nad Dalejským Údolím", + "Nad Doly", + "Nad Dolíky", + "Nad Drahou", + "Nad Dubovým Mlýnem", + "Nad Dvorem", + "Nad Dálnicí", + "Nad Elektrárnou", + "Nad Elektrárnou", + "Nad Flajšnerkou", + "Nad Habrovkou", + "Nad Havlem", + "Nad Helmrovkou", + "Nad Hercovkou", + "Nad Hercovkou", + "Nad Hliníkem", + "Nad Hliníkem", + "Nad Horizontem", + "Nad Hradním Potokem", + "Nad Hradním Vodojemem", + "Nad Husovými Sady", + "Nad Hutěmi", + "Nad Hutěmi", + "Nad Hájem", + "Nad Hřištěm", + "Nad Jenerálkou", + "Nad Jetelkou", + "Nad Jezem", + "Nad Jezerkou", + "Nad Jordánkem", + "Nad Kajetánkou", + "Nad Kamínkou", + "Nad Kaplankou", + "Nad Kapličkou", + "Nad Kavalírkou", + "Nad Kazankou", + "Nad Kazínem", + "Nad Kelerkou", + "Nad Kesnerkou", + "Nad Klamovkou", + "Nad Klikovkou", + "Nad Klíčovem", + "Nad Kolonií", + "Nad Kolčavkou", + "Nad Komornickou", + "Nad Konečnou", + "Nad Konvářkou", + "Nad Kostelem", + "Nad Kotlaskou I", + "Nad Kotlaskou Ii", + "Nad Kotlaskou Iii", + "Nad Kotlaskou Iv", + "Nad Kotlaskou V", + "Nad Koulkou", + "Nad Koupadly", + "Nad Koupalištěm", + "Nad Košinkou", + "Nad Košíkem", + "Nad Krocínkou", + "Nad Krocínkou", + "Nad Královskou Oborou", + "Nad Kuliškou", + "Nad Kundratkou", + "Nad Kundratkou", + "Nad Kundratkou", + "Nad Křížkem", + "Nad Laurovou", + "Nad Lesem", + "Nad Lesním Divadlem", + "Nad Lesíkem", + "Nad Libeňským Nádražím", + "Nad Libeřským Potokem", + "Nad Libušským Potokem", + "Nad Libří", + "Nad Lomem", + "Nad Lomy", + "Nad Lukami", + "Nad Lávkou", + "Nad Malým Mýtem", + "Nad Manovkou", + "Nad Markytou", + "Nad Mazankou", + "Nad Meandry", + "Nad Mlynářkou", + "Nad Mlýnem", + "Nad Mlýnským Potokem", + "Nad Mohylou", + "Nad Mokřinou", + "Nad Mostem", + "Nad Motolskou Nemocnicí", + "Nad Motolskou Nemocnicí", + "Nad Mrázovkou", + "Nad Mušlovkou", + "Nad Mušlovkou", + "Nad Novou Libní", + "Nad Nuslemi", + "Nad Nádražím", + "Nad Nádrží", + "Nad Náhonem", + "Nad Náměstím", + "Nad Návsí", + "Nad Obcí I", + "Nad Obcí Ii", + "Nad Octárnou", + "Nad Odbočkou", + "Nad Ohradou", + "Nad Okrouhlíkem", + "Nad Olšinami", + "Nad Olšinami", + "Nad Ondřejovem", + "Nad Opatovem", + "Nad Ostrovem", + "Nad Pahorkem", + "Nad Palatou", + "Nad Panenskou", + "Nad Parkem", + "Nad Parkánem", + "Nad Paťankou", + "Nad Pentlovkou", + "Nad Petruskou", + "Nad Petynkou", + "Nad Plynovodem", + "Nad Podbabskou Skálou", + "Nad Pomníkem", + "Nad Popelkou", + "Nad Popelářkou", + "Nad Potůčkem", + "Nad Prahou", + "Nad Pramenem", + "Nad Primaskou", + "Nad Primaskou", + "Nad Propustí", + "Nad Pruhy", + "Nad Pískovnou", + "Nad Přehradou", + "Nad Přívozem", + "Nad Radotínem", + "Nad Rohatci", + "Nad Roklí", + "Nad Rokoskou", + "Nad Rokytkou", + "Nad Rybníkem", + "Nad Rybníkem", + "Nad Rybníčky", + "Nad Ryšánkou", + "Nad Rážákem", + "Nad Sadem", + "Nad Sady", + "Nad Santoškou", + "Nad Schody", + "Nad Skálou", + "Nad Slávií", + "Nad Slávií", + "Nad Smetankou", + "Nad Sokolovnou", + "Nad Soutokem", + "Nad Soutokem", + "Nad Splavem", + "Nad Spádem", + "Nad Spáleným Mlýnem", + "Nad Stanicí", + "Nad Starou Pískovnou", + "Nad Statkem", + "Nad Strakovkou", + "Nad Strouhou", + "Nad Strání", + "Nad Strání", + "Nad Studánkou", + "Nad Svahem", + "Nad Sýpkou", + "Nad Tejnkou", + "Nad Teplárnou", + "Nad Topoly", + "Nad Tratí", + "Nad Trnkovem", + "Nad Trojou", + "Nad Turbovou", + "Nad Třebešínem I", + "Nad Třebešínem Ii", + "Nad Třebešínem Ii", + "Nad Třebešínem Iii", + "Nad Třebešínem Iii", + "Nad Vavrouškou", + "Nad Vernerákem", + "Nad Vinicí", + "Nad Vinným Potokem", + "Nad Vinným Potokem", + "Nad Vinným Potokem", + "Nad Vinohradem", + "Nad Višňovkou", + "Nad Vltavou", + "Nad Vodovodem", + "Nad Vodovodem", + "Nad Vojenským Hřbitovem", + "Nad Vokolky", + "Nad Volyňkou", + "Nad Vrbami", + "Nad Vrstvami", + "Nad Vršovskou Horou", + "Nad Vsí", + "Nad Vysočany", + "Nad Václavkou", + "Nad Výpustí", + "Nad Výšinkou", + "Nad Zahradnictvím", + "Nad Zatáčkou", + "Nad Zavážkou", + "Nad Zbraslaví", + "Nad Zbrojnicí", + "Nad Zemankou", + "Nad Zemankou", + "Nad Zlatnicí", + "Nad Zlíchovem", + "Nad Záložnou", + "Nad Zámečkem", + "Nad Zámečnicí", + "Nad Zátiším", + "Nad Závodištěm", + "Nad Závěrkou", + "Nad Údolím", + "Nad Údolím Hvězd", + "Nad Úpadem", + "Nad Úvozem", + "Nad Úžlabinou", + "Nad Úžlabinou", + "Nad Šafránkou", + "Nad Šancemi", + "Nad Šauerovými Sady", + "Nad Šeberákem", + "Nad Šejdrem", + "Nad Šestikopy", + "Nad Šetelkou", + "Nad Štolou", + "Nad Šutkou", + "Nad Šálkovnou", + "Nad Šárkou", + "Nad Želivkou", + "Nad Žlábkem", + "Nademlejnská", + "Nadějovská", + "Narcisová", + "Naskové", + "Natanaelka", + "Navarova", + "Navigátorů", + "Navrátilova", + "Načeradecká", + "Načešická", + "Neapolská", + "Nebeského", + "Nebovidská", + "Nebozízek-Sady", + "Nebušická", + "Nechanická", + "Nechanského", + "Nechvalická", + "Nechvílova", + "Nechybova", + "Nedašovská", + "Nedbalova", + "Nedokončená", + "Nedokončená", + "Nedošínské", + "Nedražická", + "Nedvědická", + "Nedvědovo Nám.", + "Nedvědovo Náměstí", + "Nedvězská", + "Neffova", + "Nefritová", + "Neherovská", + "Nehvizdská", + "Nehvizdská", + "Nejdkova", + "Neklanova", + "Nekvasilova", + "Nekázanka", + "Nemocniční", + "Nemošická", + "Nepasické Nám.", + "Nepasické Náměstí", + "Nepelova", + "Nepilova", + "Nepomucká", + "Nepomuckých", + "Nepovolená", + "Nepravidelná", + "Neprůjezdná", + "Nepálská", + "Neratovická", + "Nerudova", + "Nerudova", + "Nesměřická", + "Nespecká", + "Nesvadbova", + "Netlucká", + "Netluky", + "Netolická", + "Netušilská", + "Netínská", + "Netřebická", + "Netřebská", + "Neumannova", + "Neustupného", + "Neužilova", + "Nevanova", + "Neveklovská", + "Newtonova", + "Nezamyslova", + "Nezdova", + "Nezvalova", + "Nečova", + "Nešporova", + "Nežárská", + "Nickerleho", + "Niederleho", + "Nikodémova", + "Nikoly Tesly", + "Nikoly Vapcarova", + "Niská", + "Nitranská", + "Nitranská", + "Nivnická", + "Nobelova", + "Norbertov", + "Norská", + "Nosická", + "Nosticova", + "Notečská", + "Noutonická", + "Nouzov", + "Nouzovské Nám.", + "Nouzovské Náměstí", + "Nouzová", + "Novgorodská", + "Novobohdalecká", + "Novoborská", + "Novoborská", + "Novochuchelská", + "Novodvorská", + "Novodvorská", + "Novodvorská", + "Novodvorská", + "Novohradská", + "Novohrádecká", + "Novohrádecká", + "Novolhotská", + "Novolipanská", + "Novomeského", + "Novomeského", + "Novomlýnská", + "Novopacká", + "Novopetrovická", + "Novorossijská", + "Novosibřinská", + "Novostrašnická", + "Novosuchdolská", + "Novosvětská", + "Novotného Lávka", + "Novoveská", + "Novoveská", + "Novovysočanská", + "Novovysočanská", + "Novovysočanská", + "Novozámecká", + "Novozámecká", + "Novoškolská", + "Novoštěrboholská", + "Nová", + "Nová Cesta", + "Nová Kolonie", + "Nová Ves", + "Nová Ves", + "Nová Šárka", + "Novákovo Nám.", + "Novákovo Náměstí", + "Novákových", + "Nové Domy", + "Nové Dvory", + "Nové Mlýny", + "Nové Náměstí", + "Nového", + "Nový Lesík", + "Nový Svět", + "Nový Zlíchov", + "Nový Zlíchov", + "Nupacká", + "Nuselská", + "Nuselská", + "Nučická", + "Nušlova", + "Nymburská", + "Nábř. Edvarda Beneše", + "Nábř. Edvarda Beneše", + "Nábř. Edvarda Beneše", + "Nábř. Kapitána Jaroše", + "Nábř. Kapitána Jaroše", + "Nábřežní", + "Nábřeží Edvarda Beneše", + "Nábřeží Edvarda Beneše", + "Nábřeží Edvarda Beneše", + "Nábřeží Kapitána Jaroše", + "Nábřeží Ludvíka Svobody", + "Náchodská", + "Nádražní", + "Nádražní", + "Nádvorní", + "Náhorní", + "Nákupní", + "Nám. 14. Října", + "Nám. 25. Března", + "Nám. Antonína Pecáka", + "Nám. Barikád", + "Nám. Bořislavka", + "Nám. Bratří Synků", + "Nám. Chuchelských Bojovníků", + "Nám. Chuchleských Bojovníků", + "Nám. Curieových", + "Nám. Dr. V. Holého", + "Nám. Franze Kafky", + "Nám. Generála Kutlvašra", + "Nám. Hrdinů", + "Nám. I. P. Pavlova", + "Nám. Interbrigády", + "Nám. Jana Palacha", + "Nám. Jana Palacha", + "Nám. Jiřího Berana", + "Nám. Jiřího Z Lobkovic", + "Nám. Jiřího Z Poděbrad", + "Nám. Jiřího Z Poděbrad", + "Nám. Josefa Machka", + "Nám. Kinských", + "Nám. Kinských", + "Nám. Mezi Zahrádkami", + "Nám. Na Balabence", + "Nám. Na Farkáně", + "Nám. Na Lužinách", + "Nám. Na Santince", + "Nám. Na Stráži", + "Nám. Omladiny", + "Nám. Osvoboditelů", + "Nám. Padlých", + "Nám. Pod Kaštany", + "Nám. Pod Lípou", + "Nám. Prezidenta Masaryka", + "Nám. Před Bateriemi", + "Nám. Republiky", + "Nám. Smiřických", + "Nám. Svatopluka Čecha", + "Nám. Svobody", + "Nám. U Lva", + "Nám. U Lípy Svobody", + "Nám. U Svatého Jiří", + "Nám. Winstona Churchilla", + "Nám. Českého Povstání", + "Nám.Organizace Spojených Národ", + "Nám.Plukovníka Vlčka", + "Náměstí 14. Října", + "Náměstí 25. Března", + "Náměstí Antonína Pecáka", + "Náměstí Barikád", + "Náměstí Bořislavka", + "Náměstí Bořislavka", + "Náměstí Bratří Jandusů", + "Náměstí Bratří Synků", + "Náměstí Chuchelských Bojovníků", + "Náměstí Curieových", + "Náměstí Dr. Václava Holého", + "Náměstí Generála Kutlvašra", + "Náměstí Hrdinů", + "Náměstí I. P. Pavlova", + "Náměstí Interbrigády", + "Náměstí Jana Palacha", + "Náměstí Jana Palacha", + "Náměstí Jiřího Berana", + "Náměstí Jiřího Z Lobkovic", + "Náměstí Jiřího Z Poděbrad", + "Náměstí Jiřího Z Poděbrad", + "Náměstí Josefa Machka", + "Náměstí Junkových", + "Náměstí Kinských", + "Náměstí Kinských", + "Náměstí Kosmonautů", + "Náměstí Mezi Zahrádkami", + "Náměstí Míru", + "Náměstí Na Balabence", + "Náměstí Na Farkáně", + "Náměstí Na Lužinách", + "Náměstí Na Santince", + "Náměstí Na Stráži", + "Náměstí Omladiny", + "Náměstí Organizace Spojených Národů", + "Náměstí Osvoboditelů", + "Náměstí Padlých", + "Náměstí Plukovníka Vlčka", + "Náměstí Pod Emauzy", + "Náměstí Pod Kaštany", + "Náměstí Pod Lípou", + "Náměstí Prezidenta Masaryka", + "Náměstí Protifašistických Bojovníků", + "Náměstí Před Bateriemi", + "Náměstí Přátelství", + "Náměstí Republiky", + "Náměstí Republiky", + "Náměstí Smiřických", + "Náměstí Sv. Petra A Pavla", + "Náměstí Svatopluka Čecha", + "Náměstí Svobody", + "Náměstí U Lva", + "Náměstí U Lípy Svobody", + "Náměstí U Svatého Jiří", + "Náměstí Winstona Churchilla", + "Náměstí Zdenky Braunerové", + "Náměstí Českého Povstání", + "Náplavní", + "Náprstkova", + "Národní", + "Národní", + "Národní Obrany", + "Národních Hrdinů", + "Nárožní", + "Násirovo Nám.", + "Násirovo Náměstí", + "Nástrojářská", + "Návazná", + "Návršní", + "Návětrná", + "Návětrná", + "Názovská", + "Nýdecká", + "Nýrská", + "Nýřanská", + "Němčická", + "Něvská", + "Obchodní", + "Obchodní Nám.", + "Obchodní Náměstí", + "Obilní", + "Objízdná", + "Oblouková", + "Obora Hvězda", + "Oborská", + "Obrataňská", + "Obrovského", + "Obsiny", + "Obslužná", + "Obvodová", + "Obědovická", + "Obětí 6. Května", + "Obětí 6.Května", + "Ocelkova", + "Ocelářská", + "Ocelářská", + "Ocelíkova", + "Ochozská", + "Ochranovská", + "Od Rozcestí", + "Od Vysoké", + "Od Školy", + "Odboje", + "Odborů", + "Odbočná", + "Oddechová", + "Oddělená", + "Oderská", + "Odlehlá", + "Ohmova", + "Ohnivcova", + "Ohnišťanská", + "Ohradní", + "Ohradní", + "Ohradská", + "Ohradské Nám.", + "Ohradské Náměstí", + "Ohrobecká", + "Okenská", + "Okořská", + "Okrajní", + "Okrajová", + "Okrajová", + "Okrasná", + "Okrouhlická", + "Okrouhlíkova", + "Okrová", + "Okruhová", + "Okružní", + "Okružní", + "Okřínecká", + "Olbrachtova", + "Olbramovická", + "Oldřichova", + "Olešnická", + "Olešská", + "Olgy Havlové", + "Olivova", + "Olomoucká", + "Olympijská", + "Olšanská", + "Olšanské Nám.", + "Olšanské Náměstí", + "Olšovická", + "Olšová", + "Olštýnská", + "Omladinářů", + "Omská", + "Ondřejovská", + "Ondříčkova", + "Ondříčkova", + "Onšovecká", + "Opata Konráda", + "Opatovická", + "Opatovská", + "Opatovská", + "Opatřilka", + "Opatřilka", + "Opařanská", + "Oplanská", + "Opletalova", + "Opolská", + "Opočenská", + "Opočínská", + "Opravářská", + "Opuková", + "Opálkova", + "Opálová", + "Oravská", + "Ordovická", + "Orebitská", + "Orelská", + "Orlická", + "Ortenovo Náměstí", + "Osadní", + "Osamocená", + "Osecká", + "Osetá", + "Osická", + "Osiková", + "Osinalická", + "Osluněná", + "Osmého Listopadu", + "Osnická", + "Osnická", + "Osnická", + "Ostravická", + "Ostravská", + "Ostromečská", + "Ostrov Štvanice", + "Ostrovní", + "Ostrovského", + "Ostruženská", + "Ostružinová", + "Ostrá", + "Ostrčilovo Nám.", + "Ostrčilovo Náměstí", + "Ostředecká", + "Ostřicová", + "Osvobození", + "Osvětová", + "Otakara Vrby", + "Otakarova", + "Otavova", + "Otavova", + "Otavská", + "Otevřená", + "Otická", + "Otlíkovská", + "Otopašská", + "Otovická", + "Otradovická", + "Ottova", + "Otvovická", + "Oty Pavla", + "Otínská", + "Otěšínská", + "Ouholická", + "Ouhrabkova", + "Ovenecká", + "Ovenecká", + "Ovesná", + "Ovocná", + "Ovocnářská", + "Ovocný Trh", + "Ovsíková", + "Oválová", + "Ovčárská", + "Ovčí Hájek", + "Ořechová", + "Ořešská", + "Paběnická", + "Paběnická", + "Pacajevova", + "Paceřická", + "Pacholíkova", + "Pacovská", + "Paculova", + "Padovská", + "Pajerova", + "Pakoměřická", + "Palackého", + "Palackého Nám.", + "Palackého Náměstí", + "Palmetová", + "Palmovka", + "Paláskova", + "Pampelišková", + "Pancířova", + "Panelová", + "Panenky", + "Panenská", + "Pankrácké Náměstí", + "Panská", + "Panská Zahrada", + "Panský Dvůr", + "Panuškova", + "Paprsková", + "Papírenská", + "Papírníkova", + "Parašutistů", + "Pardubická", + "Park Přátelství", + "Parková", + "Parléřova", + "Parléřova", + "Parmská", + "Paroplavební", + "Partyzánská", + "Pasecká", + "Pasteurova", + "Pastevců", + "Patočkova", + "Patočkova", + "Patočkova", + "Pavelkova", + "Pavla Beneše", + "Pavla Švandy Ze Semčic", + "Pavlická", + "Pavlišovská", + "Pavlovická", + "Pavlovská", + "Pavlíkova", + "Pavrovského", + "Paříkova", + "Pařízkova", + "Pařížská", + "Pařížská", + "Paškova", + "Paťanka", + "Peceradská", + "Pecharova", + "Pechlátova", + "Pechlátova", + "Pecháčkova", + "Peckova", + "Pejevové", + "Pekařova", + "Pekařova", + "Pekařská", + "Pekárenská", + "Pekárkova", + "Pelclova", + "Pelechovská", + "Pelhřimovská", + "Pelikánova", + "Pelléova", + "Pelléova", + "Pelnářova", + "Pelušková", + "Pelyňková", + "Pelzova", + "Penízovková", + "Perlitová", + "Perlitová", + "Perlová", + "Pernerova", + "Pernerova", + "Peroutkova", + "Peroutkova", + "Peroutkova", + "Peroutkova", + "Perspektivní", + "Pertoldova", + "Perucká", + "Perunova", + "Perštejnská", + "Petra Bezruče", + "Petra Rezka", + "Petra Slezáka", + "Petrbokova", + "Petrklíčová", + "Petrohradská", + "Petrovická", + "Petrovská", + "Petrská", + "Petrské Nám.", + "Petrské Náměstí", + "Petráčkova", + "Petržílkova", + "Petržílova", + "Petýrkova", + "Petříkova", + "Petříkovská", + "Petřínská", + "Petřínská", + "Petřínské Sady", + "Petřínské Sady", + "Pevnostní", + "Pečárková", + "Pešinova", + "Peškova", + "Pešlova", + "Pešova", + "Peštukova", + "Pešákova", + "Picassova", + "Pickova", + "Pihelská", + "Pikovická", + "Pikrtova", + "Pilařská", + "Pilníkovská", + "Pilotů", + "Pilovská", + "Pilovská", + "Pilská", + "Pirinská", + "Pirnerova", + "Pitkovická", + "Pitterova", + "Pivcova", + "Pivovarnická", + "Pivovarská", + "Pivoňková", + "Pištěkova", + "Placina", + "Placina", + "Plajnerova", + "Plamínkové", + "Plaská", + "Platanová", + "Platnéřská", + "Platónova", + "Plavecká", + "Plavínová", + "Plačická", + "Plaňanská", + "Plevenská", + "Plečnikova", + "Plhovská", + "Plickova", + "Plkovská", + "Plojharova", + "Ploskovická", + "Ploučnická", + "Plovdivská", + "Plošná", + "Ploštilova", + "Plukovníka Mráze", + "Plumlovská", + "Plutova", + "Plynární", + "Plzeňská", + "Plzeňská", + "Plzeňská", + "Plzeňská", + "Plzeňská", + "Plánická", + "Pláničkova", + "Poberova", + "Pobočná", + "Pobořská", + "Poběžovická", + "Pobřežní", + "Pobřežní Cesta", + "Pod Akáty", + "Pod Altánem", + "Pod Altánem", + "Pod Andělkou", + "Pod Areálem", + "Pod Aritmou", + "Pod Ateliéry", + "Pod Bahnivkou", + "Pod Balkánem", + "Pod Barvířkou", + "Pod Bateriemi", + "Pod Baštami", + "Pod Belvederem", + "Pod Belárií", + "Pod Beránkem", + "Pod Beránkou", + "Pod Betání", + "Pod Bohdalcem I", + "Pod Bohdalcem I", + "Pod Bohdalcem Ii", + "Pod Brentovou", + "Pod Bruskou", + "Pod Buďánkou", + "Pod Bání", + "Pod Březinou", + "Pod Chaloupkami", + "Pod Chodovem", + "Pod Cihelnou", + "Pod Cihelnou", + "Pod Cukrákem", + "Pod Císařkou", + "Pod Dlážděnkou", + "Pod Domky", + "Pod Drinopolem", + "Pod Dráhou", + "Pod Duby", + "Pod Dvorem", + "Pod Dálnicí", + "Pod Děkankou", + "Pod Děkankou", + "Pod Děvínem", + "Pod Farou", + "Pod Fialkou", + "Pod Formankou", + "Pod Fořtem", + "Pod Garážemi", + "Pod Habrovkou", + "Pod Habrovou", + "Pod Haltýřem", + "Pod Harfou", + "Pod Havlínem", + "Pod Havránkou", + "Pod Havránkou", + "Pod Hliništěm", + "Pod Hloubětínskou Zastávkou", + "Pod Hláskem", + "Pod Homolkou", + "Pod Hotelem", + "Pod Hořavkou", + "Pod Hrachovkou", + "Pod Hradbami", + "Pod Hradem", + "Pod Hranicí", + "Pod Hrází", + "Pod Hvězdou", + "Pod Hvězdárnou", + "Pod Hvězdárnou", + "Pod Hybšmankou", + "Pod Hájem", + "Pod Hájkem", + "Pod Hájovnou", + "Pod Hřbitovem", + "Pod Hřištěm", + "Pod Jalovým Dvorem", + "Pod Jankovem", + "Pod Jarovem", + "Pod Javory", + "Pod Jiráskovou Čtvrtí", + "Pod Juliskou", + "Pod Kamínkou", + "Pod Kapličkou", + "Pod Kapličkou", + "Pod Karlovarskou Silnicí", + "Pod Karlovem", + "Pod Kavalírkou", + "Pod Kaštany", + "Pod Kaštany", + "Pod Kesnerkou", + "Pod Kladenskou Silnicí", + "Pod Klamovkou", + "Pod Klapicí", + "Pod Klaudiánkou", + "Pod Klikovkou", + "Pod Kopcem", + "Pod Kostelem", + "Pod Kotlaskou", + "Pod Kotlářkou", + "Pod Kotlářkou", + "Pod Kotlářkou", + "Pod Krejcárkem", + "Pod Krocínkou", + "Pod Královkou", + "Pod Krčským Lesem", + "Pod Kulturním Domem", + "Pod Kynclovkou", + "Pod Křížem", + "Pod Křížkem", + "Pod Labuťkou", + "Pod Lahovskou", + "Pod Lesem", + "Pod Lesíkem", + "Pod Letištěm", + "Pod Lečí", + "Pod Lipami", + "Pod Lipkami", + "Pod Lisem", + "Pod Lisem", + "Pod Lochkovem", + "Pod Lomem", + "Pod Lysinami", + "Pod Lázní", + "Pod Marjánkou", + "Pod Markétou", + "Pod Martinem", + "Pod Meliškou", + "Pod Mlýnkem", + "Pod Mohylou", + "Pod Mostem", + "Pod Napětím", + "Pod Nouzovem", + "Pod Novou Školou", + "Pod Novým Lesem", + "Pod Novým Lesem", + "Pod Nuselskými Schody", + "Pod Náměstím", + "Pod Náplavkou", + "Pod Náplavkou", + "Pod Náspem", + "Pod Návsí", + "Pod Oborou", + "Pod Ovčínem", + "Pod Ořechovkou", + "Pod Palatou", + "Pod Palírkou", + "Pod Parukářkou", + "Pod Paťankou", + "Pod Paťankou", + "Pod Pekařkou", + "Pod Pekárnami", + "Pod Petřinami", + "Pod Plynojemem", + "Pod Plynojemem", + "Pod Plynojemem", + "Pod Plískavou", + "Pod Poštou", + "Pod Pramenem", + "Pod Prodejnou", + "Pod Průsekem", + "Pod Písečnou", + "Pod Přehradou", + "Pod Přesypem", + "Pod Radnicí", + "Pod Rapidem", + "Pod Rapidem", + "Pod Rapidem", + "Pod Remízkem", + "Pod Rovinou", + "Pod Rozvodnou", + "Pod Rybníkem", + "Pod Rybníčkem", + "Pod Sady", + "Pod Salabkou", + "Pod Sirénou", + "Pod Skalkou", + "Pod Skalou", + "Pod Sklenářkou", + "Pod Slovany", + "Pod Smetankou", + "Pod Sokolovnou", + "Pod Soutratím", + "Pod Spalovnou", + "Pod Spiritkou", + "Pod Spravedlností", + "Pod Srázem", + "Pod Stadiony", + "Pod Stanicí", + "Pod Starou Školou", + "Pod Starákem", + "Pod Statky", + "Pod Strašnickou Vinicí", + "Pod Strojírnami", + "Pod Strání", + "Pod Studánkou", + "Pod Stupni", + "Pod Stárkou", + "Pod Stárkou", + "Pod Stírkou", + "Pod Svahem", + "Pod Sychrovem I", + "Pod Sychrovem I", + "Pod Sychrovem I", + "Pod Sychrovem Ii", + "Pod Sídlištěm", + "Pod Terasami", + "Pod Terebkou", + "Pod Topoly", + "Pod Tratí", + "Pod Turnovskou Tratí", + "Pod Turnovskou Tratí", + "Pod Táborem", + "Pod Táborem", + "Pod Třebešínem", + "Pod Třešněmi", + "Pod Třešňovkou", + "Pod Urnovým Hájem", + "Pod Valem", + "Pod Vartou", + "Pod Vavřincem", + "Pod Velkým Hájem", + "Pod Viaduktem", + "Pod Vidoulí", + "Pod Viktorkou", + "Pod Vilami", + "Pod Vinicemi", + "Pod Vinicí", + "Pod Vinohradem", + "Pod Višňovkou", + "Pod Vlachovkou", + "Pod Vlastním Krovem", + "Pod Vlkem", + "Pod Vodojemem", + "Pod Vodovodem", + "Pod Vodárenskou Věží", + "Pod Vrchem", + "Pod Vrcholem", + "Pod Vrstevnicí", + "Pod Vrškem", + "Pod Vrškem", + "Pod Vršovickou Vodárnou I", + "Pod Vršovickou Vodárnou Ii", + "Pod Vršovickou Vodárnou Iii", + "Pod Vsí", + "Pod Vyhlídkou", + "Pod Vysokou", + "Pod Vysokou Mezí", + "Pod Vysílačkou", + "Pod Vyšehradem", + "Pod Václavem", + "Pod Vítkovem", + "Pod Výtopnou", + "Pod Výšinkou", + "Pod Větrolamem", + "Pod Větrovem", + "Pod Věží", + "Pod Zahradami", + "Pod Zahrádkami", + "Pod Zastávkou", + "Pod Zatáčkou", + "Pod Zbuzany", + "Pod Zemankou", + "Pod Zličínem", + "Pod Zvonařkou", + "Pod Zvoničkou", + "Pod Zámečkem", + "Pod Závěrkou", + "Pod Útesy", + "Pod Čertovou Skalou", + "Pod Čihadlem", + "Pod Čimickým Hájem", + "Pod Šancemi", + "Pod Školou", + "Pod Šmukýřkou", + "Pod Špejcharem", + "Pod Špitálem", + "Pod Štěpem", + "Pod Žvahovem", + "Podbabská", + "Podbabská", + "Podbělohorská", + "Podbělová", + "Podchýšská", + "Podedvorská", + "Podhajská Pole", + "Podholí", + "Podhorská", + "Podhořská", + "Podivínská", + "Podjavorinské", + "Podjezd", + "Podkovářská", + "Podkrkonošská", + "Podkrkonošských Tkalců", + "Podle Kačerova", + "Podle Lomu", + "Podle Lomu", + "Podle Náhonu", + "Podle Náhonu", + "Podle Sadů", + "Podle Trati", + "Podlesek", + "Podleská", + "Podlesní", + "Podlešínská", + "Podlibská", + "Podlipného", + "Podlišovská", + "Podlužanská", + "Podléšková", + "Podnikatelská", + "Podnádražní", + "Podohradská", + "Podolanská", + "Podolská", + "Podolská", + "Podolské Nábř.", + "Podolské Nábřeží", + "Podolské Schody", + "Podpěrova", + "Podskalská", + "Podsychrovská", + "Podvinný Mlýn", + "Podvinný Mlýn", + "Podzámecká", + "Podéšťova", + "Poděbradova", + "Poděbradova", + "Poděbradská", + "Poděbradská", + "Poděbradská", + "Podůlší", + "Pohledná", + "Pohnertova", + "Pohořelec", + "Pohořelec", + "Pokojná", + "Pokorného", + "Pokřivená", + "Polabská", + "Polabská", + "Polaneckého", + "Polední", + "Polední", + "Polenská", + "Polepská", + "Poleradská", + "Polesná", + "Polešovická", + "Politických Vězňů", + "Poličanská", + "Poljanovova", + "Polní", + "Polovnická", + "Polská", + "Polygrafická", + "Polákova", + "Poláčkova", + "Políkenská", + "Polívkova", + "Pomezní", + "Pomněnková", + "Pomořanská", + "Ponrepova", + "Poplužní", + "Popovická", + "Popovova", + "Poslední", + "Pospíchalova", + "Pospíšilova", + "Postlova", + "Postranní", + "Postupická", + "Postřekovská", + "Postřižínská", + "Postřižínská", + "Potocká", + "Potoční", + "Pouchova", + "Poupětova", + "Poustka", + "Povltavská", + "Povltavská", + "Povltavská", + "Povodňová", + "Pozdeňská", + "Poznaňská", + "Počeradská", + "Počernická", + "Počernická", + "Počátecká", + "Počátecká", + "Poříčanská", + "Poříčanská", + "Poříčská", + "Pošepného Nám.", + "Pošepného Náměstí", + "Poštovská", + "Požárnická", + "Pplk. Nováčka", + "Pplk. Sochora", + "Prachatická", + "Prachnerova", + "Prachovická", + "Prachovská", + "Pramenná", + "Pramenná", + "Pravoúhlá", + "Pravská", + "Pravá", + "Prašná", + "Pražská", + "Pražského", + "Pražského Povstání", + "Pražský Okruh", + "Pražákovská", + "Prefátova", + "Preislerova", + "Preláta", + "Prelátská", + "Preslova", + "Primátorská", + "Probluzská", + "Proboštská", + "Procházkova", + "Prodloužená", + "Prokofjevova", + "Prokopka", + "Prokopova", + "Prokopovo Nám.", + "Prokopovo Náměstí", + "Prokopových", + "Prokopská", + "Prokopské Údolí", + "Prokopské Údolí", + "Prorektorská", + "Prosecká", + "Prosecká", + "Prosecká", + "Prosincová", + "Prosluněná", + "Prosná", + "Prostřední", + "Proti Proudu", + "Protilehlá", + "Protivínská", + "Proutěná", + "Prouzova", + "Provaznická", + "Provozní", + "Prunéřovská", + "Prusická", + "Prusíkova", + "Prušánecká", + "Prvního Pluku", + "Prvního Pluku", + "Prvomájová", + "Prácheňská", + "Práčská", + "Průběžná", + "Průchodní", + "Průchova", + "Průhledová", + "Průhonek", + "Průhonek", + "Průhonická", + "Průhonská", + "Průjezdná", + "Průmyslová", + "Průmyslová", + "Průmyslová", + "Průmyslová", + "Průtažní", + "Průčelní", + "Průškova", + "Psohlavců", + "Pstružná", + "Psárská", + "Ptáčnická", + "Puchmajerova", + "Puchmajerova", + "Pujmanové", + "Pujmanové", + "Pujmanové", + "Purkrabská", + "Purkyňova", + "Putimská", + "Pučova", + "Puškinovo Nám.", + "Puškinovo Náměstí", + "Pyšelská", + "Pálavská", + "Pálkařská", + "Pámelníková", + "Pánkova", + "Pátkova", + "Pávovské Náměstí", + "Písecká", + "Píseckého", + "Písečná", + "Pískařská", + "Pískovcová", + "Pískovna", + "Písková", + "Písnická", + "Písnická", + "Písnické Zahrady", + "Písčitá", + "Píškova", + "Píšovická", + "Pöslova", + "Púchovská", + "Púchovská", + "Pýchavková", + "Pýrová", + "Pěnkaví", + "Pěstitelská", + "Pětidomí", + "Pětipeského", + "Pěší", + "Přecechtělova", + "Přechodní", + "Před Cibulkami", + "Před Dráhou", + "Před Mosty", + "Před Nádražím", + "Před Oborou", + "Před Rybníkem", + "Před Skalkami I", + "Před Skalkami Ii", + "Před Skálou", + "Před Sokolovnou", + "Před Tratí", + "Před Ústavem", + "Předbořská", + "Předměřická", + "Přední", + "Předpolní", + "Předposlední", + "Předvoje", + "Předvoje", + "Předškolní", + "Přeletová", + "Přeloučská", + "Přemyslova", + "Přemyslovská", + "Přemyslovská", + "Přemyšlenská", + "Přerušená", + "Přesličková", + "Přespolní", + "Přetlucká", + "Přeučilova", + "Převoznická", + "Přezletická", + "Přeštická", + "Přeštínská", + "Přeťatá", + "Při Hranici", + "Při Hranici", + "Při Trati", + "Přibyslavská", + "Přibíkova", + "Přistoupimská", + "Přádova", + "Přátelství", + "Příborská", + "Příbramská", + "Příběnická", + "Příchovická", + "Přídolská", + "Příkrá", + "Přílepská", + "Přímské Nám.", + "Přímské Náměstí", + "Přímá", + "Přímětická", + "Přípotoční", + "Přípřežní", + "Přírodní", + "Přístavní", + "Přívorská", + "Přívozní", + "Příčka", + "Příčná", + "Pšeničná", + "Pšenčíkova", + "Pšovanská", + "Pštrossova", + "Půdova", + "Půlkruhová", + "Půlnoční", + "Půtova", + "R.A. Dvorského", + "Rabasova", + "Rabyňská", + "Rackova", + "Rackova Zahrada", + "Radbuzská", + "Radechovská", + "Radešovská", + "Radhošťská", + "Radhošťská", + "Radimova", + "Radimovická", + "Radimská", + "Radiová", + "Radiová", + "Radistů", + "Radkovská", + "Radlická", + "Radlická", + "Radlická", + "Radnické Schody", + "Radomská", + "Radonická", + "Radostavická", + "Radostná", + "Radotínská", + "Radotínská", + "Radouňova", + "Radouňova", + "Radouňova", + "Radova", + "Radovská", + "Radošovická", + "Radvanická", + "Radúzova", + "Radčina", + "Radějovská", + "Raffaelova", + "Raichlova", + "Raisova", + "Rajhradská", + "Rajmonova", + "Rajská", + "Rakousova", + "Rakovnická", + "Rakovského", + "Randova", + "Ranská", + "Ratajova", + "Ratajská", + "Ratbořská", + "Ratibořická", + "Ratibořská", + "Ratibořská", + "Ravennská", + "Račická", + "Račiněveská", + "Rašilovova", + "Rašova", + "Rašovická", + "Rašovská", + "Rašínovo Nábř.", + "Rašínovo Nábř.", + "Rašínovo Nábřeží", + "Rašínovo Nábřeží", + "Rašínská", + "Ražická", + "Reinerova", + "Rejchova", + "Rejskova", + "Rekreační", + "Rektorská", + "Rembrandtova", + "Remízková", + "Renoirova", + "Resslova", + "Revoluce", + "Revoluční", + "Revoluční", + "Rezedová", + "Rezlerova", + "Rečkova", + "Richtrova", + "Riegrova", + "Riegrovy Sady", + "Rilská", + "Ringhofferova", + "Ringhofferova", + "Rižská", + "Roblínská", + "Rochovská", + "Rochovská", + "Rodopská", + "Rodovská", + "Rodvinovská", + "Roentgenova", + "Rohanovská", + "Rohanské Nábřeží", + "Rohanský Ostrov", + "Rohatecká", + "Rohenická", + "Rohlovská", + "Rohová", + "Rohozecká", + "Rohožnická", + "Roháčova", + "Roithova", + "Rojická", + "Roklova", + "Rokycanova", + "Rokycanská", + "Rokytnická", + "Rokytná", + "Rolnická", + "Rolní", + "Romaina Rollanda", + "Romana Blahníka", + "Ronalda Reagana", + "Ronešova", + "Ronkova", + "Ronovská", + "Rooseveltova", + "Rorýsová", + "Rosečská", + "Rosická", + "Rostislavova", + "Rostoklatská", + "Rostovská", + "Rotavská", + "Rotenská", + "Roudnická", + "Rousovická", + "Rousínovská", + "Rovenská", + "Rovnoběžná", + "Rovná", + "Rozdělená", + "Rozdělovská", + "Rozhovická", + "Rozkošného", + "Rozkošská", + "Rozmarýnová", + "Rozrazilová", + "Roztocká", + "Roztylská", + "Roztylské Náměstí", + "Roztylské Sady", + "Rozvadovská", + "Rozvodova", + "Rozvojová", + "Rozárčina", + "Rozýnova", + "Rozšířená", + "Ročovská", + "Rošických", + "Roškotova", + "Rošovická", + "Rožmberská", + "Rožmitálská", + "Rožnovská", + "Rožďalovická", + "Rtyňská", + "Rubensova", + "Rubeška", + "Rubešova", + "Rubličova", + "Rubínová", + "Rudečská", + "Rudníkovská", + "Rudolfa Holeky", + "Rudoltická", + "Rudoltická", + "Rujanská", + "Rumburská", + "Rumunská", + "Rumunská", + "Ruprechtická", + "Ruská", + "Ruská", + "Ruzyňská", + "Ruzyňská", + "Ruzyňské Schody", + "Ružinovská", + "Rybalkova", + "Rybalkova", + "Rybalkova", + "Rybničná", + "Rybná", + "Rybova", + "Rybářská", + "Rybízová", + "Rychnovská", + "Rychtáře Petříka", + "Rychtáře Šimona", + "Rychtářská", + "Rypkova", + "Rytířova", + "Rytířská", + "Ryzcová", + "Ryzlinková", + "Ryšánkova", + "Rájecká", + "Rámová", + "Rápošovská", + "Rážova", + "Révová", + "Rýmařovská", + "Rýnská", + "Rýznerova", + "Růženínová", + "Růženínská", + "Růženínská", + "Růžová", + "S. K. Neumanna", + "Sabinova", + "Sadařská", + "Sadová", + "Sadská", + "Sadská", + "Sady Bratří Čapků", + "Safírová", + "Salabova", + "Salačova", + "Salmovská", + "Salvátorská", + "Samcova", + "Samohelova", + "Samota U Podleského Rybníka", + "Sarajevská", + "Saratovská", + "Sartoriova", + "Sasanková", + "Saská", + "Satalická", + "Saturnova", + "Saudkova", + "Sauerova", + "Saveljevova", + "Savojská", + "Sazečská", + "Sazečská", + "Sazovická", + "Sbíhavá I", + "Sbíhavá Ii", + "Schnirchova", + "Schodišťová", + "Schodová", + "Schoellerova", + "Schoellerova", + "Schulhoffova", + "Schwaigerova", + "Schwarzenberská", + "Schöfflerova", + "Sdružení", + "Sechterova", + "Sedlecká", + "Sedlovická", + "Sedloňovská", + "Sedlčanská", + "Sedmidomky", + "Sedmidomky", + "Sedmikrásková", + "Sedmnáctého Listopadu", + "Seidlova", + "Seifertova", + "Sekaninova", + "Sekeřická", + "Sekorova", + "Selmická", + "Selská", + "Selských Baterií", + "Semanského", + "Semická", + "Semilská", + "Semilská", + "Seminární", + "Seminářská", + "Seminářská Zahrada", + "Semonická", + "Semtínská", + "Semčická", + "Sendražická", + "Senegalská", + "Senohrabská", + "Senovážná", + "Senovážné Nám.", + "Senovážné Náměstí", + "Senožatská", + "Sestupná", + "Sestupná", + "Setbová", + "Sevastopolská", + "Severní I", + "Severní Ii", + "Severní Iii", + "Severní Iv", + "Severní Ix", + "Severní V", + "Severní Vi", + "Severní Vii", + "Severní Viii", + "Severní X", + "Severní Xi", + "Severovýchodní I", + "Severovýchodní Ii", + "Severovýchodní Iii", + "Severovýchodní Iv", + "Severovýchodní V", + "Severovýchodní Vi", + "Severozápadní I", + "Severozápadní Ii", + "Severozápadní Iii", + "Severozápadní Iv", + "Severozápadní V", + "Severozápadní Vi", + "Severýnova", + "Sevřená", + "Seydlerova", + "Sezemická", + "Sezemínská", + "Sezimova", + "Sečská", + "Sibeliova", + "Sibiřské Nám.", + "Sibiřské Náměstí", + "Sicherova", + "Sichrovského", + "Siemensova", + "Silurská", + "Sinkulova", + "Sinkulova", + "Sitteho", + "Siwiecova", + "Skalecká", + "Skalnatá", + "Skalnická", + "Skalní", + "Skalská", + "Skaláků", + "Skandinávská", + "Skandinávská", + "Skautská", + "Sklenská", + "Skloněná", + "Sklářská", + "Skokanská", + "Skorkovská", + "Skorkovská", + "Skotská", + "Skořepka", + "Skořicová", + "Skryjská", + "Skupova", + "Skuteckého", + "Skálova", + "Skřivanova", + "Skřivanská", + "Skřivánčí", + "Sladkovského Nám.", + "Sladkovského Náměstí", + "Sladovnická", + "Slancova", + "Slaná", + "Slapská", + "Slatinová", + "Slatinská", + "Slatiny", + "Slatiňanská", + "Slavatova", + "Slaviborské Nám.", + "Slaviborské Náměstí", + "Slavická", + "Slavičí", + "Slavičínská", + "Slavníkova", + "Slavojova", + "Slavonická", + "Slavíkova", + "Slavíkova", + "Slavíkova", + "Slavínského", + "Slavíčkova", + "Slavětínská", + "Slepá I", + "Slepá Ii", + "Slezanů", + "Slezská", + "Slezská", + "Sliačská", + "Sliačská", + "Slibná", + "Slinková", + "Slivenecká", + "Slovanský Ostrov", + "Slovačíkova", + "Slovenská", + "Slovenská", + "Slovinská", + "Slunečnicová", + "Slunečná", + "Sluneční", + "Sluneční Nám.", + "Sluneční Náměstí", + "Slunná", + "Sluštická", + "Služeb", + "Služeb", + "Služská", + "Sládkova", + "Sládkovičova", + "Slámova", + "Slánská", + "Slávy Horníka", + "Slévačská", + "Slévačská", + "Slévačská", + "Slídová", + "Slívová", + "Smaragdová", + "Smetanovo Nábř.", + "Smetanovo Nábřeží", + "Smetáčkova", + "Smidarská", + "Smikova", + "Smiřická", + "Smiřického", + "Smolenská", + "Smolkova", + "Smolíkova", + "Smotlachova", + "Smotlachova", + "Smrková", + "Smrčinská", + "Smržovská", + "Smržová", + "Smíchovská", + "Smíchovská", + "Smíchovská", + "Smírná", + "Snopkova", + "Sněmovní", + "Sněženková", + "Sněžná", + "Sobolákova", + "Soborská", + "Sobotecká", + "Sobínská", + "Soběslavova", + "Soběslavská", + "Sobětická", + "Sobětušská", + "Soběšínská", + "Sochařská", + "Socháňova", + "Sodomkova", + "Sofijské Nám.", + "Sofijské Náměstí", + "Sojkovská", + "Sojovická", + "Sojčí", + "Sojčí", + "Sokolovská", + "Sokolovská", + "Sokolovská", + "Sokolovská", + "Sokolská", + "Sokratova", + "Solidarity", + "Solnická", + "Solná", + "Sopotská", + "Sosnovecká", + "Souběžná I", + "Souběžná Ii", + "Souběžná Iii", + "Souběžná Iv", + "Soudní", + "Soukalova", + "Soukenická", + "Soumarská", + "Sousední", + "Sousední", + "Sousedská", + "Sousedíkova", + "Soustružnická", + "Soustružnická", + "Souvratní", + "Součkova", + "Sovenická", + "Sovova", + "Sovákova", + "Soví Vršek", + "Spinozova", + "Spiritka", + "Splavná", + "Spodní", + "Spojařů", + "Spojenců", + "Spojená", + "Spojná", + "Spojovací", + "Spojovací", + "Spojovací", + "Spojovací", + "Spojová", + "Společná", + "Spolská", + "Spolupráce", + "Sportovců", + "Sportovců", + "Sportovní", + "Spotřebitelská", + "Spořická", + "Spořilovská", + "Spytihněvova", + "Spádná", + "Spádová", + "Spálená", + "Spálená", + "Spálený Mlýn", + "Srbova", + "Srbská", + "Srbínská", + "Srnečkova", + "Srnčí", + "Srnčí", + "Srpnová", + "Srázná", + "Stachova", + "Stadická", + "Stadionová", + "Stadiónová", + "Stallichova", + "Stamicova", + "Staniční", + "Starobylá", + "Starochodovská", + "Starochuchelská", + "Starodejvická", + "Starodubečská", + "Starodvorská", + "Staroklánovická", + "Starokolínská", + "Starokošířská", + "Starolázeňská", + "Staromlýnská", + "Staromodřanská", + "Staroměstské Nám.", + "Staroměstské Náměstí", + "Staropacká", + "Staropramenná", + "Starostrašnická", + "Starostřešovická", + "Starosuchdolská", + "Staroújezdská", + "Staročeská", + "Stará Cesta", + "Stará Náves", + "Stará Obec", + "Stará Spojovací", + "Stará Stodůlecká", + "Staré Nám.", + "Staré Náměstí", + "Staré Zámecké Schody", + "Staré Zámecké Schody", + "Starého", + "Starý Lis", + "Statenická", + "Statková", + "Stavbařů", + "Stavební", + "Stavitelská", + "Stavovská", + "Staňkova", + "Staňkovka", + "Staňkovská", + "Stehlíkova", + "Steinerova", + "Stejskalova", + "Stiessova", + "Stinkovská", + "Stochovská", + "Stodůlecká", + "Stojická", + "Stoličkova", + "Stoliňská", + "Stoupající", + "Stoupající", + "Stradonická", + "Strahovská", + "Strahovské Nádvoří", + "Strakatého", + "Strakonická", + "Strakonická", + "Strakonická", + "Strakonická", + "Strakonická", + "Strakonická", + "Strakošová", + "Strančická", + "Stratovská", + "Strašnická", + "Strašnická", + "Strašovská", + "Strašínská", + "Strmá", + "Strmý Vrch", + "Strnadova", + "Strnady", + "Strojická", + "Strojnická", + "Strojírenská", + "Stromovka", + "Stromovka", + "Stropnická", + "Stropnická", + "Stropnická", + "Strossmayerovo Nám.", + "Strossmayerovo Náměstí", + "Strouhalova", + "Stroupežnického", + "Struhařovská", + "Strunkovská", + "Stružky", + "Stružná", + "Strážkovická", + "Strážnická", + "Strážní", + "Strážovská", + "Stržná", + "Studenecká", + "Studentská", + "Studená", + "Studnická", + "Studničkova", + "Studniční", + "Studánková", + "Stulíková", + "Stupická", + "Stupkova", + "Stupská", + "Stupňová", + "Stádlecká", + "Stárkova", + "Stýblova", + "Střední", + "Středohorská", + "Středová", + "Střekovská", + "Střelecký Ostrov", + "Střelečská", + "Střelničná", + "Střelničná", + "Střemchová", + "Střešovická", + "Střešovická", + "Střimelická", + "Stříbrná", + "Stříbrského", + "Stříbrského", + "Střížkovská", + "Střížkovská", + "Střížkovská", + "Suchardova", + "Suchdolská", + "Suchdolská", + "Suchdolská", + "Suchdolské Nám.", + "Suchdolské Náměstí", + "Suchý Vršek", + "Sudkova", + "Sudoměřská", + "Sudějovická", + "Sukova", + "Sulanského", + "Sulická", + "Sulická", + "Sulova", + "Sulovická", + "Sumova", + "Suppého", + "Suttnerové", + "Sušická", + "Sušilova", + "Svahová", + "Svatavina", + "Svatojánská", + "Svatoplukova", + "Svatoslavova", + "Svatovítská", + "Svatovítská", + "Svatoňovická", + "Svažitá", + "Svijanská", + "Svitavská", + "Svitákova", + "Svobodova", + "Svobodova", + "Svojetická", + "Svojsíkova", + "Svojšická", + "Svojšovická", + "Svornosti", + "Svratecká", + "Svárovská", + "Svátkova", + "Svážná", + "Svépomoci", + "Svépomocná", + "Svépravická", + "Svépravická", + "Svídnická", + "Svěceného", + "Světická", + "Světova", + "Světská", + "Sychrovská", + "Symfonická", + "Synkovická", + "Synkovská", + "Syrská", + "Sádky", + "Sádovská", + "Sámova", + "Sárská", + "Sárská", + "Sárská", + "Sázavská", + "Sáňkařská", + "Sídlištní", + "Sídlištní", + "Sídliště", + "Súdánská", + "Sýkorčí", + "Sýkovecká", + "Tachlovická", + "Tachovská", + "Tachovské Nám.", + "Tachovské Náměstí", + "Tadrova", + "Tajovského", + "Talafúsova", + "Talichova", + "Talmberská", + "Tanvaldská", + "Tasovská", + "Tatarkova", + "Tatranská", + "Tauerova", + "Tauferova", + "Taussigova", + "Tavolníková", + "Tařicová", + "Taškentská", + "Technická", + "Technologická", + "Tehovská", + "Tejnická", + "Tejnka", + "Telčská", + "Templová", + "Tenisová", + "Teplická", + "Teplárenská", + "Teplárenská", + "Terasovitá", + "Tererova", + "Terezínská", + "Terronská", + "Tesaříkova", + "Tetínská", + "Theinova", + "Thomayerova", + "Thunovská", + "Thurnova", + "Thákurova", + "Thámova", + "Tibetská", + "Tichnova", + "Tichnova", + "Tichonická", + "Tichá", + "Tichého", + "Tigridova", + "Tikovská", + "Tilleho Nám.", + "Tilleho Náměstí", + "Tilschové", + "Tiskařská", + "Tismická", + "Tišická", + "Tlumačovská", + "Tlustého", + "Tobrucká", + "Tolstého", + "Tomanova", + "Tomická", + "Tomkova", + "Tomsova", + "Tomáškova", + "Tomášská", + "Tomíčkova", + "Topasová", + "Topolová", + "Toruňská", + "Toulovská", + "Toušeňská", + "Toušická", + "Toužimská", + "Toužimská", + "Tovarova", + "Tovačovského", + "Tovární", + "Točenská", + "Točitá", + "Trabantská", + "Trachtova", + "Trampotova", + "Travnatá", + "Travná", + "Travná", + "Trenčínská", + "Trhanovské Náměstí", + "Trmická", + "Trnavská", + "Trnavská", + "Trnitá", + "Trnkovo Nám.", + "Trnkovo Náměstí", + "Trnková", + "Trnovanská", + "Trní", + "Trocnovská", + "Troilova", + "Trojanova", + "Trojanův Mlýn", + "Trojdílná", + "Trojická", + "Trojmezní", + "Trojmezní", + "Trojská", + "Trojská", + "Trojská", + "Trojská", + "Troskovická", + "Trousilova", + "Truhlářka", + "Truhlářova", + "Truhlářská", + "Trutnovská", + "Tryskovická", + "Tryskovická", + "Trytova", + "Trávnická", + "Trávníčkova", + "Tréglova", + "Tržiště", + "Tuchoměřická", + "Tuchorazská", + "Tuchotická", + "Tuháňská", + "Tuklatská", + "Tulešická", + "Tulipánová", + "Tulkova", + "Tulská", + "Tunelářů", + "Tuniská", + "Tupolevova", + "Turgeněvova", + "Turistická", + "Turkmenská", + "Turkovická", + "Turkovská", + "Turnovská", + "Turnovského", + "Turská", + "Turínská", + "Tusarova", + "Tuřická", + "Tušimická", + "Tužebníková", + "Tvrdonická", + "Tvrdého", + "Tychonova", + "Tylišovská", + "Tylovická", + "Tylovo Nám.", + "Tylovo Náměstí", + "Tymiánová", + "Tyrkysová", + "Tyršova", + "Táboritská", + "Táborská", + "Tádžická", + "Táhlá", + "Tálínská", + "Türkova", + "Týmlova", + "Týmlova", + "Týn", + "Týnecká", + "Týnská", + "Týnská Ulička", + "Týřovická", + "Tělovýchovná", + "Těšnov", + "Těšovická", + "Těšíkova", + "Těšínská", + "Třanovského", + "Třebanická", + "Třebechovická", + "Třebenická", + "Třebešovská", + "Třebihošťská", + "Třebohostická", + "Třebonická", + "Třeboradická", + "Třebotovská", + "Třeboňská", + "Třebízského", + "Třebějická", + "Třebětínská", + "Třešňová", + "Třešňová", + "Třešňová", + "Třinecká", + "Třtinová", + "Třídomá", + "Třístoličná", + "Tůmova", + "U Akademie", + "U Akátů", + "U Albrechtova Vrchu", + "U Andělky", + "U Arborky", + "U Bakaláře", + "U Balabenky", + "U Bazénu", + "U Bažantnice", + "U Berounky", + "U Beránky", + "U Besedy", + "U Blaženky", + "U Boroviček", + "U Botiče", + "U Botiče", + "U Božích Bojovníků", + "U Branek", + "U Bruských Kasáren", + "U Brusnice", + "U Brusnice", + "U Bubce", + "U Bulhara", + "U Bulhara", + "U Bílého Mlýnku", + "U Břehu", + "U Chaloupek", + "U Chmelnice", + "U Chodovského Hřbitova", + "U Cibulky", + "U Cihelny", + "U Cikánky", + "U Cukrovaru", + "U Císařské Cesty", + "U Dejvického Rybníčku", + "U Demartinky", + "U Divadla", + "U Divadla", + "U Dobešky", + "U Dobráků", + "U Dobráků", + "U Dobřenských", + "U Domu Služeb", + "U Drahaně", + "U Druhé Baterie", + "U Druhé Baterie", + "U Drupolu", + "U Družstev", + "U Družstva Ideál", + "U Družstva Klid", + "U Družstva Práce", + "U Družstva Práce", + "U Družstva Repo", + "U Družstva Tempo", + "U Družstva Život", + "U Dráhy", + "U Dráhy", + "U Drážky", + "U Drůbežárny", + "U Dubečské Tvrze", + "U Dubu", + "U Dvojdomů", + "U Dvora", + "U Dvou Srpů", + "U Dálnice", + "U Dívčích Hradů", + "U Dívčích Hradů", + "U Děkanky", + "U Dělnického Cvičiště", + "U Dětského Domova", + "U Dětského Hřiště", + "U Elektry", + "U Elektry", + "U Elektrárny", + "U Floriána", + "U Fořta", + "U Gabrielky", + "U Garáží", + "U Golfu", + "U Gymnázia", + "U Habeše", + "U Habrovky", + "U Hadovky", + "U Harfy", + "U Hasičské Zbrojnice", + "U Hasičské Zbrojnice", + "U Havlíčkových Sadů", + "U Hellady", + "U Hercovky", + "U Hliníku", + "U Hodin", + "U Homolky", + "U Hostavického Potoka", + "U Hostivařského Nádraží", + "U Hostivařského Nádraží", + "U Hotelu", + "U Hranic", + "U Hrnčířského Rybníka", + "U Hrocha", + "U Hrušky", + "U Hráze", + "U Hudební Školy", + "U Hvozdu", + "U Hvězdy", + "U Hvězdy", + "U Háje", + "U Hájku", + "U Hájovny", + "U Házů", + "U Hřbitovů", + "U Hřiště", + "U Invalidovny", + "U Jamské", + "U Jankovky", + "U Javoru", + "U Jedličkova Ústavu", + "U Jednoty", + "U Jeslí", + "U Jezera", + "U Jezerky", + "U Jezu", + "U Jezírka", + "U Jinonického Rybníčka", + "U Jirkovské", + "U Jizby", + "U Járku", + "U Jízdárny", + "U Kabelovny", + "U Kabelovny", + "U Kaménky", + "U Kamýku", + "U Kanálky", + "U Kapliček", + "U Kapličky", + "U Karlova Stánku", + "U Kasáren", + "U Kavalírky", + "U Kazína", + "U Kašny", + "U Kaštanu", + "U Kempinku", + "U Kina", + "U Klavírky", + "U Klikovky", + "U Klimentky", + "U Kloubových Domů", + "U Klubovny", + "U Klubu", + "U Kněžské Louky", + "U Kola", + "U Kolejí", + "U Kolejí", + "U Koloděj", + "U Kolonie", + "U Koloniálu", + "U Kombinátu", + "U Konečné", + "U Koní", + "U Kosinů", + "U Kostela", + "U Kostrounku", + "U Kotlářky", + "U Koupadel", + "U Košíku", + "U Krbu", + "U Krbu", + "U Krelovy Studánky", + "U Kruhovky", + "U Královské Louky", + "U Krčské Vodárny", + "U Krčského Nádraží", + "U Kublova", + "U Kunratického Lesa", + "U Křižovatky", + "U Kříže", + "U Kříže", + "U Křížku", + "U Laboratoře", + "U Ladronky", + "U Lanové Dráhy", + "U Ledáren", + "U Lesa", + "U Lesa", + "U Lesíka", + "U Letenského Sadu", + "U Letiště", + "U Letohrádku Královny Anny", + "U Libeňského Pivovaru", + "U Libeňského Zámku", + "U Libušiných Lázní", + "U Libušské Sokolovny", + "U Lidového Domu", + "U Lip", + "U Lipové Aleje", + "U Lisu", + "U Loděnice", + "U Lomu", + "U Loskotů", + "U Louky", + "U Lužického Semináře", + "U Lázeňky", + "U Lázní", + "U Lékárny", + "U Líhní", + "U Lípy", + "U Malvazinky", + "U Malé Řeky", + "U Markéty", + "U Mateřské Školy", + "U Matěje", + "U Maří Magdaleny", + "U Meteoru", + "U Mezníku", + "U Michelské Školy", + "U Michelského Lesa", + "U Michelského Lesa", + "U Michelského Mlýna", + "U Milosrdných", + "U Mlýna", + "U Mlýna", + "U Mlýnského Rybníka", + "U Modré Školy", + "U Modřanské Školy", + "U Močálu", + "U Mrázovky", + "U Mydlárny", + "U Myslivny", + "U Městských Domů", + "U Měšťanského Pivovaru", + "U Měšťanských Škol", + "U Nadýmače", + "U Nemocenské Pojišťovny", + "U Nemocnice", + "U Nesypky", + "U Nikolajky", + "U Nové Dálnice", + "U Nové Louky", + "U Nové Školy", + "U Nového Dvora", + "U Nového Suchdola", + "U Nového Suchdola", + "U Nových Domů I", + "U Nových Domů Ii", + "U Nových Domů Iii", + "U Nových Vil", + "U Nádražní Lávky", + "U Nádraží", + "U Nádrže", + "U Náhonu", + "U Náhonu", + "U Nákladového Nádraží", + "U Nákladového Nádraží", + "U Národní Galerie", + "U Nás", + "U Obce", + "U Obecního Domu", + "U Obecního Dvora", + "U Obory", + "U Okrouhlíku", + "U Olšiček", + "U Opatrovny", + "U Ovčína", + "U Palaty", + "U Paliárky", + "U Paloučku", + "U Památníku", + "U Panské Zahrady", + "U Papírny", + "U Parku", + "U Parkánu", + "U Parního Mlýna", + "U Pastoušky", + "U Pavilónu", + "U Pazderek", + "U Pejřárny", + "U Pekařky", + "U Pekáren", + "U Pentlovky", + "U Pergamenky", + "U Pernikářky", + "U Pernštejnských", + "U Petřin", + "U Pily", + "U Plovárny", + "U Plynárny", + "U Plynárny", + "U Plátenice", + "U Podchodu", + "U Podjezdu", + "U Podolského Hřbitova", + "U Podolského Sanatoria", + "U Pohádky", + "U Polikliniky", + "U Pomníku", + "U Potoka", + "U Poustek", + "U Poštovky", + "U Pošty", + "U Pramene", + "U Prašné Brány", + "U Prašného Mostu", + "U Prašného Mostu", + "U Pražských Lomů", + "U Prefy", + "U Prioru", + "U Prknovky", + "U Prodejny", + "U Propusti", + "U Prosecké Školy", + "U Proseckého Kostela", + "U První Baterie", + "U První Baterie", + "U Prádelny", + "U Průhonu", + "U Průseku", + "U Pumpy", + "U Párníků", + "U Páté Baterie", + "U Páté Baterie", + "U Písecké Brány", + "U Pískovny", + "U Přechodu", + "U Přehrady", + "U Přejezdu", + "U Půjčovny", + "U Radiály", + "U Radnice", + "U Rajské Zahrady", + "U Rakovky", + "U Roháčových Kasáren", + "U Rokytky", + "U Rokytky", + "U Rokytky", + "U Rozkoše", + "U Roztockého Háje", + "U Rybníka", + "U Rybníčka", + "U Rybářství", + "U Rychty", + "U Rychty", + "U Ryšánky", + "U Ryšánky", + "U Sadu", + "U Sanatoria", + "U Sanopzu", + "U Santošky", + "U Schodů", + "U Sedlecké Školy", + "U Seřadiště", + "U Sila", + "U Silnice", + "U Silnice", + "U Skalky", + "U Skladu", + "U Skládky", + "U Skopců", + "U Skály", + "U Sladovny", + "U Slavie", + "U Sloupu", + "U Slovanky", + "U Slovanské Pojišťovny", + "U Sluncové", + "U Slévárny", + "U Smaltovny", + "U Smetanky", + "U Smolnic", + "U Smíchovského Hřbitova", + "U Sokolovny", + "U Soutoku", + "U Sovových Mlýnů", + "U Sparty", + "U Splavu", + "U Spojky", + "U Spojů", + "U Společenské Zahrady", + "U Sportoviště", + "U Spořitelny", + "U Stanice", + "U Staré Cihelny", + "U Staré Plynárny", + "U Staré Pošty", + "U Staré Skládky", + "U Staré Sokolovny", + "U Staré Studánky", + "U Staré Tvrze", + "U Staré Školy", + "U Staré Školy", + "U Starého Hřbitova", + "U Starého Hřiště", + "U Starého Mlýna", + "U Starého Nádraží", + "U Starého Splavu", + "U Starého Stadionu", + "U Starého Stadiónu", + "U Starého Židovského Hřbitova", + "U Starého Židovského Hřbitova", + "U Statku", + "U Stavoservisu", + "U Stojanu", + "U Strouhy", + "U Strže", + "U Studny", + "U Studánky", + "U Studánky", + "U Stárovny", + "U Státní Dráhy", + "U Státní Dráhy", + "U Stírky", + "U Střediska", + "U Střešovických Hřišť", + "U Sušičky", + "U Svahu", + "U Svatého Ducha", + "U Svobodárny", + "U Svodnice", + "U Svornosti", + "U Svépomoci", + "U Světličky", + "U Synagogy", + "U Sádek", + "U Sídliště", + "U Tabulky", + "U Technoplynu", + "U Tenisu", + "U Teplárny", + "U Topíren", + "U Továren", + "U Transformační Stanice", + "U Transformátoru", + "U Trati", + "U Trativodu", + "U Trezorky", + "U Trojice", + "U Trojského Zámku", + "U Trpce", + "U Tržnice", + "U Tvrze", + "U Tyrše", + "U Tyršovky", + "U Tyršovy Školy", + "U Třetí Baterie", + "U Třešňovky", + "U Třešňového Sadu", + "U Tůně", + "U Uhříněveské Obory", + "U Uranie", + "U Učiliště", + "U Valu", + "U Velké Skály", + "U Vesny", + "U Viktorky", + "U Vinice", + "U Viniček", + "U Vinné Révy", + "U Vinných Sklepů", + "U Vinohradské Nemocnice", + "U Vinohradského Hřbitova", + "U Vinohradského Hřbitova", + "U Vizerky", + "U Višňovky", + "U Višňovky", + "U Vlachovky", + "U Vlasačky", + "U Vlečky", + "U Vlečky", + "U Vltavy", + "U Voborníků", + "U Vodice", + "U Vodojemu", + "U Vodojemu", + "U Vodotoku", + "U Vody", + "U Vodárny", + "U Vojanky", + "U Vojenské Nemocnice", + "U Vojtěšky", + "U Vokovické Školy", + "U Vorlíků", + "U Vozovny", + "U Vrbiček", + "U Vrby", + "U Vrtilky", + "U Vršovického Hřbitova", + "U Vršovického Hřbitova", + "U Vršovického Nádraží", + "U Vysočanského Cukrovaru", + "U Vysočanského Pivovaru", + "U Václava", + "U Váhy", + "U Vápenice", + "U Vápenky", + "U Vápenné Skály", + "U Výkupního Střediska", + "U Výstavby", + "U Výstaviště", + "U Výstaviště", + "U Výzkumu", + "U Včely", + "U Větrníku", + "U Větrolamu", + "U Větrolamu", + "U Věže", + "U Waltrovky", + "U Zahradnictví", + "U Zahradního Města", + "U Zahrady", + "U Zahrádek", + "U Zahrádkářské Kolonie", + "U Zastávky", + "U Zbrojnice", + "U Zdravotního Ústavu", + "U Zeleného Ptáka", + "U Zemníku", + "U Zeměpisného Ústavu", + "U Zlaté Studně", + "U Zličína", + "U Zličína", + "U Zličínského Hřiště", + "U Zvonařky", + "U Zvoničky", + "U Záběhlického Zámku", + "U Zájezdku", + "U Zákrutu", + "U Zámeckého Parku", + "U Zámečku", + "U Zámečnice", + "U Zásobní Zahrady", + "U Zátiší", + "U Závodiště", + "U Závor", + "U Úlů", + "U Čekárny", + "U Černé Rokle", + "U Červeného Mlýnku", + "U Červeného Mlýnku", + "U Českých Loděnic", + "U Čihadel", + "U Čističky", + "U Čokoládoven", + "U Čtvrté Baterie", + "U Čtyř Domů", + "U Řempa", + "U Říčanky", + "U Šalamounky", + "U Šalamounky", + "U Šesté Baterie", + "U Šesté Baterie", + "U Školičky", + "U Školky", + "U Školního Pole", + "U Školské Zahrady", + "U Školy", + "U Štěpu", + "U Šumavy", + "U Šumavěnky", + "U Šálkovny", + "U Šíchů", + "U Šípků", + "U Železnice", + "U Železničního Mostu", + "U Železné Lávky", + "U Želivky", + "U Židovského Hřbitova", + "U Žlábku", + "U Županských", + "Uhelný Trh", + "Uherská", + "Uhříněveská", + "Ukončená", + "Ukrajinská", + "Uljanovská", + "Ulrychova", + "Ulčova", + "Umělecká", + "Ungarova", + "Unhošťská", + "Univerzitní", + "Upolínová", + "Upravená", + "Uralská", + "Urbanická", + "Urbanova", + "Urbánkova", + "Urešova", + "Uruguayská", + "Urxova", + "Utěšilova", + "Uzavřená", + "Uzbecká", + "Uzoučká", + "Učitelská", + "Učňovská", + "Užocká", + "V Aleji", + "V Alejích", + "V Americe", + "V Babyku", + "V Bambouskách", + "V Bažinách", + "V Benátkách", + "V Bezpečí", + "V Bokách I", + "V Bokách Ii", + "V Bokách Iii", + "V Borovičkách", + "V Botanice", + "V Brance", + "V Brůdku", + "V Brůdku", + "V Bytovkách", + "V Bílce", + "V Březinkách", + "V Březině", + "V Březí", + "V Břízkách", + "V Celnici", + "V Cestičkách", + "V Cestkách", + "V Chaloupkách", + "V Chaloupkách", + "V Chatách", + "V Chotejně", + "V Cibulkách", + "V Cihelně", + "V Cípu", + "V Dolinách", + "V Dolině", + "V Dolině", + "V Dolích", + "V Domcích", + "V Domově", + "V Doubcích", + "V Dílcích", + "V Edenu", + "V Haltýři", + "V Hliništi", + "V Hluboké", + "V Hodkovičkách", + "V Holešovičkách", + "V Honu", + "V Horkách", + "V Horní Stromce", + "V Hrobech", + "V Humenci", + "V Humenci", + "V Humnech", + "V Háji", + "V Hájkách", + "V Hájích", + "V Hůrkách", + "V Jahodách", + "V Javorech", + "V Javoříčku", + "V Jehličině", + "V Jehličí", + "V Jezerách", + "V Jezevčinách", + "V Jezírkách", + "V Jirchářích", + "V Jámě", + "V Kališti", + "V Kališti", + "V Kapslovně", + "V Klukovicích", + "V Kole", + "V Kolkovně", + "V Korytech", + "V Korytech", + "V Kotcích", + "V Koutku", + "V Koutě", + "V Kratinách", + "V Kruhu", + "V Kuťatech", + "V Kálku", + "V Křepelkách", + "V Křovinách", + "V Křížkách", + "V Ladech", + "V Lesíčku", + "V Lipinách", + "V Lipinách", + "V Lipkách", + "V Lipách", + "V Listnáčích", + "V Lomech", + "V Louce", + "V Luhu", + "V Lukách", + "V Lučinách", + "V Lužích", + "V Lánech", + "V Lázních", + "V Lískách", + "V Malých Domech I", + "V Malých Domech Ii", + "V Malých Domech Iii", + "V Mezihoří", + "V Milíři", + "V Mokřinách", + "V Mydlinkách", + "V Nové Hostivaři", + "V Nové Vsi", + "V Nové Vsi", + "V Nové Čtvrti", + "V Novém Hloubětíně", + "V Novém Hloubětíně", + "V Nových Bohnicích", + "V Nových Domcích", + "V Nových Vokovicích", + "V Náklích", + "V Násypu", + "V Nížinách", + "V Oblouku", + "V Občanském Domově", + "V Obůrkách", + "V Ochozu", + "V Ohradě", + "V Ohybu", + "V Okruží", + "V Okálech", + "V Olšinách", + "V Olšinách", + "V Olšině", + "V Ondřejově", + "V Opatově", + "V Osikách", + "V Ostružiní", + "V Oudolku", + "V Ořeší", + "V Pachmance", + "V Padolině", + "V Parcelách", + "V Parku", + "V Parníku", + "V Pačátkách", + "V Pařezinách", + "V Pevnosti", + "V Pevnosti", + "V Pitkovičkách", + "V Planinách", + "V Platýzu", + "V Pláni", + "V Podbabě", + "V Podhoří", + "V Podhájí", + "V Podhájí", + "V Podluží", + "V Podskalí", + "V Podvrší", + "V Podzámčí", + "V Poli", + "V Polích", + "V Potokách", + "V Potočinách", + "V Potočkách", + "V Prutinách", + "V Průhledu", + "V Průčelí", + "V Pátém", + "V Pískovně", + "V Pěšinkách", + "V Předním Hloubětíně", + "V Předním Veleslavíně", + "V Předpolí", + "V Předpolí", + "V Přelomu", + "V Přístavu", + "V Remízku", + "V Rohožníku", + "V Rohu", + "V Roháčích", + "V Rokli", + "V Roklích", + "V Rovinách", + "V Rovinách", + "V Rybníkách", + "V Rybníčkách", + "V Ráji", + "V Ráji", + "V Rákosí", + "V Sadech", + "V Sedlci", + "V Sedlci", + "V Slavětíně", + "V Soudním", + "V Stráni", + "V Středu", + "V Sudech", + "V Sídlišti", + "V Tehovičkách", + "V Tišině", + "V Trninách", + "V Třešňovce", + "V Tůních", + "V Uličce", + "V Uličkách", + "V Zahradní Čtvrti", + "V Zahradách", + "V Zahrádkách", + "V Zatáčce", + "V Zeleni", + "V Zeleném Údolí", + "V Záhorském", + "V Záhybu", + "V Zákopech", + "V Zákoutí", + "V Zálesí", + "V Zálomu", + "V Zámcích", + "V Zápolí", + "V Zátiší", + "V Zátočce", + "V Závitu", + "V Závětří", + "V Zářezu", + "V Údolí", + "V Údolí Hvězd", + "V Úhlu", + "V Úhoru", + "V Úvalu", + "V Úvoze", + "V Úzké", + "V Úžlabině", + "V Úžlabině", + "V Čeňku", + "V Štíhlách", + "V Šáreckém Údolí", + "V Žabokřiku", + "V Žáčku", + "V. P. Čkalova", + "V. P. Čkalova", + "Vachkova", + "Vackova", + "Vacovská", + "Vacínova", + "Vacínovská", + "Vajdova", + "Vajgarská", + "Valcířská", + "Valdická", + "Valdovská", + "Valdštejnská", + "Valdštejnské Nám.", + "Valdštejnské Náměstí", + "Valentinská", + "Valentinská", + "Valentova", + "Valečovská", + "Valská", + "Valtická", + "Valtínovská", + "Valčíkova", + "Valšovská", + "Vamberská", + "Vanická", + "Vaníčkova", + "Vaníčkova", + "Varhulíkové", + "Varnsdorfská", + "Varšavská", + "Vavákova", + "Vavřenova", + "Vavřinecká", + "Vazovova", + "Vačkářova", + "Vaňkova", + "Vaňkova", + "Vašátkova", + "Ve Dvoře", + "Ve Lhotce", + "Ve Lhotce", + "Ve Skalkách", + "Ve Skalách", + "Ve Skále", + "Ve Slatinách", + "Ve Smečkách", + "Ve Smrčině", + "Ve Stromořadí", + "Ve Struhách", + "Ve Struhách", + "Ve Stráni", + "Ve Studeném", + "Ve Stínu", + "Ve Střešovičkách", + "Ve Střešovičkách", + "Ve Svahu", + "Ve Vilkách", + "Ve Vilách", + "Ve Višňovce", + "Ve Vratech", + "Ve Vrbách", + "Ve Vrchu", + "Ve Vrších", + "Ve Výhledu", + "Ve Výhledu", + "Ve Výrech", + "Ve Zliči", + "Ve Štěpnici", + "Ve Žlíbku", + "Vedlejší", + "Vehlovická", + "Vejražkova", + "Vejvanovského", + "Vejvodova", + "Velebného", + "Velehradská", + "Velemínská", + "Velemínská", + "Velenická", + "Velenovského", + "Veleslavínova", + "Veleslavínská", + "Veleslavínská", + "Veletovská", + "Veletržní", + "Veletržní", + "Veleňská", + "Velešínská", + "Velfloviců", + "Velflíkova", + "Velhartická", + "Velichovská", + "Velimská", + "Velkoborská", + "Velkoosecká", + "Velkopřevorské Nám.", + "Velkopřevorské Náměstí", + "Velká Lada", + "Velká Lada", + "Velká Skála", + "Velké Kunratické", + "Veltruská", + "Veltěžská", + "Velvarská", + "Velínská", + "Venušina", + "Verdiho", + "Verdunská", + "Verneřická", + "Verneřická", + "Vernéřovská", + "Veronské Nám.", + "Veselská", + "Veská", + "Veslařský Ostrov", + "Vestavěná", + "Vestecká", + "Veverkova", + "Večerní", + "Vidimova", + "Vidimská", + "Vidlicová", + "Vidlák", + "Vidonická", + "Vidoulská", + "Vidovická", + "Vietnamská", + "Viklefova", + "Vikova", + "Viktora Huga", + "Viktorinova", + "Viktorčina", + "Vikářská", + "Vilová", + "Vilímkova", + "Vilímovská", + "Vimperské Náměstí", + "Vinařického", + "Vinařská", + "Viničná", + "Vinohradská", + "Vinohradská", + "Vinohradská", + "Vinohradská", + "Vinohradská", + "Vinohradská", + "Vinohradská", + "Vinohrady", + "Vinopalnická", + "Vinořská", + "Vinořské Nám.", + "Vinořské Náměstí", + "Vinšova", + "Violková", + "Vitošská", + "Vitíkova", + "Vitějovská", + "Vizovická", + "Višňovka", + "Višňovka", + "Višňová", + "Vlachova", + "Vladimírova", + "Vladislava Vančury", + "Vladislavova", + "Vladivostocká", + "Vladycká", + "Vlastibořská", + "Vlastina", + "Vlastina", + "Vlastislavova", + "Vlasty Buriana", + "Vlasty Hilské", + "Vlasty Průchové", + "Vlasákova", + "Vlašimská", + "Vlašská", + "Vlašská", + "Vlaštovčí", + "Vlkanovská", + "Vlkova", + "Vlkovická", + "Vlnitá", + "Vltavanů", + "Vltavanů", + "Vltavanů", + "Vltavická", + "Vltavská", + "Vltavínová", + "Vlárská", + "Vlásenická", + "Vlčická", + "Vlčkova", + "Vlčnovská", + "Vnislavova", + "Vnitřní", + "Vnoučkova", + "Vnější", + "Voborského", + "Vobrubova", + "Vocelova", + "Voctářova", + "Voctářova", + "Vodická", + "Vodičkova", + "Vodičkova", + "Vodnická", + "Vodní", + "Vodochodská", + "Vodojemská", + "Vodácká", + "Vodárenská", + "Voděradská", + "Vodňanská", + "Vodňanského", + "Vojenova", + "Vojetická", + "Vojická", + "Vojkovická", + "Vojslavická", + "Vojtova", + "Vojtíškova", + "Vojtěšská", + "Vojáčkova", + "Vokovická", + "Vokovická", + "Vokrojova", + "Vokáčova", + "Vokřínská", + "Volarská", + "Volavkova", + "Voleníkova", + "Volkova", + "Volkovova", + "Voltova", + "Volutová", + "Volyňská", + "Volšovská", + "Volšovská", + "Vondroušova", + "Vorařská", + "Voroněžská", + "Voroněžská", + "Voráčovská", + "Voršilská", + "Voskova", + "Voskovcova", + "Vosmíkových", + "Vostrovská", + "Vostrého", + "Vosátkova", + "Votavova", + "Votická", + "Votočkova", + "Votrubova", + "Votuzská", + "Vozová", + "Vozová", + "Voňkova", + "Voříškova", + "Vošahlíkova", + "Vožická", + "Vrabčí", + "Vranická", + "Vranovská", + "Vranská", + "Vratimovská", + "Vratislavova", + "Vratislavská", + "Vratičová", + "Vraňanská", + "Vrbenského", + "Vrbická", + "Vrbková", + "Vrbova", + "Vrbčanská", + "Vrchlabská", + "Vrchlického", + "Vrchlického Sady", + "Vrchovinská", + "Vrátenská", + "Vrátkovská", + "Vrázova", + "Vrážská", + "Vrútecká", + "Vršní", + "Vršovická", + "Vršovické Nám.", + "Vršovické Náměstí", + "Vršovka", + "Vsetínská", + "Vstavačová", + "Vstupní", + "Vybíralova", + "Vycpálkova", + "Vyderská", + "Vydrova", + "Vyhlídkova", + "Vykoukových", + "Vykáňská", + "Vyskočilova", + "Vysokovská", + "Vysokoškolská", + "Vysoká Cesta", + "Vysočanská", + "Vysočanská", + "Vysočanská", + "Vysočanské Nám.", + "Vysočanské Náměstí", + "Vyvýšená", + "Vyšebrodská", + "Vyšehradská", + "Vyšší", + "Vyžlovská", + "Vzdušná", + "Vzdálená", + "Vzestupná", + "Vzpoury", + "Váchalova", + "Václava Balého", + "Václava Kovaříka", + "Václava Rady", + "Václava Trojana", + "Václava Špačka", + "Václavická", + "Václavkova", + "Václavská", + "Václavské Nám.", + "Václavské Náměstí", + "Vágnerova", + "Vánková", + "Vápencová", + "Vápenná", + "Vápeníkova", + "Vášova", + "Vážská", + "Vídeňská", + "Vídeňská", + "Vídeňská", + "Vírská", + "Víta Nejedlého", + "Vítkova", + "Vítkovická", + "Vítovcova", + "Vítovcova", + "Vítězná", + "Vítězná", + "Vítězné Nám.", + "Vítězné Nám.", + "Vítězné Náměstí", + "Vítězné Náměstí", + "Východní", + "Východní Nám.", + "Východní Náměstí", + "Výchozí", + "Výhledová", + "Výhledské Nám.", + "Výhledské Náměstí", + "Výjezdní", + "Výjezdová", + "Výletní", + "Výletní", + "Výmarova", + "Výmolova", + "Výpadová", + "Výpadová", + "Výravská", + "Výrobní", + "Výstaviště", + "Výstavní", + "Výstupní", + "Výtoňská", + "Výtvarnická", + "Výtvarná", + "Výzkumníků", + "Včelařská", + "Včelničná", + "Věkova", + "Věstonická", + "Větrná", + "Větrovcova", + "Větrová", + "Větrušická", + "Vězeňská", + "Vězeňská", + "Věštínská", + "Věšínova", + "Věžická", + "Vřesovická", + "Vřesová", + "Všehrdova", + "Všejanská", + "Všelipská", + "Všerubská", + "Všestarská", + "Všetatská", + "Všeňská", + "Wagnerova", + "Waldesova", + "Washingtonova", + "Wassermannova", + "Wattova", + "Weberova", + "Weberova", + "Weilova", + "Weissova", + "Wenzigova", + "Wenzigova", + "Werichova", + "Wichterlova", + "Wiedermannova", + "Wiesenthalova", + "Wilsonova", + "Wilsonova", + "Winklerova", + "Wolfova", + "Wolkerova", + "Wuchterlova", + "Xaveriova", + "Xaverovská", + "Za Archivem", + "Za Arielem", + "Za Avií", + "Za Bažantnicí", + "Za Botičem", + "Za Brankou", + "Za Brumlovkou", + "Za Brůdkem", + "Za Břízami", + "Za Chalupami", + "Za Cukrovarem", + "Za Císařským Mlýnem", + "Za Dolejšákem", + "Za Drahou", + "Za Dvorem", + "Za Dálnicí", + "Za Dálnicí", + "Za Elektrárnou", + "Za Elektrárnou", + "Za Farou", + "Za Fořtem", + "Za Hanspaulkou", + "Za Haštalem", + "Za Hládkovem", + "Za Horou", + "Za Horou", + "Za Hospodou", + "Za Hrází", + "Za Humny", + "Za Hájem", + "Za Hájem", + "Za Hájovnou", + "Za Hřbitovem", + "Za Invalidovnou", + "Za Jalovým Dvorem", + "Za Jednotou", + "Za Kajetánkou", + "Za Kapličkou", + "Za Karlínským Přístavem", + "Za Kačabkou", + "Za Klíčovem", + "Za Knotkem", + "Za Knotkem", + "Za Kostelem", + "Za Kovárnou", + "Za Kovářským Rybníkem", + "Za Křížem", + "Za Křížkem", + "Za Lesíkem", + "Za Lidovým Domem", + "Za Luhem", + "Za Lužinami", + "Za Lány", + "Za Lázeňkou", + "Za Mlýnem", + "Za Mosty", + "Za Mosty", + "Za Mototechnou", + "Za Můstkem", + "Za Nadýmačem", + "Za Novákovou Zahradou", + "Za Návsí", + "Za Obecním Úřadem", + "Za Oborou", + "Za Opravnou", + "Za Opusem", + "Za Ovčínem", + "Za Papírnou", + "Za Parkem", + "Za Pavilónem", + "Za Pekařkou", + "Za Pekárnou", + "Za Pivovarem", + "Za Ploty", + "Za Podjezdem", + "Za Pohořelcem", + "Za Pohádkou", + "Za Potokem", + "Za Poříčskou Branou", + "Za Poříčskou Bránou", + "Za Poštou", + "Za Poštovskou Zahradou", + "Za Poštovskou Zahradou", + "Za Prodejnou", + "Za Pruhy", + "Za Průsekem", + "Za Pískovnou", + "Za Radostí", + "Za Rokytkou", + "Za Rybníkem", + "Za Rybníčky", + "Za Rybářstvím", + "Za Rájem", + "Za Sadem", + "Za Sedmidomky", + "Za Skalkou", + "Za Skalkou", + "Za Slatinami", + "Za Slovankou", + "Za Sokolovnou", + "Za Stadionem", + "Za Statkem", + "Za Statky", + "Za Stodolami", + "Za Stodolou", + "Za Strahovem", + "Za Strašnickou Vozovnou", + "Za Strašnickou Vozovnou", + "Za Strojírnami", + "Za Studánkou", + "Za Střelnicí", + "Za Sídlištěm", + "Za Teplárnou", + "Za Tratí", + "Za Tratí", + "Za Třebešínem", + "Za Vackovem", + "Za Valem", + "Za Viaduktem", + "Za Vinicí", + "Za Vlasačkou", + "Za Vodárnou", + "Za Vokovickou Vozovnou", + "Za Vokovickou Vozovnou", + "Za Větrem", + "Za Zahradami", + "Za Zahradou", + "Za Zastávkou", + "Za Zelenou Liškou", + "Za Zámečkem", + "Za Černým Mostem", + "Za Černým Mostem", + "Za Černým Mostem", + "Za Školkou", + "Za Školou", + "Za Šmatlíkem", + "Za Železnicí", + "Za Ženskými Domovy", + "Za Žižkovskou Vozovnou", + "Zacharská", + "Zachova", + "Zadní", + "Zahrada Na Baště", + "Zahradnická", + "Zahradní", + "Zahradníčkova", + "Zahradníčkova", + "Zahrádecká", + "Zahrádecká", + "Zahrádkářská", + "Zahrádkářů", + "Zaječická", + "Zaječí", + "Zaječí", + "Zakouřilova", + "Zakrytá", + "Zakšínská", + "Zalešanská", + "Zalinská", + "Zamašská", + "Zamenhofova", + "Zapadlá", + "Zapomenutá", + "Zapova", + "Zapských", + "Zastavěná", + "Zastrčená", + "Zavadilova", + "Zavátá", + "Zaříčanská", + "Zbečenská", + "Zborovská", + "Zborovská", + "Zbraslavská", + "Zbraslavská", + "Zbraslavské Nám.", + "Zbraslavské Náměstí", + "Zbrojnická", + "Zbudovská", + "Zbuzanská", + "Zbuzkova", + "Zbynická", + "Zbyslavská", + "Zbytinská", + "Zbýšovská", + "Zdaru", + "Zdařilá", + "Zderazská", + "Zdeňky Nyplové", + "Zdibská", + "Zdická", + "Zdiměřická", + "Zdislavická", + "Zdobnická", + "Zdoňovská", + "Zdíkovská", + "Zelenečská", + "Zelenečská", + "Zelenkova", + "Zelenky-Hajského", + "Zelenohorská", + "Zelená", + "Zelená", + "Zelená Louka", + "Zelený Pruh", + "Zelený Pruh", + "Zelený Pruh", + "Zelinářská", + "Zemanka", + "Zemské Právo", + "Zemědělská", + "Zengrova", + "Zenklova", + "Zenklova", + "Zeyerova Alej", + "Zhořelecká", + "Zikova", + "Zimova", + "Zimákova", + "Zkrácená", + "Zlatnice", + "Zlatnická", + "Zlatokorunská", + "Zlatá", + "Zlatá Ulička U Daliborky", + "Zlenická", + "Zlešická", + "Zlivská", + "Zličínská", + "Zličínská", + "Zlonická", + "Zlonínská", + "Zlončická", + "Zlíchovská", + "Znojemská", + "Zoubkova", + "Zrzavého", + "Ztracená", + "Zubatého", + "Zubrnická", + "Zvolenská", + "Zvolská", + "Zvolská", + "Zvonařova", + "Zvonařovská", + "Zvonařská", + "Zvoncovitá", + "Zvonická", + "Zvonková", + "Zvoníčkova", + "Zvánovická", + "Zvíkovská", + "Záblatská", + "Záblatská", + "Zábranská", + "Zábrodí", + "Záběhlická", + "Zádražanská", + "Záhornická", + "Záhorského", + "Záhořanská", + "Záhořanského", + "Záhřebská", + "Zájezdní", + "Zákolanská", + "Zákostelní", + "Zákupská", + "Zálesí", + "Zálesí", + "Zálesí", + "Záluské", + "Zálužanského", + "Zálužická", + "Zálužská", + "Zálužská", + "Zámecká", + "Zámecké Schody", + "Zámezí", + "Zámišova", + "Zámělská", + "Západní", + "Zápasnická", + "Zápolská", + "Zápotoční", + "Zápská", + "Zárubova", + "Zárybnická", + "Zárybničná", + "Zárybská", + "Zásadská", + "Zásmucká", + "Zátišská", + "Zátiší", + "Zátopkova", + "Zátoňská", + "Závadova", + "Záveská", + "Závist", + "Závišova", + "Závišova", + "Závodní", + "Závrchy", + "Závěrka", + "Zázvorkova", + "Zářijová", + "Zítkova", + "Zívrova", + "Zúžená", + "Údlická", + "Údolní", + "Údolní", + "Údolí Hvězd", + "Úhlavská", + "Úhlová", + "Újezd", + "Újezd", + "Újezdská", + "Úlibická", + "Únorová", + "Únětická", + "Únětická", + "Úpická", + "Úprkova", + "Úpská", + "Úslavská", + "Ústavní", + "Ústecká", + "Ústecká", + "Ústřední", + "Útulná", + "Útulná", + "Úvalská", + "Úvoz", + "Úvoz", + "Úvozová", + "Úzká", + "Čajkovského", + "Čakovická", + "Čakovická", + "Čankovská", + "Čapkova", + "Častavina", + "Častonická", + "Čechova", + "Čechtická", + "Čechurova", + "Čedičová", + "Čejetická", + "Čejkovická", + "Čekanková", + "Čekanková", + "Čekanovská", + "Čelakovského Sady", + "Čelakovského Sady", + "Čeljabinská", + "Čelkovická", + "Čelná", + "Čelákovická", + "Čenkovská", + "Čenovická", + "Čentická", + "Čenětická", + "Čeperská", + "Čeradická", + "Čerchovská", + "Čermákova", + "Černická", + "Černilovská", + "Černičná", + "Černochova", + "Černockého", + "Černohorského", + "Černokostelecká", + "Černokostelecká", + "Černokostelecká", + "Černomořská", + "Černotínská", + "Černovická", + "Černošická", + "Černá", + "Černého", + "Černínova", + "Černínská", + "Čerpadlová", + "Čertouská", + "Čertouská", + "Čertův Vršek", + "Červencová", + "Červenkova", + "Červená", + "Červená Báň", + "Červený Mlýn", + "Červeňanského", + "Červnová", + "Čerčanská", + "Českobratrská", + "Českobrodská", + "Českobrodská", + "Českobrodská", + "Českobrodská", + "Českobrodská", + "Českobrodská", + "Českobrodská", + "Českobrodská", + "Českodubská", + "Českolipská", + "Českolipská", + "Českomalínská", + "Českomoravská", + "Českomoravská", + "Československého Exilu", + "Československého Exilu", + "Česká", + "České Družiny", + "Českého Červeného Kříže", + "Čestlická", + "Čestmírova", + "Česákova", + "Čečelická", + "Čeňkova", + "Češovská", + "Čibuzská", + "Čihákova", + "Čiklova", + "Čiklova", + "Čimelická", + "Čimická", + "Čimická", + "Čimická", + "Čimická", + "Čirůvková", + "Čistovická", + "Čmelická", + "Čs. Armády", + "Čs. Tankistů", + "Čtyřdílná", + "Čtyřkolská", + "Čumpelíkova", + "Čuprova", + "Čábelecká", + "Čápova", + "Čáslavská", + "Čílova", + "Čílova", + "Čínská", + "Čínská", + "Čížovská", + "Ďáblická", + "Ďáblická", + "Ďáblická", + "Řadová", + "Řehořova", + "Řepečská", + "Řepná", + "Řeporyjská", + "Řeporyjská", + "Řeporyjská", + "Řeporyjské Náměstí", + "Řepová", + "Řepská", + "Řepíková", + "Řepínská", + "Řepčická", + "Řepčická", + "Řetězokovářů", + "Řetězová", + "Řevnická", + "Řevnická", + "Řeznická", + "Řezáčovo Nám.", + "Řezáčovo Náměstí", + "Řečického", + "Řešetovská", + "Řešovská", + "Řipská", + "Řipská", + "Řásnovka", + "Říjnová", + "Římovská", + "Římovská", + "Římská", + "Říčanova", + "Říčanská", + "Říční", + "Šachovská", + "Šafaříkova", + "Šafránecká", + "Šafránkova", + "Šafránová", + "Šafářova", + "Šakvická", + "Šaldova", + "Šalounova", + "Šalvějová", + "Šanovská", + "Šantrochova", + "Šatrova", + "Šatrova", + "Šebelova", + "Šeberovská", + "Šebestiánská", + "Šebkova", + "Šedivého", + "Šedova", + "Šejbalové", + "Šemberova", + "Šenovská", + "Šermířská", + "Šermířská", + "Šestajovická", + "Šestajovická", + "Šestidomí", + "Šetelíkova", + "Ševce Matouše", + "Ševčenkova", + "Ševčíkova", + "Šeříková", + "Šeříková", + "Šibřinská", + "Šikmá", + "Šimanovská", + "Šimkova", + "Šimonova", + "Šimáčkova", + "Šimůnkova", + "Šircova", + "Široká", + "Široká", + "Šiškova", + "Školní", + "Školská", + "Škroupovo Nám.", + "Škroupovo Náměstí", + "Škrétova", + "Škvorecká", + "Škábova", + "Šlechtitelská", + "Šlejnická", + "Šlikova", + "Šlitrova", + "Šluknovská", + "Šmeralova", + "Šmilovského", + "Šmolíkova", + "Šolínova", + "Šostakovičovo Nám.", + "Šostakovičovo Náměstí", + "Španielova", + "Španělská", + "Špačkova", + "Špeciánova", + "Šperlova", + "Špirkova", + "Špitálská", + "Šplechnerova", + "Šporkova", + "Špotzova", + "Špálova", + "Šrobárova", + "Šrobárova", + "Šromova", + "Štamberk", + "Štefkova", + "Štefánikova", + "Štemberova", + "Šternberkova", + "Šternova", + "Šternovská", + "Štichova", + "Štiplova", + "Štičkova", + "Štiřínská", + "Štochlova", + "Štolbova", + "Štolcova", + "Štolmířská", + "Štolmířská", + "Štorchova", + "Štorkánova", + "Štramberská", + "Štulcova", + "Štupartská", + "Štursova", + "Štverákova", + "Štychova", + "Štychova", + "Štíbrova", + "Štíhlická", + "Štítného", + "Štítová", + "Štúrova", + "Štúrova", + "Štěchovická", + "Štěpanická", + "Štěpařská", + "Štěpničná", + "Štěpánkova", + "Štěpánovská", + "Štěpánská", + "Štěpánská", + "Štěrboholská", + "Štěrková", + "Štětkova", + "Štětínská", + "Šubertova", + "Šulcova", + "Šultysova", + "Šumavská", + "Šumavského", + "Šumberova", + "Šumenská", + "Šumická", + "Šumperská", + "Šustova", + "Švabinského", + "Švecova", + "Švehlova", + "Švehlova", + "Švejcarovo Náměstí", + "Švestková", + "Švestková", + "Švestková", + "Švihovská", + "Švábky", + "Švábova", + "Švédská", + "Šárecká", + "Šárovo Kolo", + "Šárčina", + "Šátalská", + "Šífařská", + "Šímova", + "Šípková", + "Šítkova", + "Šťastného", + "Šůrova", + "Žabovřeská", + "Žacléřská", + "Žalanského", + "Žalmanova", + "Žalovská", + "Žamberská", + "Žampašská", + "Žampiónová", + "Žandovská", + "Žatecká", + "Žatecká", + "Žateckých", + "Ždírnická", + "Žehuňská", + "Žehušická", + "Želetavská", + "Železniční", + "Železničářů", + "Železnobrodská", + "Železná", + "Želivecká", + "Želivka", + "Želivská", + "Želkovická", + "Želnavská", + "Ženíškova", + "Žeretická", + "Žermanická", + "Žernosecká", + "Žernovská", + "Žerotínova", + "Žherská", + "Žichlínská", + "Židlického", + "Žilinská", + "Žilovská", + "Žinkovská", + "Žirovnická", + "Žitavská", + "Žitavského", + "Žitná", + "Žitná", + "Žitomírská", + "Živanická", + "Živcová", + "Živcových", + "Živonínská", + "Žiželická", + "Žižkova", + "Žižkovo Nám.", + "Žižkovo Náměstí", + "Žlebská", + "Žluťásková", + "Žofie Podlipské", + "Žufanova", + "Žukovského", + "Žukovského", + "Žulová", + "Županovická", + "Žvahovská", + "Žábova", + "Žákovská", + "Žárovická", + "Žíšovská", + "Žďárská", +]; + +},{}],120:[function(require,module,exports){ +module["exports"] = [ + "#{street_name} #{building_number}" +]; + +},{}],121:[function(require,module,exports){ +module["exports"] = [ + "#{street}" +]; + +},{}],122:[function(require,module,exports){ +module["exports"] = [ + "Pacific/Midway", + "Pacific/Pago_Pago", + "Pacific/Honolulu", + "America/Juneau", + "America/Los_Angeles", + "America/Tijuana", + "America/Denver", + "America/Phoenix", + "America/Chihuahua", + "America/Mazatlan", + "America/Chicago", + "America/Regina", + "America/Mexico_City", + "America/Mexico_City", + "America/Monterrey", + "America/Guatemala", + "America/New_York", + "America/Indiana/Indianapolis", + "America/Bogota", + "America/Lima", + "America/Lima", + "America/Halifax", + "America/Caracas", + "America/La_Paz", + "America/Santiago", + "America/St_Johns", + "America/Sao_Paulo", + "America/Argentina/Buenos_Aires", + "America/Guyana", + "America/Godthab", + "Atlantic/South_Georgia", + "Atlantic/Azores", + "Atlantic/Cape_Verde", + "Europe/Dublin", + "Europe/London", + "Europe/Lisbon", + "Europe/London", + "Africa/Casablanca", + "Africa/Monrovia", + "Etc/UTC", + "Europe/Belgrade", + "Europe/Bratislava", + "Europe/Budapest", + "Europe/Ljubljana", + "Europe/Prague", + "Europe/Sarajevo", + "Europe/Skopje", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Brussels", + "Europe/Copenhagen", + "Europe/Madrid", + "Europe/Paris", + "Europe/Amsterdam", + "Europe/Berlin", + "Europe/Berlin", + "Europe/Rome", + "Europe/Stockholm", + "Europe/Vienna", + "Africa/Algiers", + "Europe/Bucharest", + "Africa/Cairo", + "Europe/Helsinki", + "Europe/Kiev", + "Europe/Riga", + "Europe/Sofia", + "Europe/Tallinn", + "Europe/Vilnius", + "Europe/Athens", + "Europe/Istanbul", + "Europe/Minsk", + "Asia/Jerusalem", + "Africa/Harare", + "Africa/Johannesburg", + "Europe/Moscow", + "Europe/Moscow", + "Europe/Moscow", + "Asia/Kuwait", + "Asia/Riyadh", + "Africa/Nairobi", + "Asia/Baghdad", + "Asia/Tehran", + "Asia/Muscat", + "Asia/Muscat", + "Asia/Baku", + "Asia/Tbilisi", + "Asia/Yerevan", + "Asia/Kabul", + "Asia/Yekaterinburg", + "Asia/Karachi", + "Asia/Karachi", + "Asia/Tashkent", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kathmandu", + "Asia/Dhaka", + "Asia/Dhaka", + "Asia/Colombo", + "Asia/Almaty", + "Asia/Novosibirsk", + "Asia/Rangoon", + "Asia/Bangkok", + "Asia/Bangkok", + "Asia/Jakarta", + "Asia/Krasnoyarsk", + "Asia/Shanghai", + "Asia/Chongqing", + "Asia/Hong_Kong", + "Asia/Urumqi", + "Asia/Kuala_Lumpur", + "Asia/Singapore", + "Asia/Taipei", + "Australia/Perth", + "Asia/Irkutsk", + "Asia/Ulaanbaatar", + "Asia/Seoul", + "Asia/Tokyo", + "Asia/Tokyo", + "Asia/Tokyo", + "Asia/Yakutsk", + "Australia/Darwin", + "Australia/Adelaide", + "Australia/Melbourne", + "Australia/Melbourne", + "Australia/Sydney", + "Australia/Brisbane", + "Australia/Hobart", + "Asia/Vladivostok", + "Pacific/Guam", + "Pacific/Port_Moresby", + "Asia/Magadan", + "Asia/Magadan", + "Pacific/Noumea", + "Pacific/Fiji", + "Asia/Kamchatka", + "Pacific/Majuro", + "Pacific/Auckland", + "Pacific/Auckland", + "Pacific/Tongatapu", + "Pacific/Fakaofo", + "Pacific/Apia" +]; + +},{}],123:[function(require,module,exports){ +module["exports"] = [ + "Adaptive", + "Advanced", + "Ameliorated", + "Assimilated", + "Automated", + "Balanced", + "Business-focused", + "Centralized", + "Cloned", + "Compatible", + "Configurable", + "Cross-group", + "Cross-platform", + "Customer-focused", + "Customizable", + "Decentralized", + "De-engineered", + "Devolved", + "Digitized", + "Distributed", + "Diverse", + "Down-sized", + "Enhanced", + "Enterprise-wide", + "Ergonomic", + "Exclusive", + "Expanded", + "Extended", + "Face to face", + "Focused", + "Front-line", + "Fully-configurable", + "Function-based", + "Fundamental", + "Future-proofed", + "Grass-roots", + "Horizontal", + "Implemented", + "Innovative", + "Integrated", + "Intuitive", + "Inverse", + "Managed", + "Mandatory", + "Monitored", + "Multi-channelled", + "Multi-lateral", + "Multi-layered", + "Multi-tiered", + "Networked", + "Object-based", + "Open-architected", + "Open-source", + "Operative", + "Optimized", + "Optional", + "Organic", + "Organized", + "Persevering", + "Persistent", + "Phased", + "Polarised", + "Pre-emptive", + "Proactive", + "Profit-focused", + "Profound", + "Programmable", + "Progressive", + "Public-key", + "Quality-focused", + "Reactive", + "Realigned", + "Re-contextualized", + "Re-engineered", + "Reduced", + "Reverse-engineered", + "Right-sized", + "Robust", + "Seamless", + "Secured", + "Self-enabling", + "Sharable", + "Stand-alone", + "Streamlined", + "Switchable", + "Synchronised", + "Synergistic", + "Synergized", + "Team-oriented", + "Total", + "Triple-buffered", + "Universal", + "Up-sized", + "Upgradable", + "User-centric", + "User-friendly", + "Versatile", + "Virtual", + "Visionary", + "Vision-oriented" +]; + +},{}],124:[function(require,module,exports){ +module["exports"] = [ + "clicks-and-mortar", + "value-added", + "vertical", + "proactive", + "robust", + "revolutionary", + "scalable", + "leading-edge", + "innovative", + "intuitive", + "strategic", + "e-business", + "mission-critical", + "sticky", + "one-to-one", + "24/7", + "end-to-end", + "global", + "B2B", + "B2C", + "granular", + "frictionless", + "virtual", + "viral", + "dynamic", + "24/365", + "best-of-breed", + "killer", + "magnetic", + "bleeding-edge", + "web-enabled", + "interactive", + "dot-com", + "sexy", + "back-end", + "real-time", + "efficient", + "front-end", + "distributed", + "seamless", + "extensible", + "turn-key", + "world-class", + "open-source", + "cross-platform", + "cross-media", + "synergistic", + "bricks-and-clicks", + "out-of-the-box", + "enterprise", + "integrated", + "impactful", + "wireless", + "transparent", + "next-generation", + "cutting-edge", + "user-centric", + "visionary", + "customized", + "ubiquitous", + "plug-and-play", + "collaborative", + "compelling", + "holistic", + "rich", + "synergies", + "web-readiness", + "paradigms", + "markets", + "partnerships", + "infrastructures", + "platforms", + "initiatives", + "channels", + "eyeballs", + "communities", + "ROI", + "solutions", + "e-tailers", + "e-services", + "action-items", + "portals", + "niches", + "technologies", + "content", + "vortals", + "supply-chains", + "convergence", + "relationships", + "architectures", + "interfaces", + "e-markets", + "e-commerce", + "systems", + "bandwidth", + "infomediaries", + "models", + "mindshare", + "deliverables", + "users", + "schemas", + "networks", + "applications", + "metrics", + "e-business", + "functionalities", + "experiences", + "web services", + "methodologies" +]; + +},{}],125:[function(require,module,exports){ +module["exports"] = [ + "implement", + "utilize", + "integrate", + "streamline", + "optimize", + "evolve", + "transform", + "embrace", + "enable", + "orchestrate", + "leverage", + "reinvent", + "aggregate", + "architect", + "enhance", + "incentivize", + "morph", + "empower", + "envisioneer", + "monetize", + "harness", + "facilitate", + "seize", + "disintermediate", + "synergize", + "strategize", + "deploy", + "brand", + "grow", + "target", + "syndicate", + "synthesize", + "deliver", + "mesh", + "incubate", + "engage", + "maximize", + "benchmark", + "expedite", + "reintermediate", + "whiteboard", + "visualize", + "repurpose", + "innovate", + "scale", + "unleash", + "drive", + "extend", + "engineer", + "revolutionize", + "generate", + "exploit", + "transition", + "e-enable", + "iterate", + "cultivate", + "matrix", + "productize", + "redefine", + "recontextualize" +]; + +},{}],126:[function(require,module,exports){ +module["exports"] = [ + "24 hour", + "24/7", + "3rd generation", + "4th generation", + "5th generation", + "6th generation", + "actuating", + "analyzing", + "asymmetric", + "asynchronous", + "attitude-oriented", + "background", + "bandwidth-monitored", + "bi-directional", + "bifurcated", + "bottom-line", + "clear-thinking", + "client-driven", + "client-server", + "coherent", + "cohesive", + "composite", + "context-sensitive", + "contextually-based", + "content-based", + "dedicated", + "demand-driven", + "didactic", + "directional", + "discrete", + "disintermediate", + "dynamic", + "eco-centric", + "empowering", + "encompassing", + "even-keeled", + "executive", + "explicit", + "exuding", + "fault-tolerant", + "foreground", + "fresh-thinking", + "full-range", + "global", + "grid-enabled", + "heuristic", + "high-level", + "holistic", + "homogeneous", + "human-resource", + "hybrid", + "impactful", + "incremental", + "intangible", + "interactive", + "intermediate", + "leading edge", + "local", + "logistical", + "maximized", + "methodical", + "mission-critical", + "mobile", + "modular", + "motivating", + "multimedia", + "multi-state", + "multi-tasking", + "national", + "needs-based", + "neutral", + "next generation", + "non-volatile", + "object-oriented", + "optimal", + "optimizing", + "radical", + "real-time", + "reciprocal", + "regional", + "responsive", + "scalable", + "secondary", + "solution-oriented", + "stable", + "static", + "systematic", + "systemic", + "system-worthy", + "tangible", + "tertiary", + "transitional", + "uniform", + "upward-trending", + "user-facing", + "value-added", + "web-enabled", + "well-modulated", + "zero administration", + "zero defect", + "zero tolerance" +]; + +},{}],127:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.adjective = require("./adjective"); +company.descriptor = require("./descriptor"); +company.noun = require("./noun"); +company.bs_verb = require("./bs_verb"); +company.bs_noun = require("./bs_noun"); +company.name = require("./name"); + +},{"./adjective":123,"./bs_noun":124,"./bs_verb":125,"./descriptor":126,"./name":128,"./noun":129,"./suffix":130}],128:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name} #{suffix}", + "#{Name.man_last_name} a #{Name.man_last_name} #{suffix}" +]; + +},{}],129:[function(require,module,exports){ +module["exports"] = [ + "ability", + "access", + "adapter", + "algorithm", + "alliance", + "analyzer", + "application", + "approach", + "architecture", + "archive", + "artificial intelligence", + "array", + "attitude", + "benchmark", + "budgetary management", + "capability", + "capacity", + "challenge", + "circuit", + "collaboration", + "complexity", + "concept", + "conglomeration", + "contingency", + "core", + "customer loyalty", + "database", + "data-warehouse", + "definition", + "emulation", + "encoding", + "encryption", + "extranet", + "firmware", + "flexibility", + "focus group", + "forecast", + "frame", + "framework", + "function", + "functionalities", + "Graphic Interface", + "groupware", + "Graphical User Interface", + "hardware", + "help-desk", + "hierarchy", + "hub", + "implementation", + "info-mediaries", + "infrastructure", + "initiative", + "installation", + "instruction set", + "interface", + "internet solution", + "intranet", + "knowledge user", + "knowledge base", + "local area network", + "leverage", + "matrices", + "matrix", + "methodology", + "middleware", + "migration", + "model", + "moderator", + "monitoring", + "moratorium", + "neural-net", + "open architecture", + "open system", + "orchestration", + "paradigm", + "parallelism", + "policy", + "portal", + "pricing structure", + "process improvement", + "product", + "productivity", + "project", + "projection", + "protocol", + "secured line", + "service-desk", + "software", + "solution", + "standardization", + "strategy", + "structure", + "success", + "superstructure", + "support", + "synergy", + "system engine", + "task-force", + "throughput", + "time-frame", + "toolset", + "utilisation", + "website", + "workforce" +]; + +},{}],130:[function(require,module,exports){ +module["exports"] = [ + "s.r.o.", + "a.s.", + "v.o.s." +]; + +},{}],131:[function(require,module,exports){ +arguments[4][92][0].apply(exports,arguments) +},{"./month":132,"./weekday":133,"dup":92}],132:[function(require,module,exports){ +// Source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/en.xml#L1799 +module["exports"] = { + wide: [ + "Leden", + "Únor", + "Březen", + "Duben", + "Květen", + "Červen", + "Červenec", + "Srpen", + "Září", + "Říjen", + "Listopad", + "Prosinec" + ], + // Property "wide_context" is optional, if not set then "wide" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + wide_context: [ + "Leden", + "Únor", + "Březen", + "Duben", + "Květen", + "Červen", + "Červenec", + "Srpen", + "Září", + "Říjen", + "Listopad", + "Prosinec" + ], + abbr: [ + "Led", + "Úno", + "Bře", + "Dub", + "Kvě", + "Čer", + "Črc", + "Srp", + "Zář", + "Říj", + "Lis", + "Pro" + ], + // Property "abbr_context" is optional, if not set then "abbr" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + abbr_context: [ + "Led", + "Úno", + "Bře", + "Dub", + "Kvě", + "Čer", + "Črc", + "Srp", + "Zář", + "Říj", + "Lis", + "Pro" + ] +}; + +},{}],133:[function(require,module,exports){ +// Source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/en.xml#L1847 +module["exports"] = { + wide: [ + "Pondělí", + "Úterý", + "Středa", + "čtvrtek", + "Pátek", + "Sobota", + "Neděle" + ], + // Property "wide_context" is optional, if not set then "wide" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + wide_context: [ + "Pondělí", + "Úterý", + "Středa", + "čtvrtek", + "Pátek", + "Sobota", + "Neděle" + ], + abbr: [ + "Po", + "Út", + "St", + "čt", + "Pá", + "So", + "Ne" + ], + // Property "abbr_context" is optional, if not set then "abbr" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + abbr_context: [ + "Po", + "Út", + "St", + "čt", + "Pá", + "So", + "Ne" + ] +}; + +},{}],134:[function(require,module,exports){ +var cz = {}; +module['exports'] = cz; +cz.title = "Czech"; +cz.address = require("./address"); +cz.company = require("./company"); +cz.internet = require("./internet"); +cz.lorem = require("./lorem"); +cz.name = require("./name"); +cz.phone_number = require("./phone_number"); +cz.date = require("./date"); + +},{"./address":114,"./company":127,"./date":131,"./internet":137,"./lorem":138,"./name":143,"./phone_number":151}],135:[function(require,module,exports){ +module["exports"] = [ + "cz", + "com", + "net", + "eu", + "org" +]; + +},{}],136:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "seznam.cz", + "centrum.cz", + "volny.cz", + "atlas.cz" +]; + +},{}],137:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":135,"./free_email":136,"dup":98}],138:[function(require,module,exports){ +var lorem = {}; +module['exports'] = lorem; +lorem.words = require("./words"); +lorem.supplemental = require("./supplemental"); + +},{"./supplemental":139,"./words":140}],139:[function(require,module,exports){ +module["exports"] = [ + "abbas", + "abduco", + "abeo", + "abscido", + "absconditus", + "absens", + "absorbeo", + "absque", + "abstergo", + "absum", + "abundans", + "abutor", + "accedo", + "accendo", + "acceptus", + "accipio", + "accommodo", + "accusator", + "acer", + "acerbitas", + "acervus", + "acidus", + "acies", + "acquiro", + "acsi", + "adamo", + "adaugeo", + "addo", + "adduco", + "ademptio", + "adeo", + "adeptio", + "adfectus", + "adfero", + "adficio", + "adflicto", + "adhaero", + "adhuc", + "adicio", + "adimpleo", + "adinventitias", + "adipiscor", + "adiuvo", + "administratio", + "admiratio", + "admitto", + "admoneo", + "admoveo", + "adnuo", + "adopto", + "adsidue", + "adstringo", + "adsuesco", + "adsum", + "adulatio", + "adulescens", + "adultus", + "aduro", + "advenio", + "adversus", + "advoco", + "aedificium", + "aeger", + "aegre", + "aegrotatio", + "aegrus", + "aeneus", + "aequitas", + "aequus", + "aer", + "aestas", + "aestivus", + "aestus", + "aetas", + "aeternus", + "ager", + "aggero", + "aggredior", + "agnitio", + "agnosco", + "ago", + "ait", + "aiunt", + "alienus", + "alii", + "alioqui", + "aliqua", + "alius", + "allatus", + "alo", + "alter", + "altus", + "alveus", + "amaritudo", + "ambitus", + "ambulo", + "amicitia", + "amiculum", + "amissio", + "amita", + "amitto", + "amo", + "amor", + "amoveo", + "amplexus", + "amplitudo", + "amplus", + "ancilla", + "angelus", + "angulus", + "angustus", + "animadverto", + "animi", + "animus", + "annus", + "anser", + "ante", + "antea", + "antepono", + "antiquus", + "aperio", + "aperte", + "apostolus", + "apparatus", + "appello", + "appono", + "appositus", + "approbo", + "apto", + "aptus", + "apud", + "aqua", + "ara", + "aranea", + "arbitro", + "arbor", + "arbustum", + "arca", + "arceo", + "arcesso", + "arcus", + "argentum", + "argumentum", + "arguo", + "arma", + "armarium", + "armo", + "aro", + "ars", + "articulus", + "artificiose", + "arto", + "arx", + "ascisco", + "ascit", + "asper", + "aspicio", + "asporto", + "assentator", + "astrum", + "atavus", + "ater", + "atqui", + "atrocitas", + "atrox", + "attero", + "attollo", + "attonbitus", + "auctor", + "auctus", + "audacia", + "audax", + "audentia", + "audeo", + "audio", + "auditor", + "aufero", + "aureus", + "auris", + "aurum", + "aut", + "autem", + "autus", + "auxilium", + "avaritia", + "avarus", + "aveho", + "averto", + "avoco", + "baiulus", + "balbus", + "barba", + "bardus", + "basium", + "beatus", + "bellicus", + "bellum", + "bene", + "beneficium", + "benevolentia", + "benigne", + "bestia", + "bibo", + "bis", + "blandior", + "bonus", + "bos", + "brevis", + "cado", + "caecus", + "caelestis", + "caelum", + "calamitas", + "calcar", + "calco", + "calculus", + "callide", + "campana", + "candidus", + "canis", + "canonicus", + "canto", + "capillus", + "capio", + "capitulus", + "capto", + "caput", + "carbo", + "carcer", + "careo", + "caries", + "cariosus", + "caritas", + "carmen", + "carpo", + "carus", + "casso", + "caste", + "casus", + "catena", + "caterva", + "cattus", + "cauda", + "causa", + "caute", + "caveo", + "cavus", + "cedo", + "celebrer", + "celer", + "celo", + "cena", + "cenaculum", + "ceno", + "censura", + "centum", + "cerno", + "cernuus", + "certe", + "certo", + "certus", + "cervus", + "cetera", + "charisma", + "chirographum", + "cibo", + "cibus", + "cicuta", + "cilicium", + "cimentarius", + "ciminatio", + "cinis", + "circumvenio", + "cito", + "civis", + "civitas", + "clam", + "clamo", + "claro", + "clarus", + "claudeo", + "claustrum", + "clementia", + "clibanus", + "coadunatio", + "coaegresco", + "coepi", + "coerceo", + "cogito", + "cognatus", + "cognomen", + "cogo", + "cohaero", + "cohibeo", + "cohors", + "colligo", + "colloco", + "collum", + "colo", + "color", + "coma", + "combibo", + "comburo", + "comedo", + "comes", + "cometes", + "comis", + "comitatus", + "commemoro", + "comminor", + "commodo", + "communis", + "comparo", + "compello", + "complectus", + "compono", + "comprehendo", + "comptus", + "conatus", + "concedo", + "concido", + "conculco", + "condico", + "conduco", + "confero", + "confido", + "conforto", + "confugo", + "congregatio", + "conicio", + "coniecto", + "conitor", + "coniuratio", + "conor", + "conqueror", + "conscendo", + "conservo", + "considero", + "conspergo", + "constans", + "consuasor", + "contabesco", + "contego", + "contigo", + "contra", + "conturbo", + "conventus", + "convoco", + "copia", + "copiose", + "cornu", + "corona", + "corpus", + "correptius", + "corrigo", + "corroboro", + "corrumpo", + "coruscus", + "cotidie", + "crapula", + "cras", + "crastinus", + "creator", + "creber", + "crebro", + "credo", + "creo", + "creptio", + "crepusculum", + "cresco", + "creta", + "cribro", + "crinis", + "cruciamentum", + "crudelis", + "cruentus", + "crur", + "crustulum", + "crux", + "cubicularis", + "cubitum", + "cubo", + "cui", + "cuius", + "culpa", + "culpo", + "cultellus", + "cultura", + "cum", + "cunabula", + "cunae", + "cunctatio", + "cupiditas", + "cupio", + "cuppedia", + "cupressus", + "cur", + "cura", + "curatio", + "curia", + "curiositas", + "curis", + "curo", + "curriculum", + "currus", + "cursim", + "curso", + "cursus", + "curto", + "curtus", + "curvo", + "curvus", + "custodia", + "damnatio", + "damno", + "dapifer", + "debeo", + "debilito", + "decens", + "decerno", + "decet", + "decimus", + "decipio", + "decor", + "decretum", + "decumbo", + "dedecor", + "dedico", + "deduco", + "defaeco", + "defendo", + "defero", + "defessus", + "defetiscor", + "deficio", + "defigo", + "defleo", + "defluo", + "defungo", + "degenero", + "degero", + "degusto", + "deinde", + "delectatio", + "delego", + "deleo", + "delibero", + "delicate", + "delinquo", + "deludo", + "demens", + "demergo", + "demitto", + "demo", + "demonstro", + "demoror", + "demulceo", + "demum", + "denego", + "denique", + "dens", + "denuncio", + "denuo", + "deorsum", + "depereo", + "depono", + "depopulo", + "deporto", + "depraedor", + "deprecator", + "deprimo", + "depromo", + "depulso", + "deputo", + "derelinquo", + "derideo", + "deripio", + "desidero", + "desino", + "desipio", + "desolo", + "desparatus", + "despecto", + "despirmatio", + "infit", + "inflammatio", + "paens", + "patior", + "patria", + "patrocinor", + "patruus", + "pauci", + "paulatim", + "pauper", + "pax", + "peccatus", + "pecco", + "pecto", + "pectus", + "pecunia", + "pecus", + "peior", + "pel", + "ocer", + "socius", + "sodalitas", + "sol", + "soleo", + "solio", + "solitudo", + "solium", + "sollers", + "sollicito", + "solum", + "solus", + "solutio", + "solvo", + "somniculosus", + "somnus", + "sonitus", + "sono", + "sophismata", + "sopor", + "sordeo", + "sortitus", + "spargo", + "speciosus", + "spectaculum", + "speculum", + "sperno", + "spero", + "spes", + "spiculum", + "spiritus", + "spoliatio", + "sponte", + "stabilis", + "statim", + "statua", + "stella", + "stillicidium", + "stipes", + "stips", + "sto", + "strenuus", + "strues", + "studio", + "stultus", + "suadeo", + "suasoria", + "sub", + "subito", + "subiungo", + "sublime", + "subnecto", + "subseco", + "substantia", + "subvenio", + "succedo", + "succurro", + "sufficio", + "suffoco", + "suffragium", + "suggero", + "sui", + "sulum", + "sum", + "summa", + "summisse", + "summopere", + "sumo", + "sumptus", + "supellex", + "super", + "suppellex", + "supplanto", + "suppono", + "supra", + "surculus", + "surgo", + "sursum", + "suscipio", + "suspendo", + "sustineo", + "suus", + "synagoga", + "tabella", + "tabernus", + "tabesco", + "tabgo", + "tabula", + "taceo", + "tactus", + "taedium", + "talio", + "talis", + "talus", + "tam", + "tamdiu", + "tamen", + "tametsi", + "tamisium", + "tamquam", + "tandem", + "tantillus", + "tantum", + "tardus", + "tego", + "temeritas", + "temperantia", + "templum", + "temptatio", + "tempus", + "tenax", + "tendo", + "teneo", + "tener", + "tenuis", + "tenus", + "tepesco", + "tepidus", + "ter", + "terebro", + "teres", + "terga", + "tergeo", + "tergiversatio", + "tergo", + "tergum", + "termes", + "terminatio", + "tero", + "terra", + "terreo", + "territo", + "terror", + "tersus", + "tertius", + "testimonium", + "texo", + "textilis", + "textor", + "textus", + "thalassinus", + "theatrum", + "theca", + "thema", + "theologus", + "thermae", + "thesaurus", + "thesis", + "thorax", + "thymbra", + "thymum", + "tibi", + "timidus", + "timor", + "titulus", + "tolero", + "tollo", + "tondeo", + "tonsor", + "torqueo", + "torrens", + "tot", + "totidem", + "toties", + "totus", + "tracto", + "trado", + "traho", + "trans", + "tredecim", + "tremo", + "trepide", + "tres", + "tribuo", + "tricesimus", + "triduana", + "triginta", + "tripudio", + "tristis", + "triumphus", + "trucido", + "truculenter", + "tubineus", + "tui", + "tum", + "tumultus", + "tunc", + "turba", + "turbo", + "turpe", + "turpis", + "tutamen", + "tutis", + "tyrannus", + "uberrime", + "ubi", + "ulciscor", + "ullus", + "ulterius", + "ultio", + "ultra", + "umbra", + "umerus", + "umquam", + "una", + "unde", + "undique", + "universe", + "unus", + "urbanus", + "urbs", + "uredo", + "usitas", + "usque", + "ustilo", + "ustulo", + "usus", + "uter", + "uterque", + "utilis", + "utique", + "utor", + "utpote", + "utrimque", + "utroque", + "utrum", + "uxor", + "vaco", + "vacuus", + "vado", + "vae", + "valde", + "valens", + "valeo", + "valetudo", + "validus", + "vallum", + "vapulus", + "varietas", + "varius", + "vehemens", + "vel", + "velociter", + "velum", + "velut", + "venia", + "venio", + "ventito", + "ventosus", + "ventus", + "venustas", + "ver", + "verbera", + "verbum", + "vere", + "verecundia", + "vereor", + "vergo", + "veritas", + "vero", + "versus", + "verto", + "verumtamen", + "verus", + "vesco", + "vesica", + "vesper", + "vespillo", + "vester", + "vestigium", + "vestrum", + "vetus", + "via", + "vicinus", + "vicissitudo", + "victoria", + "victus", + "videlicet", + "video", + "viduata", + "viduo", + "vigilo", + "vigor", + "vilicus", + "vilis", + "vilitas", + "villa", + "vinco", + "vinculum", + "vindico", + "vinitor", + "vinum", + "vir", + "virga", + "virgo", + "viridis", + "viriliter", + "virtus", + "vis", + "viscus", + "vita", + "vitiosus", + "vitium", + "vito", + "vivo", + "vix", + "vobis", + "vociferor", + "voco", + "volaticus", + "volo", + "volubilis", + "voluntarius", + "volup", + "volutabrum", + "volva", + "vomer", + "vomica", + "vomito", + "vorago", + "vorax", + "voro", + "vos", + "votum", + "voveo", + "vox", + "vulariter", + "vulgaris", + "vulgivagus", + "vulgo", + "vulgus", + "vulnero", + "vulnus", + "vulpes", + "vulticulus", + "vultuosus", + "xiphias" +]; + +},{}],140:[function(require,module,exports){ +module["exports"] = [ + "alias", + "consequatur", + "aut", + "perferendis", + "sit", + "voluptatem", + "accusantium", + "doloremque", + "aperiam", + "eaque", + "ipsa", + "quae", + "ab", + "illo", + "inventore", + "veritatis", + "et", + "quasi", + "architecto", + "beatae", + "vitae", + "dicta", + "sunt", + "explicabo", + "aspernatur", + "aut", + "odit", + "aut", + "fugit", + "sed", + "quia", + "consequuntur", + "magni", + "dolores", + "eos", + "qui", + "ratione", + "voluptatem", + "sequi", + "nesciunt", + "neque", + "dolorem", + "ipsum", + "quia", + "dolor", + "sit", + "amet", + "consectetur", + "adipisci", + "velit", + "sed", + "quia", + "non", + "numquam", + "eius", + "modi", + "tempora", + "incidunt", + "ut", + "labore", + "et", + "dolore", + "magnam", + "aliquam", + "quaerat", + "voluptatem", + "ut", + "enim", + "ad", + "minima", + "veniam", + "quis", + "nostrum", + "exercitationem", + "ullam", + "corporis", + "nemo", + "enim", + "ipsam", + "voluptatem", + "quia", + "voluptas", + "sit", + "suscipit", + "laboriosam", + "nisi", + "ut", + "aliquid", + "ex", + "ea", + "commodi", + "consequatur", + "quis", + "autem", + "vel", + "eum", + "iure", + "reprehenderit", + "qui", + "in", + "ea", + "voluptate", + "velit", + "esse", + "quam", + "nihil", + "molestiae", + "et", + "iusto", + "odio", + "dignissimos", + "ducimus", + "qui", + "blanditiis", + "praesentium", + "laudantium", + "totam", + "rem", + "voluptatum", + "deleniti", + "atque", + "corrupti", + "quos", + "dolores", + "et", + "quas", + "molestias", + "excepturi", + "sint", + "occaecati", + "cupiditate", + "non", + "provident", + "sed", + "ut", + "perspiciatis", + "unde", + "omnis", + "iste", + "natus", + "error", + "similique", + "sunt", + "in", + "culpa", + "qui", + "officia", + "deserunt", + "mollitia", + "animi", + "id", + "est", + "laborum", + "et", + "dolorum", + "fuga", + "et", + "harum", + "quidem", + "rerum", + "facilis", + "est", + "et", + "expedita", + "distinctio", + "nam", + "libero", + "tempore", + "cum", + "soluta", + "nobis", + "est", + "eligendi", + "optio", + "cumque", + "nihil", + "impedit", + "quo", + "porro", + "quisquam", + "est", + "qui", + "minus", + "id", + "quod", + "maxime", + "placeat", + "facere", + "possimus", + "omnis", + "voluptas", + "assumenda", + "est", + "omnis", + "dolor", + "repellendus", + "temporibus", + "autem", + "quibusdam", + "et", + "aut", + "consequatur", + "vel", + "illum", + "qui", + "dolorem", + "eum", + "fugiat", + "quo", + "voluptas", + "nulla", + "pariatur", + "at", + "vero", + "eos", + "et", + "accusamus", + "officiis", + "debitis", + "aut", + "rerum", + "necessitatibus", + "saepe", + "eveniet", + "ut", + "et", + "voluptates", + "repudiandae", + "sint", + "et", + "molestiae", + "non", + "recusandae", + "itaque", + "earum", + "rerum", + "hic", + "tenetur", + "a", + "sapiente", + "delectus", + "ut", + "aut", + "reiciendis", + "voluptatibus", + "maiores", + "doloribus", + "asperiores", + "repellat" +]; + +},{}],141:[function(require,module,exports){ +module["exports"] = [ + "Abigail", + "Ada", + "Adalberta", + "Adéla", + "Adelaida", + "Adina", + "Adolfa", + "Adolfína", + "Adriana", + "Adriána", + "Adriena", + "Afra", + "Agáta", + "Aglaja", + "Aida", + "Alana", + "Albena", + "Alberta", + "Albertina", + "Albertýna", + "Albína", + "Alena", + "Aleška", + "Alexandra", + "Alfréda", + "Alice", + "Alida", + "Alina", + "Alma", + "Aloisie", + "Alojzije", + "Alžběta", + "Amálie", + "Amanda", + "Amáta", + "Amélie", + "Anabela", + "Anastázie", + "Anatázie", + "Anatolie", + "Anatólie", + "Anděla", + "Andělína", + "Andrea", + "Aneta", + "Anežka", + "Angela", + "Angelika", + "Anita", + "Anna", + "Anselma", + "Antonie", + "Apolena", + "Arabela", + "Aranka", + "Areta", + "Ariadna", + "Ariana", + "Ariela", + "Arleta", + "Armida", + "Arna", + "Arnolda", + "Arnoštka", + "Astrid", + "Astrida", + "Atanázie", + "Augusta", + "Augustina", + "Augustýna", + "Aura", + "Aurélie", + "Aurora", + "Babeta", + "Barbara", + "Barbora", + "Beáta", + "Beatrice", + "Bedřiška", + "Bela", + "Běla", + "Belinda", + "Benedikta", + "Berenika", + "Berit", + "Bernarda", + "Berta", + "Bertolda", + "Bianka", + "Bibiana", + "Birgit", + "Birgita", + "Blahomila", + "Blahomíra", + "Blahoslava", + "Blanka", + "Blažena", + "Bohdana", + "Bohumila", + "Bohumíra", + "Bohuna", + "Bohuslava", + "Bohuše", + "Bojana", + "Bojislava", + "Boleslava", + "Borislava", + "Bořislava", + "Božena", + "Božetěcha", + "Božidara", + "Branimíra", + "Branislava", + "Bratislava", + "Brenda", + "Brigita", + "Brita", + "Bronislava", + "Bruna", + "Brunhilda", + "Břetislava", + "Cecilie", + "Cecílie", + "Celestina", + "Celestýna", + "Celie", + "Celina", + "Ctibora", + "Ctirada", + "Ctislava", + "Cyntie", + "Cyrila", + "Čeňka", + "Čestmíra", + "Čistoslava", + "Dagmar", + "Dagmara", + "Dalibora", + "Dalida", + "Dalie", + "Dalila", + "Dalimila", + "Dalimíra", + "Damaris", + "Damiana", + "Damiána", + "Dana", + "Danica", + "Daniela", + "Danuše", + "Danuta", + "Daria", + "Darie", + "Darina", + "Darja", + "Davida", + "Debora", + "Delie", + "Denisa", + "Diana", + "Dina", + "Dita", + "Diviška", + "Dobrava", + "Dobromila", + "Dobromíra", + "Dobroslava", + "Dominika", + "Donalda", + "Donáta", + "Dora", + "Doris", + "Dorota", + "Doubrava", + "Doubravka", + "Drahomila", + "Drahomíra", + "Drahoslava", + "Drahotína", + "Drahuše", + "Dulcinea", + "Dušana", + "Edita", + "Eduarda", + "Edvarda", + "Egona", + "Ela", + "Elektra", + "Elena", + "Eleonora", + "Elfrída", + "Eliška", + "Elsa", + "Elvíra", + "Elza", + "Ema", + "Emanuela", + "Emilie", + "Emílie", + "Erika", + "Erna", + "Ervína", + "Estela", + "Ester", + "Estera", + "Etela", + "Eufrozina", + "Eufrozína", + "Eugenie", + "Eulálie", + "Eunika", + "Eusebie", + "Eva", + "Evelina", + "Evelína", + "Evženie", + "Fabiána", + "Fabie", + "Fatima", + "Faustina", + "Faustýna", + "Féba", + "Fedora", + "Felicie", + "Felície", + "Felicita", + "Ferdinanda", + "Fidelie", + "Filipa", + "Filoména", + "Flavie", + "Flora", + "Flóra", + "Florentina", + "Florentýna", + "Františka", + "Frída", + "Gabriela", + "Gaja", + "Gajana", + "Galina", + "Garika", + "Gema", + "Geralda", + "Geraldina", + "Gerarda", + "Gerardina", + "Gerda", + "Gerharda", + "Gertruda", + "Gilberta", + "Gina", + "Gisela", + "Gita", + "Gizela", + "Glorie", + "Gordana", + "Graciána", + "Gracie", + "Grácie", + "Gražina", + "Gréta", + "Griselda", + "Grizelda", + "Gudrun", + "Gustava", + "Gvendolina", + "Gvendolína", + "Halina", + "Hana", + "Háta", + "Havla", + "Heda", + "Hedvika", + "Heidrun", + "Helena", + "Helga", + "Herberta", + "Hermína", + "Herta", + "Hilda", + "Hortensie", + "Hortenzie", + "Horymíra", + "Hostimila", + "Hostimíra", + "Hostislava", + "Hvězdoslava", + "Hyacinta", + "Chranislava", + "Iboja", + "Ida", + "Ignácie", + "Ignáta", + "Ildika", + "Iljana", + "Ilona", + "Ilsa", + "Ilza", + "Ines", + "Inesa", + "Inéz", + "Ingeborg", + "Ingeborga", + "Ingrid", + "Ingrida", + "Inka", + "Irena", + "Iris", + "Irma", + "Isabela", + "Isidora", + "Isolda", + "Iva", + "Ivana", + "Iveta", + "Ivona", + "Izabela", + "Izidora", + "Izolda", + "Jadrana", + "Jadranka", + "Jakuba", + "Jakubka", + "Jana", + "Jarmila", + "Jarolíma", + "Jaromíra", + "Jaroslava", + "Jasmína", + "Jasna", + "Jasněna", + "Jelena", + "Jenovéfa", + "Jesika", + "Jindra", + "Jindřiška", + "Jiřina", + "Jitka", + "Johana", + "Jolana", + "Jolanta", + "Jordana", + "Jorga", + "Josefa", + "Josefína", + "Jovana", + "Jozefa", + "Jozefína", + "Judita", + "Juliana", + "Juliána", + "Julie", + "Justina", + "Justýna", + "Juta", + "Kamila", + "Karin", + "Karina", + "Karla", + "Karmela", + "Karmen", + "Karolina", + "Karolína", + "Kateřina", + "Katrin", + "Katrina", + "Kazi", + "Kazimíra", + "Kira", + "Klára", + "Klaudie", + "Klementina", + "Klementýna", + "Kleopatra", + "Klotylda", + "Koleta", + "Kolombína", + "Kolumbína", + "Konstance", + "Konstancie", + "Konsuela", + "Konzuela", + "Kora", + "Kordula", + "Korina", + "Kornélie", + "Krasava", + "Krasomila", + "Kristina", + "Kristýna", + "Kunhuta", + "Květa", + "Květoslava", + "Květuše", + "Lada", + "Ladislava", + "Larisa", + "Laura", + "Laurencie", + "Lea", + "Léda", + "Leila", + "Lejla", + "Lena", + "Lenka", + "Leokádie", + "Leona", + "Leonora", + "Leontina", + "Leontýna", + "Leopolda", + "Leopoldina", + "Leopoldýna", + "Leticie", + "Lia", + "Liana", + "Liběna", + "Libora", + "Liboslava", + "Libuše", + "Lidmila", + "Liliana", + "Lina", + "Linda", + "Livie", + "Ljuba", + "Lola", + "Loreta", + "Lorna", + "Lota", + "Lubomíra", + "Luboslava", + "Luciána", + "Lucie", + "Ludiše", + "Luďka", + "Ludmila", + "Ludomíra", + "Ludoslava", + "Ludvika", + "Ludvíka", + "Luisa", + "Lujza", + "Lukrécie", + "Lumíra", + "Lydie", + "Lýdie", + "Mabel", + "Mabela", + "Magda", + "Magdalena", + "Magdaléna", + "Mahulena", + "Maja", + "Mája", + "Malvína", + "Manon", + "Manona", + "Manuela", + "Marcela", + "Marcelína", + "Margit", + "Margita", + "Mariana", + "Marie", + "Marieta", + "Marika", + "Marilyn", + "Marina", + "Mariola", + "Marion", + "Marisa", + "Marita", + "Markéta", + "Marlena", + "Marta", + "Martina", + "Matylda", + "Maud", + "Maxima", + "Mečislava", + "Medea", + "Médea", + "Melánie", + "Melinda", + "Melisa", + "Melita", + "Mercedes", + "Michaela", + "Michala", + "Milada", + "Milana", + "Milena", + "Miloslava", + "Milred", + "Miluše", + "Mína", + "Mira", + "Mirabela", + "Miranda", + "Mirela", + "Miriam", + "Mirjam", + "Mirka", + "Miromila", + "Miroslava", + "Mnislava", + "Mona", + "Monika", + "Muriel", + "Muriela", + "Myrna", + "Naďa", + "Naděžda", + "Naneta", + "Narcisa", + "Natalie", + "Natálie", + "Nataša", + "Neda", + "Nela", + "Nevena", + "Nika", + "Niké", + "Nikodéma", + "Nikol", + "Nikola", + "Nila", + "Nina", + "Noema", + "Noemi", + "Nona", + "Nora", + "Norberta", + "Norma", + "Odeta", + "Ofélie", + "Oktavie", + "Oktávie", + "Oldřiška", + "Olga", + "Oliva", + "Olivie", + "Olympie", + "Ondřejka", + "Otakara", + "Otilie", + "Otýlie", + "Oxana", + "Palmira", + "Pamela", + "Paskala", + "Patricie", + "Pavla", + "Pavlína", + "Pelagie", + "Penelopa", + "Perla", + "Persida", + "Perzida", + "Petra", + "Petrana", + "Petronela", + "Petronila", + "Petruše", + "Petula", + "Pilar", + "Polyxena", + "Pravdomila", + "Pravomila", + "Pravoslav", + "Pravoslava", + "Priscila", + "Priska", + "Prokopa", + "Přibyslava", + "Radana", + "Radimíra", + "Radislava", + "Radka", + "Radmila", + "Radomila", + "Radomíra", + "Radoslava", + "Radovana", + "Radslava", + "Rafaela", + "Ráchel", + "Raisa", + "Rajsa", + "Ramona", + "Rastislava", + "Rebeka", + "Regina", + "Regína", + "Renata", + "Renáta", + "René", + "Ria", + "Riana", + "Richarda", + "Rina", + "Rita", + "Roberta", + "Robina", + "Romana", + "Rosa", + "Rosalinda", + "Rosamunda", + "Rosana", + "Rostislava", + "Rovena", + "Roxana", + "Róza", + "Rozálie", + "Rozalinda", + "Rozamunda", + "Rozana", + "Rozina", + "Rozita", + "Rozvita", + "Rudolfa", + "Rudolfina", + "Rudolfína", + "Rut", + "Rút", + "Růžena", + "Řehořka", + "Sabina", + "Sabrina", + "Salomea", + "Salomena", + "Samuela", + "Sandra", + "Sára", + "Saskia", + "Saskie", + "Saxona", + "Selena", + "Selma", + "Senta", + "Serafína", + "Serena", + "Scholastika", + "Sibyla", + "Sidonie", + "Silvána", + "Silvie", + "Simeona", + "Simona", + "Skarlet", + "Skarleta", + "Slavěna", + "Slávka", + "Slavomila", + "Slavomíra", + "Soběslava", + "Sofie", + "Sofronie", + "Solveig", + "Solveiga", + "Soňa", + "Sotira", + "Stanislava", + "Stáza", + "Stela", + "Svatava", + "Svatoslava", + "Světla", + "Světlana", + "Světluše", + "Sylva", + "Sylvie", + "Sylvie", + "Šárka", + "Šarlota", + "Šimona", + "Štěpána", + "Štěpánka", + "Tamara", + "Táňa", + "Taťána", + "Tea", + "Tekla", + "Teodora", + "Teodozie", + "Teofila", + "Tereza", + "Terezie", + "Thea", + "Theodora", + "Theodosie", + "Theofila", + "Tomáška", + "Toska", + "Ulrika", + "Una", + "Uršula", + "Václava", + "Valburga", + "Valdemara", + "Valentina", + "Valentýna", + "Valerie", + "Valérie", + "Vanda", + "Vanesa", + "Věduna", + "Veleslava", + "Velislava", + "Věnceslava", + "Vendelína", + "Vendula", + "Vendulka", + "Věnka", + "Venuše", + "Věra", + "Verona", + "Veronika", + "Věroslava", + "Věslava", + "Vesna", + "Viktorie", + "Viléma", + "Vilemína", + "Vilma", + "Vincencie", + "Viola", + "Violeta", + "Virginie", + "Virgínie", + "Víta", + "Vítězslava", + "Viviana", + "Vladana", + "Vladěna", + "Vladimíra", + "Vladislava", + "Vlasta", + "Vlastimila", + "Vlastimíra", + "Vlastislava", + "Vojmíra", + "Vojslava", + "Vojtěška", + "Voršila", + "Vratislava", + "Xaverie", + "Xenie", + "Zaida", + "Zaira", + "Zbyhněva", + "Zbyňka", + "Zbyslava", + "Zbyška", + "Zdena", + "Zdenka", + "Zdeňka", + "Zdeslava", + "Zdislava", + "Zenobie", + "Zina", + "Zinaida", + "Zita", + "Zlata", + "Zlatomíra", + "Zlatuše", + "Zoe", + "Zoja", + "Zora", + "Zoroslava", + "Zuzana", + "Zvonimíra", + "Žakelina", + "Žakelína", + "Žaneta", + "Ždana", + "Želimíra", + "Želislava", + "Želmíra", + "Žitomíra", + "Žitoslava", + "Živa", + "Živana", + "Žofie", +]; + +},{}],142:[function(require,module,exports){ +module["exports"] = [ + "Adamová", + "Adamcová", + "Adámková", + "Albrechtová", + "Ambrožová", + "Andělová", + "Andrleová", + "Antošová", + "Bajrová", + "Balážová", + "Balcarová", + "Balogová", + "Balounová", + "Baráková", + "Baranová", + "Barešová", + "Bártová", + "Bartáková", + "Bartoňová", + "Bartošová", + "Bartošková", + "Bartůněková", + "Baštová", + "Baurová", + "Bayrová", + "Bažantová", + "Bečková", + "Bečvářová", + "Bednářová", + "Bednaříková", + "Bělohlávková", + "Bendová", + "Benešová", + "Beranová", + "Beránková", + "Bergrová", + "Berková", + "Berkyová", + "Bernardová", + "Bezděková", + "Bílková", + "Bílýová", + "Bínová", + "Bittnrová", + "Blahová", + "Bláhová", + "Blažková", + "Blechová", + "Bobková", + "Bočková", + "Boháčová", + "Boháčková", + "Böhmová", + "Borovičková", + "Boučková", + "Boudová", + "Boušková", + "Brabcová", + "Brabencová", + "Bradová", + "Bradáčová", + "Braunová", + "Brázdová", + "Brázdilová", + "Brejchová", + "Březinová", + "Břízová", + "Brožová", + "Brožková", + "Brychtová", + "Bubeníková", + "Bučková", + "Buchtová", + "Burdová", + "Burešová", + "Burianová", + "Buriánková", + "Byrtusová", + "čadová", + "Cahová", + "čápová", + "čapková", + "čechová", + "čejková", + "čermáková", + "černíková", + "černochová", + "černohorskýová", + "černýová", + "červeňáková", + "červenková", + "červenýová", + "červinková", + "Chaloupková", + "Chalupová", + "Charvátová", + "Chládková", + "Chlupová", + "Chmelařová", + "Chmelíková", + "Chovancová", + "Chromýová", + "Chudobová", + "Chvátalová", + "Chvojková", + "Chytilová", + "Cibulková", + "čiháková", + "Cihlářová", + "Císařová", + "čížková", + "čonková", + "Coufalová", + "čurdová", + "Daněková", + "Danilová", + "Danišová", + "Davidová", + "Dědková", + "Demetrová", + "Dittrichová", + "Divišová", + "Dlouhýová", + "Dobešová", + "Dobiášová", + "Dobrovolnýová", + "Dočekalová", + "Dočkalová", + "Dohnalová", + "Dokoupilová", + "Dolečková", + "Dolejšová", + "Dolejšíová", + "Doležalová", + "Doležlová", + "Doskočilová", + "Dostálová", + "Doubková", + "Doubravová", + "Doušová", + "Drábková", + "Drozdová", + "Dubskýová", + "Duchoňová", + "Dudová", + "Dudková", + "Dufková", + "Dunková", + "Dušková", + "Dvořáčková", + "Dvořáková", + "Dvorskýová", + "Eliášová", + "Erbnová", + "Fabiánová", + "Fantová", + "Farkašová", + "Fejfarová", + "Fenclová", + "Ferencová", + "Ferkoová", + "Fialová", + "Fiedlrová", + "Filipová", + "Fischrová", + "Fišrová", + "Floriánová", + "Fojtíková", + "Foltýnová", + "Formanová", + "Formánková", + "Fořtová", + "Fousková", + "Francová", + "Franěková", + "Franková", + "Fridrichová", + "Frydrychová", + "Fuchsová", + "Fučíková", + "Fuksová", + "Gáborová", + "Gabrilová", + "Gajdošová", + "Gažiová", + "Gottwaldová", + "Gregorová", + "Grubrová", + "Grundzová", + "Grygarová", + "Hájková", + "Hajnýová", + "Hálová", + "Hamplová", + "Hánová", + "Hanáčková", + "Hanáková", + "Hanousková", + "Hanusová", + "Hanušová", + "Hanzalová", + "Hanzlová", + "Hanzlíková", + "Hartmanová", + "Hašková", + "Havlová", + "Havelková", + "Havlíčková", + "Havlíková", + "Havránková", + "Heczkoová", + "Hegrová", + "Hejdová", + "Hejduková", + "Hejlová", + "Hejnová", + "Hendrychová", + "Hermanová", + "Heřmanová", + "Heřmánková", + "Hladíková", + "Hladkýová", + "Hlaváčová", + "Hlaváčková", + "Hlavatýová", + "Hlávková", + "Hloušková", + "Hoffmannová", + "Hofmanová", + "Holanová", + "Holasová", + "Holcová", + "Holečková", + "Holíková", + "Holoubková", + "Holubová", + "Holýová", + "Homolová", + "Homolková", + "Horová", + "Horáčková", + "Horáková", + "Hořejšíová", + "Horkýová", + "Horňáková", + "Horníčková", + "Horníková", + "Horskýová", + "Horvátová", + "Horváthová", + "Hošková", + "Houdková", + "Houšková", + "Hovorková", + "Hrabalová", + "Hrabovskýová", + "Hradeckýová", + "Hradilová", + "Hrbáčková", + "Hrbková", + "Hrdinová", + "Hrdličková", + "Hrdýová", + "Hrnčířová", + "Hrochová", + "Hromádková", + "Hronová", + "Hrubešová", + "Hrubýová", + "Hrušková", + "Hrůzová", + "Hubáčková", + "Hudcová", + "Hudečková", + "Hůlková", + "Humlová", + "Husáková", + "Hušková", + "Hýblová", + "Hynková", + "Jahodová", + "Jakešová", + "Jaklová", + "Jakoubková", + "Jakubcová", + "Janáčková", + "Janáková", + "Janatová", + "Jančová", + "Jančíková", + "Jandová", + "Janečková", + "Janečková", + "Janíčková", + "Janíková", + "Jankůová", + "Janotová", + "Janoušková", + "Janovskýová", + "Jansová", + "Jánskýová", + "Janůová", + "Jarešová", + "Jarošová", + "Jašková", + "Javůrková", + "Jechová", + "Jedličková", + "Jelnová", + "Jelínková", + "Jeníčková", + "Jeřábková", + "Ježová", + "Ježková", + "Jílková", + "Jindrová", + "Jírová", + "Jiráková", + "Jiránková", + "Jirásková", + "Jiříková", + "Jirková", + "Jirkůová", + "Jiroušková", + "Jirsová", + "Johnová", + "Jonášová", + "Junková", + "Jurčíková", + "Jurečková", + "Juřicová", + "Juříková", + "Kabátová", + "Kačírková", + "Kadeřábková", + "Kadlcová", + "Kafková", + "Kaisrová", + "Kalová", + "Kalábová", + "Kalašová", + "Kalinová", + "Kalivodová", + "Kalousová", + "Kalousková", + "Kameníková", + "Kaňová", + "Káňová", + "Kaňková", + "Kantorová", + "Kaplanová", + "Karasová", + "Karásková", + "Karbanová", + "Karlová", + "Karlíková", + "Kasalová", + "Kašíková", + "Kašparová", + "Kašpárková", + "Kavková", + "Kazdová", + "Kindlová", + "Klečková", + "Kleinová", + "Klementová", + "Klímová", + "Klimentová", + "Klimešová", + "Kloučková", + "Kloudová", + "Knapová", + "Knotková", + "Kochová", + "Kočíová", + "Kociánová", + "Kocmanová", + "Kocourková", + "Kohoutová", + "Kohoutková", + "Koláčková", + "Kolářová", + "Kolaříková", + "Kolková", + "Kolmanová", + "Komárková", + "Komínková", + "Konečnýová", + "Koníčková", + "Kopalová", + "Kopečková", + "Kopeckýová", + "Kopečnýová", + "Kopřivová", + "Korblová", + "Kořínková", + "Kosová", + "Kosíková", + "Kosinová", + "Košťálová", + "Kostková", + "Kotasová", + "Kotková", + "Kotlárová", + "Kotrbová", + "Koubová", + "Koubková", + "Koudelová", + "Koudelková", + "Koukalová", + "Kouřilová", + "Koutnýová", + "Kováčová", + "Kovářová", + "Kovaříková", + "Kováříková", + "Kozáková", + "Kozlová", + "Krajíčková", + "Králová", + "Králíčková", + "Králíková", + "Krátkýová", + "Kratochvílová", + "Krausová", + "Krčmářová", + "Křečková", + "Krejčíová", + "Krejčíková", + "Krejčířová", + "Křenková", + "Krištofová", + "Křivánková", + "Křížová", + "Křížková", + "Kropáčková", + "Kroupová", + "Krupová", + "Krupičková", + "Krupková", + "Kubová", + "Kubánková", + "Kubátová", + "Kubcová", + "Kubelková", + "Kubešová", + "Kubicová", + "Kubíčková", + "Kubíková", + "Kubínová", + "Kubišová", + "Kučová", + "Kučerová", + "Kuchařová", + "Kuchtová", + "Kudláčková", + "Kudrnová", + "Kuklová", + "Kulhánková", + "Kulhavýová", + "Kuncová", + "Kunešová", + "Kupcová", + "Kupková", + "Kurková", + "Kužlová", + "Kvapilová", + "Kvasničková", + "Kynclová", + "Kyselová", + "Lacinová", + "Lackoová", + "Lakatošová", + "Landová", + "Langová", + "Langrová", + "Langrová", + "Látalová", + "Lavičková", + "Leová", + "Lebedová", + "Levýová", + "Líbalová", + "Linhartová", + "Lišková", + "Lorencová", + "Loudová", + "Ludvíková", + "Lukáčová", + "Lukášová", + "Lukášková", + "Lukešová", + "Macáková", + "Macková", + "Machová", + "Máchová", + "Machačová", + "Macháčová", + "Macháčková", + "Machalová", + "Machálková", + "Macurová", + "Majrová", + "Malečková", + "Málková", + "Malíková", + "Malinová", + "Malýová", + "Maňáková", + "Marečková", + "Marková", + "Marešová", + "Maříková", + "Maršálková", + "Maršíková", + "Martincová", + "Martinková", + "Martínková", + "Mašková", + "Masopustová", + "Matějíčková", + "Matějková", + "Matoušová", + "Matoušková", + "Matulová", + "Matušková", + "Matyášová", + "Matysová", + "Maxová", + "Mayrová", + "Mazánková", + "Medková", + "Melicharová", + "Menclová", + "Menšíková", + "Mertová", + "Michalová", + "Michalcová", + "Michálková", + "Michalíková", + "Michnová", + "Mičková", + "Miková", + "Míková", + "Mikešová", + "Mikoová", + "Mikulová", + "Mikulášková", + "Minářová", + "Minaříková", + "Mirgová", + "Mládková", + "Mlčochová", + "Mlejnková", + "Mojžíšová", + "Mokrýová", + "Molnárová", + "Moravcová", + "Morávková", + "Motlová", + "Motyčková", + "Moučková", + "Moudrýová", + "Mráčková", + "Mrázová", + "Mrázková", + "Mrkvičková", + "Muchová", + "Müllrová", + "Műllrová", + "Musilová", + "Mužíková", + "Myšková", + "Nagyová", + "Najmanová", + "Navrátilová", + "Nečasová", + "Nedbalová", + "Nedomová", + "Nedvědová", + "Nejedlýová", + "Němcová", + "Němečková", + "Nešporová", + "Nesvadbová", + "Neubaurová", + "Neumanová", + "Neumannová", + "Nguynová", + "Nguyen vanová", + "Nosková", + "Nováčková", + "Nováková", + "Novosadová", + "Novotnýová", + "Novýová", + "Odehnalová", + "Oláhová", + "Olivová", + "Ondrová", + "Ondráčková", + "Orságová", + "Otáhalová", + "Palečková", + "Pánková", + "Papežová", + "Pařízková", + "Pašková", + "Pátková", + "Patočková", + "Paulová", + "Pavlová", + "Pavelková", + "Pavelková", + "Pavlasová", + "Pavlicová", + "Pavlíčková", + "Pavlíková", + "Pavlůová", + "Pazderová", + "Pechová", + "Pechová", + "Pecháčková", + "Pecková", + "Pekařová", + "Pekárková", + "Pelcová", + "Pelikánová", + "Peřinová", + "Pernicová", + "Peroutková", + "Pešková", + "Pešková", + "Peštová", + "Peterková", + "Petrová", + "Petráková", + "Petrášová", + "Petříčková", + "Petříková", + "Petrůová", + "Phamová", + "Píchová", + "Pilařová", + "Pilátová", + "Píšová", + "Pivoňková", + "Plačková", + "Plachýová", + "Plšková", + "Pluhařová", + "Podzimková", + "Pohlová", + "Pokornýová", + "Poláčková", + "Poláchová", + "Poláková", + "Polanskýová", + "Polášková", + "Polívková", + "Popelková", + "Pospíchalová", + "Pospíšilová", + "Potůčková", + "Pourová", + "Prachařová", + "Prášková", + "Pražáková", + "Prchalová", + "Přibylová", + "Příhodová", + "Přikrylová", + "Procházková", + "Prokešová", + "Prokopová", + "Prošková", + "Provazníková", + "Průchová", + "Průšová", + "Pšeničková", + "Ptáčková", + "Rácová", + "Radová", + "Raková", + "Rambousková", + "Rašková", + "Ratajová", + "řeháčková", + "řeháková", + "řehořová", + "Remešová", + "řezáčová", + "Rezková", + "řezníčková", + "Richtrová", + "Richtrová", + "říhová", + "Roubalová", + "Rousová", + "Rozsypalová", + "Rudolfová", + "Růžková", + "Růžičková", + "Rybová", + "Rybářová", + "Rýdlová", + "Ryšavýová", + "Sadílková", + "šafářová", + "šafaříková", + "šafránková", + "šálková", + "Samková", + "šandová", + "šašková", + "Schejbalová", + "Schmidtová", + "Schneidrová", + "Schwarzová", + "šebková", + "šebelová", + "šebestová", + "šedová", + "šedivýová", + "Sedláčková", + "Sedláková", + "Sedlářová", + "Sehnalová", + "Seidlová", + "Seifertová", + "Sekaninová", + "Semerádová", + "šenková", + "šestáková", + "ševčíková", + "Severová", + "Sikorová", + "šilhavýová", + "šímová", + "šimáčková", + "šimáková", + "šimánková", + "šimčíková", + "šimečková", + "šimková", + "šimonová", + "šimůnková", + "šindelářová", + "šindlrová", + "šípová", + "šípková", + "šírová", + "širokýová", + "šišková", + "Siváková", + "Skáclová", + "Skalová", + "Skálová", + "Skalickýová", + "Sklenářová", + "škodová", + "Skopalová", + "Skořepová", + "škrabalová", + "Skřivánková", + "Slabýová", + "Sládková", + "Sladkýová", + "Slámová", + "Slaninová", + "Slavíčková", + "Slavíková", + "šlechtová", + "Slezáková", + "Slováčková", + "Slováková", + "Sluková", + "Smejkalová", + "šmejkalová", + "Smékalová", + "šmerdová", + "Smetanová", + "šmídová", + "Smolová", + "Smolíková", + "Smolková", + "Smrčková", + "Smržová", + "Smutnýová", + "šnajdrová", + "Sobková", + "Sobotková", + "Sochorová", + "Sojková", + "Sokolová", + "šolcová", + "Sommrová", + "Součková", + "Soukupová", + "Sovová", + "špačková", + "Spáčilová", + "špičková", + "šplíchalová", + "Spurnýová", + "šrámková", + "Srbová", + "Staněková", + "Stárková", + "Starýová", + "šťastnýová", + "štefanová", + "štefková", + "šteflová", + "Stehlíková", + "Steinrová", + "Stejskalová", + "štěpánová", + "štěpánková", + "štěrbová", + "Stiborová", + "Stoklasová", + "Straková", + "Stránskýová", + "Strejčková", + "Strnadová", + "Strouhalová", + "Stuchlíková", + "Studenýová", + "Studničková", + "Stupková", + "šubrtová", + "Suchánková", + "Suchomlová", + "Suchýová", + "Suková", + "šulcová", + "šustrová", + "švábová", + "Svačinová", + "švandová", + "švarcová", + "Svatoňová", + "Svatošová", + "švcová", + "švehlová", + "švejdová", + "švestková", + "Světlíková", + "Svitáková", + "Svobodová", + "Svozilová", + "Sýkorová", + "Synková", + "Syrovýová", + "Táborskýová", + "Tancošová", + "Teplýová", + "Tesařová", + "Tichýová", + "Tomanová", + "Tománková", + "Tomášová", + "Tomášková", + "Tomečková", + "Tomková", + "Tomešová", + "Tóthová", + "Tranová", + "Trávníčková", + "Trčková", + "Třísková", + "Trnková", + "Trojanová", + "Truhlářová", + "Tučková", + "Tůmová", + "Turečková", + "Turková", + "Tvrdíková", + "Tvrdýová", + "Uhrová", + "Uhlířová", + "Ulrichová", + "Urbanová", + "Urbancová", + "Urbánková", + "Vacková", + "Váchová", + "Václavková", + "Václavíková", + "Vaculíková", + "Vágnrová", + "Valová", + "Valášková", + "Válková", + "Valentová", + "Valešová", + "Váňová", + "Vančurová", + "Vaněčková", + "Vaněková", + "Vaníčková", + "Vargová", + "Vašáková", + "Vašková", + "Vašíčková", + "Vávrová", + "Vavříková", + "Večeřová", + "Vejvodová", + "Vernrová", + "Veselýová", + "Veverková", + "Víchová", + "Vilímková", + "Vinšová", + "Víšková", + "Vítová", + "Vitásková", + "Vítková", + "Vlachová", + "Vlasáková", + "Vlčková", + "Vlková", + "Vobořilová", + "Vodáková", + "Vodičková", + "Vodrážková", + "Vojáčková", + "Vojtová", + "Vojtěchová", + "Vojtková", + "Vojtíšková", + "Vokounová", + "Volková", + "Volfová", + "Volnýová", + "Vondrová", + "Vondráčková", + "Vondráková", + "Voráčková", + "Vorlová", + "Voříšková", + "Vorlíčková", + "Votavová", + "Votrubová", + "Vrabcová", + "Vránová", + "Vrbová", + "Vrzalová", + "Vybíralová", + "Vydrová", + "Vymazalová", + "Vyskočilová", + "Vysloužilová", + "Wagnrová", + "Waltrová", + "Webrová", + "Weissová", + "Winklrová", + "Wolfová", + "Zábranskýová", + "žáčková", + "Zachová", + "Zahrádková", + "Zahradníková", + "Zajícová", + "Zajíčková", + "žáková", + "Zálešáková", + "Zámečníková", + "Zapletalová", + "Zárubová", + "Zatloukalová", + "Zavadilová", + "Zavřlová", + "Zbořilová", + "žďárskýová", + "Zdražilová", + "Zedníková", + "Zelenková", + "Zelenýová", + "Zelinková", + "Zemanová", + "Zemánková", + "žemličková", + "Zezulová", + "žídková", + "žigová", + "Zíková", + "Zikmundová", + "Zimová", + "žižková", + "Zlámalová", + "Zoubková", + "Zouharová", + "žůrková", + "Zvěřinová", +]; + +},{}],143:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.male_first_name = require("./male_first_name"); +name.female_first_name = require("./female_first_name"); +name.male_last_name = require("./male_last_name"); +name.female_last_name = require("./female_last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.title = require("./title"); +name.name = require("./name"); + +},{"./female_first_name":141,"./female_last_name":142,"./male_first_name":144,"./male_last_name":145,"./name":146,"./prefix":147,"./suffix":148,"./title":149}],144:[function(require,module,exports){ +module["exports"] = [ + "Abadon", + "Abdon", + "Ábel", + "Abelard", + "Abraham", + "Abrahám", + "Absolon", + "Absolón", + "Adalbert", + "Adam", + "Adin", + "Adolf", + "Adrian", + "Adrián", + "Agaton", + "Achil", + "Achiles", + "Alan", + "Alban", + "Albert", + "Albín", + "Albrecht", + "Aldo", + "Alen", + "Aleš", + "Alexandr", + "Alexej", + "Alfons", + "Alfréd", + "Alois", + "Alojz", + "Alva", + "Alvar", + "Alvin", + "Amadeus", + "Amand", + "Amát", + "Ambrož", + "Amos", + "Ámos", + "Anastáz", + "Anatol", + "Anděl", + "Andělín", + "Andrej", + "Anselm", + "Antal", + "Antonín", + "Aram", + "Ariel", + "Aristid", + "Arkád", + "Armand", + "Armin", + "Arne", + "Arnold", + "Arnošt", + "Áron", + "Árón", + "Arpád", + "Arsen", + "Artur", + "Artuš", + "Arzen", + "Atanas", + "Atanáš", + "Atila", + "August", + "Augustin", + "Augustýn", + "Aurel", + "Aurelián", + "Axel", + "Baltazar", + "Barnabáš", + "Bartoloměj", + "Basil", + "Bazil", + "Beatus", + "Bedřich", + "Benedikt", + "Benjamin", + "Benjamín", + "Bernard", + "Bertold", + "Bertram", + "Bivoj", + "Blahomil", + "Blahomír", + "Blahoslav", + "Blažej", + "Bohdan", + "Bohuchval", + "Bohumil", + "Bohumír", + "Bohun", + "Bohuslav", + "Bohuš", + "Bojan", + "Bolemír", + "Boleslav", + "Bonifác", + "Borek", + "Boris", + "Borislav", + "Bořek", + "Bořislav", + "Bořivoj", + "Božetěch", + "Božidar", + "Božislav", + "Branimír", + "Branislav", + "Bratislav", + "Bret", + "Brian", + "Brit", + "Bronislav", + "Bruno", + "Břetislav", + "Budimír", + "Budislav", + "Budivoj", + "Cecil", + "Cedrik", + "Celestin", + "Celestýn", + "César", + "Cézar", + "Ctibor", + "Ctirad", + "Ctislav", + "Cyprián", + "Cyril", + "Čeněk", + "Čestmír", + "Čistoslav", + "Dag", + "Dalibor", + "Dalimil", + "Dalimír", + "Damián", + "Dan", + "Daniel", + "Darek", + "Darius", + "David", + "Denis", + "Děpold", + "Dětmar", + "Dětřich", + "Dezider", + "Dimitrij", + "Dino", + "Dionýz", + "Dionýzos", + "Diviš", + "Dluhoš", + "Dobromil", + "Dobromír", + "Dobroslav", + "Dominik", + "Donald", + "Donát", + "Dorian", + "Dorián", + "Drahomil", + "Drahomír", + "Drahoň", + "Drahoslav", + "Drahoš", + "Drahotín", + "Drahutin", + "Dušan", + "Edgar", + "Edmond", + "Edmund", + "Eduard", + "Edvard", + "Edvin", + "Edvín", + "Egmont", + "Egon", + "Eliáš", + "Elizej", + "Elizeus", + "Elmar", + "Elvis", + "Emanuel", + "Emanuel", + "Emerich", + "Emil", + "Emilián", + "Engelbert", + "Erazim", + "Erazmus", + "Erhard", + "Erich", + "Erik", + "Ernest", + "Ernst", + "Ervín", + "Eugen", + "Eusebius", + "Evald", + "Evan", + "Evarist", + "Evžen", + "Ezechiel", + "Ezra", + "Fabián", + "Faust", + "Faustin", + "Faustýn", + "Fedor", + "Felicián", + "Felix", + "Ferdinand", + "Fidel", + "Fidelius", + "Filemon", + "Filibert", + "Filip", + "Filomen", + "Flavián", + "Flavius", + "Florentin", + "Florentýn", + "Florián", + "Fortunát", + "Fráňa", + "Franc", + "František", + "Fridolín", + "Gabin", + "Gabriel", + "Gál", + "Garik", + "Gaston", + "Gedeon", + "Gejza", + "Genadij", + "Gerald", + "Gerard", + "Gerazim", + "Gerhard", + "Géza", + "Gilbert", + "Gleb", + "Glen", + "Gorazd", + "Gordon", + "Gothard", + "Gracián", + "Grant", + "Gunter", + "Gűnter", + "Gustav", + "Hanuš", + "Harald", + "Harold", + "Haštal", + "Havel", + "Helmut", + "Herbert", + "Herman", + "Heřman", + "Hilar", + "Hilarius", + "Hjalmar", + "Homér", + "Honor", + "Honorius", + "Horác", + "Horst", + "Horymír", + "Hostimil", + "Hostimír", + "Hostislav", + "Hostivít", + "Hovard", + "Hubert", + "Hugo", + "Hvězdoslav", + "Hyacint", + "Hynek", + "Hypolit", + "Chrabroš", + "Chraniboj", + "Chranibor", + "Chranislav", + "Chrudoš", + "Chval", + "Ignác", + "Ignát", + "Igor", + "Ilja", + "Inocenc", + "Irenej", + "Ireneus", + "Irvin", + "Isidor", + "Ivan", + "Ivar", + "Ivo", + "Ivor", + "Izaiáš", + "Izák", + "Izidor", + "Izmael", + "Jacek", + "Jáchym", + "Jakub", + "Jan", + "Jarmil", + "Jarolím", + "Jaromil", + "Jaromír", + "Jaroslav", + "Jason", + "Jasoň", + "Jeremiáš", + "Jeroným", + "Jiljí", + "Jimram", + "Jindřich", + "Jiří", + "Job", + "Joel", + "Jonáš", + "Jonatan", + "Jonathan", + "Jordan", + "Josef", + "Jošt", + "Jozef", + "Jozue", + "Juda", + "Julián", + "Julius", + "Justin", + "Justýn", + "Kajetán", + "Kamil", + "Karel", + "Kasián", + "Kastor", + "Kašpar", + "Kazimír", + "Kilián", + "Kim", + "Klaudián", + "Klaudius", + "Klement", + "Kliment", + "Knut", + "Koloman", + "Kolombín", + "Kolumbán", + "Kolumbín", + "Konrád", + "Konstantin", + "Konstantýn", + "Kornel", + "Kornelius", + "Kosma", + "Kosmas", + "Krasomil", + "Krasoslav", + "Kristián", + "Kryšpín", + "Kryštof", + "Křesomysl", + "Křišťan", + "Kurt", + "Květoň", + "Květoslav", + "Květoš", + "Kvido", + "Ladislav", + "Lambert", + "Lars", + "Laurenc", + "Lazar", + "Leander", + "Leandr", + "Leo", + "Leodegar", + "Leon", + "Leonard", + "Leonid", + "Leontýn", + "Leopold", + "Leoš", + "Lešek", + "Lev", + "Libor", + "Liboslav", + "Lionel", + "Livius", + "Lorenc", + "Lotar", + "Lothar", + "Lubomír", + "Lubor", + "Luboslav", + "Luboš", + "Lucián", + "Lucius", + "Luděk", + "Ludivoj", + "Ludomír", + "Ludoslav", + "Ludvík", + "Lukáš", + "Lukrecius", + "Lumír", + "Lutibor", + "Lutobor", + "Magnus", + "Makar", + "Manfred", + "Manfréd", + "Mansvet", + "Manuel", + "Marcel", + "Marek", + "Marian", + "Marián", + "Marin", + "Mario", + "Marius", + "Martin", + "Matěj", + "Matouš", + "Matyáš", + "Max", + "Maxim", + "Maximilián", + "Maxmilián", + "Mečislav", + "Medard", + "Melichar", + "Merlin", + "Mervin", + "Metod", + "Metoděj", + "Michael", + "Michal", + "Mikoláš", + "Mikuláš", + "Milan", + "Milíč", + "Milík", + "Milivoj", + "Miloň", + "Milorad", + "Miloslav", + "Miloš", + "Milota", + "Milouš", + "Milovan", + "Milovín", + "Milutín", + "Mirek", + "Mirko", + "Miromil", + "Miron", + "Miroslav", + "Mirtil", + "Mlad", + "Mladen", + "Mnata", + "Mnislav", + "Modest", + "Mojmír", + "Mojžíš", + "Morgan", + "Moric", + "Moris", + "Mořic", + "Mstislav", + "Myron", + "Myrtil", + "Napoleon", + "Narcis", + "Natan", + "Natanael", + "Nathan", + "Nathanael", + "Něhoslav", + "Neklan", + "Nepomuk", + "Nezamysl", + "Nikita", + "Nikodém", + "Nikola", + "Nikolas", + "Norbert", + "Norman", + "Odolen", + "Odon", + "Oktavián", + "Oktavius", + "Olaf", + "Olbram", + "Oldřich", + "Oleg", + "Oliver", + "Omar", + "Ondřej", + "Orest", + "Oskar", + "Osvald", + "Ota", + "Otakar", + "Otmar", + "Oto", + "Otokar", + "Otomar", + "Ovidius", + "Palmiro", + "Pankrác", + "Pantaleon", + "Paris", + "Parsival", + "Paskal", + "Patrik", + "Pavel", + "Pavlín", + "Pelhřim", + "Perikles", + "Petr", + "Petronius", + "Pius", + "Platon", + "Platón", + "Polykarp", + "Pravdomil", + "Pravomil", + "Prokop", + "Prosper", + "Přemysl", + "Přibyslav", + "Radan", + "Radegast", + "Radek", + "Radhost", + "Radim", + "Radimír", + "Radislav", + "Radivoj", + "Radko", + "Radmil", + "Radomil", + "Radomír", + "Radoslav", + "Radoš", + "Radovan", + "Radúz", + "Radvan", + "Rafael", + "Raimund", + "Rainald", + "Rainer", + "Rainhard", + "Rainold", + "Rajko", + "Ralf", + "Ramon", + "Randolf", + "Ranek", + "Ranko", + "Rastislav", + "Ratibor", + "Ratmír", + "Redmond", + "Reginald", + "Remig", + "Remus", + "Renát", + "René", + "Richard", + "Robert", + "Robin", + "Robinson", + "Rodan", + "Roderik", + "Rodrigo", + "Roger", + "Roch", + "Roland", + "Rolf", + "Roman", + "Romeo", + "Romuald", + "Romul", + "Romulus", + "Ronald", + "Rostislav", + "Ruben", + "Rudolf", + "Rufus", + "Rupert", + "Ruprecht", + "Ruslan", + "Řehoř", + "Sába", + "Sámo", + "Samson", + "Samuel", + "Saturnin", + "Saul", + "Sáva", + "Sebastian", + "Sebastián", + "Sebestian", + "Sedrik", + "Serafín", + "Serenus", + "Sergej", + "Servác", + "Severín", + "Sidon", + "Sigfríd", + "Silvan", + "Silván", + "Silvestr", + "Silvius", + "Simeon", + "Simon", + "Sinkler", + "Sixt", + "Sixtus", + "Slávek", + "Slaviboj", + "Slavibor", + "Slavoboj", + "Slavoj", + "Slavomil", + "Slavomír", + "Smil", + "Soběslav", + "Sokrat", + "Soter", + "Spytihněv", + "Stanimír", + "Stanislav", + "Stojan", + "Stojmír", + "Svatoboj", + "Svatobor", + "Svatomír", + "Svatopluk", + "Svatoslav", + "Sven", + "Svetozar", + "Šalamoun", + "Šalomoun", + "Šavel", + "Šebastián", + "Šimon", + "Šťasta", + "Štefan", + "Štěpán", + "Tadeáš", + "Tankred", + "Taras", + "Teobald", + "Teodor", + "Teodorik", + "Teodoz", + "Teofan", + "Teofil", + "Terenc", + "Terencius", + "Theobald", + "Theodor", + "Theodorik", + "Theofan", + "Theofil", + "Tiber", + "Tiberius", + "Tibor", + "Tiburcius", + "Tichomil", + "Tichomír", + "Tichon", + "Timon", + "Timotej", + "Timoteus", + "Timur", + "Titus", + "Tobiáš", + "Tomáš", + "Tomislav", + "Tor", + "Torkvát", + "Torsten", + "Tristan", + "Udo", + "Ulrich", + "Upton", + "Urban", + "Uve", + "Václav", + "Vadim", + "Valdemar", + "Valentin", + "Valentýn", + "Valerián", + "Valter", + "Valtr", + "Vasil", + "Vavřinec", + "Veleslav", + "Velimír", + "Velislav", + "Věnceslav", + "Vendelín", + "Věnek", + "Verner", + "Věroslav", + "Vidor", + "Viktor", + "Viktorin", + "Viktorín", + "Vilém", + "Vilibald", + "Vilmar", + "Vincenc", + "Virgil", + "Virgin", + "Vít", + "Vítězslav", + "Vitold", + "Vítoslav", + "Vivian", + "Vladan", + "Vladimír", + "Vladislav", + "Vladivoj", + "Vlastimil", + "Vlastimír", + "Vlastislav", + "Vlk", + "Vojen", + "Vojmil", + "Vojmír", + "Vojslav", + "Vojtěch", + "Vok", + "Volfgang", + "Vratislav", + "Vsevolod", + "Všeboj", + "Všebor", + "Všerad", + "Všeslav", + "Xaver", + "Xaverius", + "Záboj", + "Zachar", + "Zachariáš", + "Záviš", + "Zbislav", + "Zbyhněv", + "Zbyněk", + "Zbyslav", + "Zbyšek", + "Zdeněk", + "Zderad", + "Zdeslav", + "Zdík", + "Zdirad", + "Zdislav", + "Zeno", + "Zenon", + "Zikmund", + "Zlatan", + "Zlatko", + "Zlatomír", + "Zoltán", + "Zoran", + "Zoroslav", + "Zosim", + "Zvonimír", + "Žarko", + "Ždan", + "Želibor", + "Želimír", + "Želislav", + "Želmír", + "Žitomír", + "Žitoslav", + "Živan", +]; + +},{}],145:[function(require,module,exports){ +module["exports"] = [ + "Adam", + "Adamec", + "Adámek", + "Albrecht", + "Ambrož", + "Anděl", + "Andrle", + "Antoš", + "Bajer", + "Baláž", + "Balcar", + "Balog", + "Baloun", + "Barák", + "Baran", + "Bareš", + "Bárta", + "Barták", + "Bartoň", + "Bartoš", + "Bartošek", + "Bartůněk", + "Bašta", + "Bauer", + "Bayer", + "Bažant", + "Bečka", + "Bečvář", + "Bednář", + "Bednařík", + "Bělohlávek", + "Benda", + "Beneš", + "Beran", + "Beránek", + "Berger", + "Berka", + "Berky", + "Bernard", + "Bezděk", + "Bílek", + "Bílý", + "Bína", + "Bittner", + "Blaha", + "Bláha", + "Blažek", + "Blecha", + "Bobek", + "Boček", + "Boháč", + "Boháček", + "Böhm", + "Borovička", + "Bouček", + "Bouda", + "Bouška", + "Brabec", + "Brabenec", + "Brada", + "Bradáč", + "Braun", + "Brázda", + "Brázdil", + "Brejcha", + "Březina", + "Bříza", + "Brož", + "Brožek", + "Brychta", + "Bubeník", + "Buček", + "Buchta", + "Burda", + "Bureš", + "Burian", + "Buriánek", + "Byrtus", + "čada", + "Caha", + "čáp", + "čapek", + "čech", + "čejka", + "čermák", + "černík", + "černoch", + "černohorský", + "černý", + "červeňák", + "červenka", + "červený", + "červinka", + "Chaloupka", + "Chalupa", + "Charvát", + "Chládek", + "Chlup", + "Chmelař", + "Chmelík", + "Chovanec", + "Chromý", + "Chudoba", + "Chvátal", + "Chvojka", + "Chytil", + "Cibulka", + "čihák", + "Cihlář", + "Císař", + "čížek", + "čonka", + "Coufal", + "čurda", + "Daněk", + "Daniel", + "Daniš", + "David", + "Dědek", + "Demeter", + "Dittrich", + "Diviš", + "Dlouhý", + "Dobeš", + "Dobiáš", + "Dobrovolný", + "Dočekal", + "Dočkal", + "Dohnal", + "Dokoupil", + "Doleček", + "Dolejš", + "Dolejší", + "Doležal", + "Doležel", + "Doskočil", + "Dostál", + "Doubek", + "Doubrava", + "Douša", + "Drábek", + "Drozd", + "Dubský", + "Duchoň", + "Duda", + "Dudek", + "Dufek", + "Dunka", + "Dušek", + "Dvořáček", + "Dvořák", + "Dvorský", + "Eliáš", + "Erben", + "Fabián", + "Fanta", + "Farkaš", + "Fejfar", + "Fencl", + "Ferenc", + "Ferko", + "Fiala", + "Fiedler", + "Filip", + "Fischer", + "Fišer", + "Florián", + "Fojtík", + "Foltýn", + "Forman", + "Formánek", + "Fořt", + "Fousek", + "Franc", + "Franěk", + "Frank", + "Fridrich", + "Frydrych", + "Fuchs", + "Fučík", + "Fuksa", + "Gábor", + "Gabriel", + "Gajdoš", + "Gaži", + "Gottwald", + "Gregor", + "Gruber", + "Grundza", + "Grygar", + "Hájek", + "Hajný", + "Hála", + "Hampl", + "Hána", + "Hanáček", + "Hanák", + "Hanousek", + "Hanus", + "Hanuš", + "Hanzal", + "Hanzl", + "Hanzlík", + "Hartman", + "Hašek", + "Havel", + "Havelka", + "Havlíček", + "Havlík", + "Havránek", + "Heczko", + "Heger", + "Hejda", + "Hejduk", + "Hejl", + "Hejna", + "Hendrych", + "Herman", + "Heřman", + "Heřmánek", + "Hladík", + "Hladký", + "Hlaváč", + "Hlaváček", + "Hlavatý", + "Hlávka", + "Hloušek", + "Hoffmann", + "Hofman", + "Holan", + "Holas", + "Holec", + "Holeček", + "Holík", + "Holoubek", + "Holub", + "Holý", + "Homola", + "Homolka", + "Hora", + "Horáček", + "Horák", + "Hořejší", + "Horký", + "Horňák", + "Horníček", + "Horník", + "Horský", + "Horvát", + "Horváth", + "Hošek", + "Houdek", + "Houška", + "Hovorka", + "Hrabal", + "Hrabovský", + "Hradecký", + "Hradil", + "Hrbáček", + "Hrbek", + "Hrdina", + "Hrdlička", + "Hrdý", + "Hrnčíř", + "Hroch", + "Hromádka", + "Hron", + "Hrubeš", + "Hrubý", + "Hruška", + "Hrůza", + "Hubáček", + "Hudec", + "Hudeček", + "Hůlka", + "Huml", + "Husák", + "Hušek", + "Hýbl", + "Hynek", + "Jahoda", + "Jakeš", + "Jakl", + "Jakoubek", + "Jakubec", + "Janáček", + "Janák", + "Janata", + "Janča", + "Jančík", + "Janda", + "Janeček", + "Janečka", + "Janíček", + "Janík", + "Janků", + "Janota", + "Janoušek", + "Janovský", + "Jansa", + "Jánský", + "Janů", + "Jareš", + "Jaroš", + "Jašek", + "Javůrek", + "Jech", + "Jedlička", + "Jelen", + "Jelínek", + "Jeníček", + "Jeřábek", + "Jež", + "Ježek", + "Jílek", + "Jindra", + "Jíra", + "Jirák", + "Jiránek", + "Jirásek", + "Jiřík", + "Jirka", + "Jirků", + "Jiroušek", + "Jirsa", + "John", + "Jonáš", + "Junek", + "Jurčík", + "Jurečka", + "Juřica", + "Juřík", + "Kabát", + "Kačírek", + "Kadeřábek", + "Kadlec", + "Kafka", + "Kaiser", + "Kala", + "Kaláb", + "Kalaš", + "Kalina", + "Kalivoda", + "Kalous", + "Kalousek", + "Kameník", + "Kaňa", + "Káňa", + "Kaňka", + "Kantor", + "Kaplan", + "Karas", + "Karásek", + "Karban", + "Karel", + "Karlík", + "Kasal", + "Kašík", + "Kašpar", + "Kašpárek", + "Kavka", + "Kazda", + "Kindl", + "Klečka", + "Klein", + "Klement", + "Klíma", + "Kliment", + "Klimeš", + "Klouček", + "Klouda", + "Knap", + "Knotek", + "Koch", + "Kočí", + "Kocián", + "Kocman", + "Kocourek", + "Kohout", + "Kohoutek", + "Koláček", + "Kolář", + "Kolařík", + "Kolek", + "Kolman", + "Komárek", + "Komínek", + "Konečný", + "Koníček", + "Kopal", + "Kopeček", + "Kopecký", + "Kopečný", + "Kopřiva", + "Korbel", + "Kořínek", + "Kos", + "Kosík", + "Kosina", + "Košťál", + "Kostka", + "Kotas", + "Kotek", + "Kotlár", + "Kotrba", + "Kouba", + "Koubek", + "Koudela", + "Koudelka", + "Koukal", + "Kouřil", + "Koutný", + "Kováč", + "Kovář", + "Kovařík", + "Kovářík", + "Kozák", + "Kozel", + "Krajíček", + "Král", + "Králíček", + "Králík", + "Krátký", + "Kratochvíl", + "Kraus", + "Krčmář", + "Křeček", + "Krejčí", + "Krejčík", + "Krejčíř", + "Křenek", + "Krištof", + "Křivánek", + "Kříž", + "Křížek", + "Kropáček", + "Kroupa", + "Krupa", + "Krupička", + "Krupka", + "Kuba", + "Kubánek", + "Kubát", + "Kubec", + "Kubelka", + "Kubeš", + "Kubica", + "Kubíček", + "Kubík", + "Kubín", + "Kubiš", + "Kuča", + "Kučera", + "Kuchař", + "Kuchta", + "Kudláček", + "Kudrna", + "Kukla", + "Kulhánek", + "Kulhavý", + "Kunc", + "Kuneš", + "Kupec", + "Kupka", + "Kurka", + "Kužel", + "Kvapil", + "Kvasnička", + "Kyncl", + "Kysela", + "Lacina", + "Lacko", + "Lakatoš", + "Landa", + "Lang", + "Langer", + "Langr", + "Látal", + "Lavička", + "Le", + "Lebeda", + "Levý", + "Líbal", + "Linhart", + "Liška", + "Lorenc", + "Louda", + "Ludvík", + "Lukáč", + "Lukáš", + "Lukášek", + "Lukeš", + "Macák", + "Macek", + "Mach", + "Mácha", + "Machač", + "Macháč", + "Macháček", + "Machala", + "Machálek", + "Macura", + "Majer", + "Maleček", + "Málek", + "Malík", + "Malina", + "Malý", + "Maňák", + "Mareček", + "Marek", + "Mareš", + "Mařík", + "Maršálek", + "Maršík", + "Martinec", + "Martinek", + "Martínek", + "Mašek", + "Masopust", + "Matějíček", + "Matějka", + "Matouš", + "Matoušek", + "Matula", + "Matuška", + "Matyáš", + "Matys", + "Maxa", + "Mayer", + "Mazánek", + "Medek", + "Melichar", + "Mencl", + "Menšík", + "Merta", + "Michal", + "Michalec", + "Michálek", + "Michalík", + "Michna", + "Mička", + "Mika", + "Míka", + "Mikeš", + "Miko", + "Mikula", + "Mikulášek", + "Minář", + "Minařík", + "Mirga", + "Mládek", + "Mlčoch", + "Mlejnek", + "Mojžíš", + "Mokrý", + "Molnár", + "Moravec", + "Morávek", + "Motl", + "Motyčka", + "Moučka", + "Moudrý", + "Mráček", + "Mráz", + "Mrázek", + "Mrkvička", + "Mucha", + "Müller", + "Műller", + "Musil", + "Mužík", + "Myška", + "Nagy", + "Najman", + "Navrátil", + "Nečas", + "Nedbal", + "Nedoma", + "Nedvěd", + "Nejedlý", + "Němec", + "Němeček", + "Nešpor", + "Nesvadba", + "Neubauer", + "Neuman", + "Neumann", + "Nguyen", + "Nguyen van", + "Nosek", + "Nováček", + "Novák", + "Novosad", + "Novotný", + "Nový", + "Odehnal", + "Oláh", + "Oliva", + "Ondra", + "Ondráček", + "Orság", + "Otáhal", + "Paleček", + "Pánek", + "Papež", + "Pařízek", + "Pašek", + "Pátek", + "Patočka", + "Paul", + "Pavel", + "Pavelek", + "Pavelka", + "Pavlas", + "Pavlica", + "Pavlíček", + "Pavlík", + "Pavlů", + "Pazdera", + "Pech", + "Pecha", + "Pecháček", + "Pecka", + "Pekař", + "Pekárek", + "Pelc", + "Pelikán", + "Peřina", + "Pernica", + "Peroutka", + "Pešek", + "Peška", + "Pešta", + "Peterka", + "Petr", + "Petrák", + "Petráš", + "Petříček", + "Petřík", + "Petrů", + "Pham", + "Pícha", + "Pilař", + "Pilát", + "Píša", + "Pivoňka", + "Plaček", + "Plachý", + "Plšek", + "Pluhař", + "Podzimek", + "Pohl", + "Pokorný", + "Poláček", + "Polách", + "Polák", + "Polanský", + "Polášek", + "Polívka", + "Popelka", + "Pospíchal", + "Pospíšil", + "Potůček", + "Pour", + "Prachař", + "Prášek", + "Pražák", + "Prchal", + "Přibyl", + "Příhoda", + "Přikryl", + "Procházka", + "Prokeš", + "Prokop", + "Prošek", + "Provazník", + "Průcha", + "Průša", + "Pšenička", + "Ptáček", + "Rác", + "Rada", + "Rak", + "Rambousek", + "Raška", + "Rataj", + "řeháček", + "řehák", + "řehoř", + "Remeš", + "řezáč", + "Rezek", + "řezníček", + "Richter", + "Richtr", + "říha", + "Roubal", + "Rous", + "Rozsypal", + "Rudolf", + "Růžek", + "Růžička", + "Ryba", + "Rybář", + "Rýdl", + "Ryšavý", + "Sadílek", + "šafář", + "šafařík", + "šafránek", + "šálek", + "Samek", + "šanda", + "šašek", + "Schejbal", + "Schmidt", + "Schneider", + "Schwarz", + "šebek", + "šebela", + "šebesta", + "šeda", + "šedivý", + "Sedláček", + "Sedlák", + "Sedlář", + "Sehnal", + "Seidl", + "Seifert", + "Sekanina", + "Semerád", + "šenk", + "šesták", + "ševčík", + "Severa", + "Sikora", + "šilhavý", + "šíma", + "šimáček", + "šimák", + "šimánek", + "šimčík", + "šimeček", + "šimek", + "šimon", + "šimůnek", + "šindelář", + "šindler", + "šíp", + "šípek", + "šír", + "široký", + "šiška", + "Sivák", + "Skácel", + "Skala", + "Skála", + "Skalický", + "Sklenář", + "škoda", + "Skopal", + "Skořepa", + "škrabal", + "Skřivánek", + "Slabý", + "Sládek", + "Sladký", + "Sláma", + "Slanina", + "Slavíček", + "Slavík", + "šlechta", + "Slezák", + "Slováček", + "Slovák", + "Sluka", + "Smejkal", + "šmejkal", + "Smékal", + "šmerda", + "Smetana", + "šmíd", + "Smola", + "Smolík", + "Smolka", + "Smrčka", + "Smrž", + "Smutný", + "šnajdr", + "Sobek", + "Sobotka", + "Sochor", + "Sojka", + "Sokol", + "šolc", + "Sommer", + "Souček", + "Soukup", + "Sova", + "špaček", + "Spáčil", + "špička", + "šplíchal", + "Spurný", + "šrámek", + "Srb", + "Staněk", + "Stárek", + "Starý", + "šťastný", + "štefan", + "štefek", + "štefl", + "Stehlík", + "Steiner", + "Stejskal", + "štěpán", + "štěpánek", + "štěrba", + "Stibor", + "Stoklasa", + "Straka", + "Stránský", + "Strejček", + "Strnad", + "Strouhal", + "Stuchlík", + "Studený", + "Studnička", + "Stupka", + "šubrt", + "Suchánek", + "Suchomel", + "Suchý", + "Suk", + "šulc", + "šustr", + "šváb", + "Svačina", + "švanda", + "švarc", + "Svatoň", + "Svatoš", + "švec", + "švehla", + "švejda", + "švestka", + "Světlík", + "Sviták", + "Svoboda", + "Svozil", + "Sýkora", + "Synek", + "Syrový", + "Táborský", + "Tancoš", + "Teplý", + "Tesař", + "Tichý", + "Toman", + "Tománek", + "Tomáš", + "Tomášek", + "Tomeček", + "Tomek", + "Tomeš", + "Tóth", + "Tran", + "Trávníček", + "Trčka", + "Tříska", + "Trnka", + "Trojan", + "Truhlář", + "Tuček", + "Tůma", + "Tureček", + "Turek", + "Tvrdík", + "Tvrdý", + "Uher", + "Uhlíř", + "Ulrich", + "Urban", + "Urbanec", + "Urbánek", + "Vacek", + "Vácha", + "Václavek", + "Václavík", + "Vaculík", + "Vágner", + "Vala", + "Valášek", + "Válek", + "Valenta", + "Valeš", + "Váňa", + "Vančura", + "Vaněček", + "Vaněk", + "Vaníček", + "Varga", + "Vašák", + "Vašek", + "Vašíček", + "Vávra", + "Vavřík", + "Večeřa", + "Vejvoda", + "Verner", + "Veselý", + "Veverka", + "Vícha", + "Vilímek", + "Vinš", + "Víšek", + "Vít", + "Vitásek", + "Vítek", + "Vlach", + "Vlasák", + "Vlček", + "Vlk", + "Vobořil", + "Vodák", + "Vodička", + "Vodrážka", + "Vojáček", + "Vojta", + "Vojtěch", + "Vojtek", + "Vojtíšek", + "Vokoun", + "Volek", + "Volf", + "Volný", + "Vondra", + "Vondráček", + "Vondrák", + "Voráček", + "Vorel", + "Voříšek", + "Vorlíček", + "Votava", + "Votruba", + "Vrabec", + "Vrána", + "Vrba", + "Vrzal", + "Vybíral", + "Vydra", + "Vymazal", + "Vyskočil", + "Vysloužil", + "Wagner", + "Walter", + "Weber", + "Weiss", + "Winkler", + "Wolf", + "Zábranský", + "žáček", + "Zach", + "Zahrádka", + "Zahradník", + "Zajíc", + "Zajíček", + "žák", + "Zálešák", + "Zámečník", + "Zapletal", + "Záruba", + "Zatloukal", + "Zavadil", + "Zavřel", + "Zbořil", + "žďárský", + "Zdražil", + "Zedník", + "Zelenka", + "Zelený", + "Zelinka", + "Zeman", + "Zemánek", + "žemlička", + "Zezula", + "žídek", + "žiga", + "Zíka", + "Zikmund", + "Zima", + "žižka", + "Zlámal", + "Zoubek", + "Zouhar", + "žůrek", + "Zvěřina", +]; + +},{}],146:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{man_first_name} #{man_last_name}", + "#{prefix} #{woman_first_name} #{woman_last_name}", + "#{man_first_name} #{man_last_name} #{suffix}", + "#{woman_first_name} #{woman_last_name} #{suffix}", + "#{man_first_name} #{man_last_name}", + "#{man_first_name} #{man_last_name}", + "#{man_first_name} #{man_last_name}", + "#{woman_first_name} #{woman_last_name}", + "#{woman_first_name} #{woman_last_name}", + "#{woman_first_name} #{woman_last_name}" +]; + +},{}],147:[function(require,module,exports){ +module["exports"] = [ + "Ing.", + "Mgr.", + "JUDr.", + "MUDr." +]; + +},{}],148:[function(require,module,exports){ +module["exports"] = [ + "Phd." +]; + +},{}],149:[function(require,module,exports){ +module["exports"] = { + "descriptor": [ + "Lead", + "Senior", + "Direct", + "Corporate", + "Dynamic", + "Future", + "Product", + "National", + "Regional", + "District", + "Central", + "Global", + "Customer", + "Investor", + "Dynamic", + "International", + "Legacy", + "Forward", + "Internal", + "Human", + "Chief", + "Principal" + ], + "level": [ + "Solutions", + "Program", + "Brand", + "Security", + "Research", + "Marketing", + "Directives", + "Implementation", + "Integration", + "Functionality", + "Response", + "Paradigm", + "Tactics", + "Identity", + "Markets", + "Group", + "Division", + "Applications", + "Optimization", + "Operations", + "Infrastructure", + "Intranet", + "Communications", + "Web", + "Branding", + "Quality", + "Assurance", + "Mobility", + "Accounts", + "Data", + "Creative", + "Configuration", + "Accountability", + "Interactions", + "Factors", + "Usability", + "Metrics" + ], + "job": [ + "Supervisor", + "Associate", + "Executive", + "Liason", + "Officer", + "Manager", + "Engineer", + "Specialist", + "Director", + "Coordinator", + "Administrator", + "Architect", + "Analyst", + "Designer", + "Planner", + "Orchestrator", + "Technician", + "Developer", + "Producer", + "Consultant", + "Assistant", + "Facilitator", + "Agent", + "Representative", + "Strategist" + ] +}; + +},{}],150:[function(require,module,exports){ +module["exports"] = [ + "601 ### ###", + "737 ### ###", + "736 ### ###", + "### ### ###", + "+420 ### ### ###", + "00420 ### ### ###" +]; + +},{}],151:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":150,"dup":108}],152:[function(require,module,exports){ +module["exports"] = [ + "###", + "##", + "#", + "##a", + "##b", + "##c" +]; + +},{}],153:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix} #{Name.first_name}#{city_suffix}", + "#{city_prefix} #{Name.first_name}", + "#{Name.first_name}#{city_suffix}", + "#{Name.last_name}#{city_suffix}" +]; + +},{}],154:[function(require,module,exports){ +module["exports"] = [ + "Nord", + "Ost", + "West", + "Süd", + "Neu", + "Alt", + "Bad" +]; + +},{}],155:[function(require,module,exports){ +module["exports"] = [ + "stadt", + "dorf", + "land", + "scheid", + "burg" +]; + +},{}],156:[function(require,module,exports){ +module["exports"] = [ + "Ägypten", + "Äquatorialguinea", + "Äthiopien", + "Österreich", + "Afghanistan", + "Albanien", + "Algerien", + "Amerikanisch-Samoa", + "Amerikanische Jungferninseln", + "Andorra", + "Angola", + "Anguilla", + "Antarktis", + "Antigua und Barbuda", + "Argentinien", + "Armenien", + "Aruba", + "Aserbaidschan", + "Australien", + "Bahamas", + "Bahrain", + "Bangladesch", + "Barbados", + "Belarus", + "Belgien", + "Belize", + "Benin", + "die Bermudas", + "Bhutan", + "Bolivien", + "Bosnien und Herzegowina", + "Botsuana", + "Bouvetinsel", + "Brasilien", + "Britische Jungferninseln", + "Britisches Territorium im Indischen Ozean", + "Brunei Darussalam", + "Bulgarien", + "Burkina Faso", + "Burundi", + "Chile", + "China", + "Cookinseln", + "Costa Rica", + "Dänemark", + "Demokratische Republik Kongo", + "Demokratische Volksrepublik Korea", + "Deutschland", + "Dominica", + "Dominikanische Republik", + "Dschibuti", + "Ecuador", + "El Salvador", + "Eritrea", + "Estland", + "Färöer", + "Falklandinseln", + "Fidschi", + "Finnland", + "Frankreich", + "Französisch-Guayana", + "Französisch-Polynesien", + "Französische Gebiete im südlichen Indischen Ozean", + "Gabun", + "Gambia", + "Georgien", + "Ghana", + "Gibraltar", + "Grönland", + "Grenada", + "Griechenland", + "Guadeloupe", + "Guam", + "Guatemala", + "Guinea", + "Guinea-Bissau", + "Guyana", + "Haiti", + "Heard und McDonaldinseln", + "Honduras", + "Hongkong", + "Indien", + "Indonesien", + "Irak", + "Iran", + "Irland", + "Island", + "Israel", + "Italien", + "Jamaika", + "Japan", + "Jemen", + "Jordanien", + "Jugoslawien", + "Kaimaninseln", + "Kambodscha", + "Kamerun", + "Kanada", + "Kap Verde", + "Kasachstan", + "Katar", + "Kenia", + "Kirgisistan", + "Kiribati", + "Kleinere amerikanische Überseeinseln", + "Kokosinseln", + "Kolumbien", + "Komoren", + "Kongo", + "Kroatien", + "Kuba", + "Kuwait", + "Laos", + "Lesotho", + "Lettland", + "Libanon", + "Liberia", + "Libyen", + "Liechtenstein", + "Litauen", + "Luxemburg", + "Macau", + "Madagaskar", + "Malawi", + "Malaysia", + "Malediven", + "Mali", + "Malta", + "ehemalige jugoslawische Republik Mazedonien", + "Marokko", + "Marshallinseln", + "Martinique", + "Mauretanien", + "Mauritius", + "Mayotte", + "Mexiko", + "Mikronesien", + "Monaco", + "Mongolei", + "Montserrat", + "Mosambik", + "Myanmar", + "Nördliche Marianen", + "Namibia", + "Nauru", + "Nepal", + "Neukaledonien", + "Neuseeland", + "Nicaragua", + "Niederländische Antillen", + "Niederlande", + "Niger", + "Nigeria", + "Niue", + "Norfolkinsel", + "Norwegen", + "Oman", + "Osttimor", + "Pakistan", + "Palau", + "Panama", + "Papua-Neuguinea", + "Paraguay", + "Peru", + "Philippinen", + "Pitcairninseln", + "Polen", + "Portugal", + "Puerto Rico", + "Réunion", + "Republik Korea", + "Republik Moldau", + "Ruanda", + "Rumänien", + "Russische Föderation", + "São Tomé und Príncipe", + "Südafrika", + "Südgeorgien und Südliche Sandwichinseln", + "Salomonen", + "Sambia", + "Samoa", + "San Marino", + "Saudi-Arabien", + "Schweden", + "Schweiz", + "Senegal", + "Seychellen", + "Sierra Leone", + "Simbabwe", + "Singapur", + "Slowakei", + "Slowenien", + "Somalien", + "Spanien", + "Sri Lanka", + "St. Helena", + "St. Kitts und Nevis", + "St. Lucia", + "St. Pierre und Miquelon", + "St. Vincent und die Grenadinen", + "Sudan", + "Surinam", + "Svalbard und Jan Mayen", + "Swasiland", + "Syrien", + "Türkei", + "Tadschikistan", + "Taiwan", + "Tansania", + "Thailand", + "Togo", + "Tokelau", + "Tonga", + "Trinidad und Tobago", + "Tschad", + "Tschechische Republik", + "Tunesien", + "Turkmenistan", + "Turks- und Caicosinseln", + "Tuvalu", + "Uganda", + "Ukraine", + "Ungarn", + "Uruguay", + "Usbekistan", + "Vanuatu", + "Vatikanstadt", + "Venezuela", + "Vereinigte Arabische Emirate", + "Vereinigte Staaten", + "Vereinigtes Königreich", + "Vietnam", + "Wallis und Futuna", + "Weihnachtsinsel", + "Westsahara", + "Zentralafrikanische Republik", + "Zypern" +]; + +},{}],157:[function(require,module,exports){ +module["exports"] = [ + "Deutschland" +]; + +},{}],158:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.country = require("./country"); +address.street_root = require("./street_root"); +address.building_number = require("./building_number"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":152,"./city":153,"./city_prefix":154,"./city_suffix":155,"./country":156,"./default_country":157,"./postcode":159,"./secondary_address":160,"./state":161,"./state_abbr":162,"./street_address":163,"./street_name":164,"./street_root":165}],159:[function(require,module,exports){ +module["exports"] = [ + "#####", + "#####" +]; + +},{}],160:[function(require,module,exports){ +module["exports"] = [ + "Apt. ###", + "Zimmer ###", + "# OG" +]; + +},{}],161:[function(require,module,exports){ +module["exports"] = [ + "Baden-Württemberg", + "Bayern", + "Berlin", + "Brandenburg", + "Bremen", + "Hamburg", + "Hessen", + "Mecklenburg-Vorpommern", + "Niedersachsen", + "Nordrhein-Westfalen", + "Rheinland-Pfalz", + "Saarland", + "Sachsen", + "Sachsen-Anhalt", + "Schleswig-Holstein", + "Thüringen" +]; + +},{}],162:[function(require,module,exports){ +module["exports"] = [ + "BW", + "BY", + "BE", + "BB", + "HB", + "HH", + "HE", + "MV", + "NI", + "NW", + "RP", + "SL", + "SN", + "ST", + "SH", + "TH" +]; + +},{}],163:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],164:[function(require,module,exports){ +module["exports"] = [ + "#{street_root}" +]; + +},{}],165:[function(require,module,exports){ +module["exports"] = [ + "Ackerweg", + "Adalbert-Stifter-Str.", + "Adalbertstr.", + "Adolf-Baeyer-Str.", + "Adolf-Kaschny-Str.", + "Adolf-Reichwein-Str.", + "Adolfsstr.", + "Ahornweg", + "Ahrstr.", + "Akazienweg", + "Albert-Einstein-Str.", + "Albert-Schweitzer-Str.", + "Albertus-Magnus-Str.", + "Albert-Zarthe-Weg", + "Albin-Edelmann-Str.", + "Albrecht-Haushofer-Str.", + "Aldegundisstr.", + "Alexanderstr.", + "Alfred-Delp-Str.", + "Alfred-Kubin-Str.", + "Alfred-Stock-Str.", + "Alkenrather Str.", + "Allensteiner Str.", + "Alsenstr.", + "Alt Steinbücheler Weg", + "Alte Garten", + "Alte Heide", + "Alte Landstr.", + "Alte Ziegelei", + "Altenberger Str.", + "Altenhof", + "Alter Grenzweg", + "Altstadtstr.", + "Am Alten Gaswerk", + "Am Alten Schafstall", + "Am Arenzberg", + "Am Benthal", + "Am Birkenberg", + "Am Blauen Berg", + "Am Borsberg", + "Am Brungen", + "Am Büchelter Hof", + "Am Buttermarkt", + "Am Ehrenfriedhof", + "Am Eselsdamm", + "Am Falkenberg", + "Am Frankenberg", + "Am Gesundheitspark", + "Am Gierlichshof", + "Am Graben", + "Am Hagelkreuz", + "Am Hang", + "Am Heidkamp", + "Am Hemmelrather Hof", + "Am Hofacker", + "Am Hohen Ufer", + "Am Höllers Eck", + "Am Hühnerberg", + "Am Jägerhof", + "Am Junkernkamp", + "Am Kemperstiegel", + "Am Kettnersbusch", + "Am Kiesberg", + "Am Klösterchen", + "Am Knechtsgraben", + "Am Köllerweg", + "Am Köttersbach", + "Am Kreispark", + "Am Kronefeld", + "Am Küchenhof", + "Am Kühnsbusch", + "Am Lindenfeld", + "Am Märchen", + "Am Mittelberg", + "Am Mönchshof", + "Am Mühlenbach", + "Am Neuenhof", + "Am Nonnenbruch", + "Am Plattenbusch", + "Am Quettinger Feld", + "Am Rosenhügel", + "Am Sandberg", + "Am Scherfenbrand", + "Am Schokker", + "Am Silbersee", + "Am Sonnenhang", + "Am Sportplatz", + "Am Stadtpark", + "Am Steinberg", + "Am Telegraf", + "Am Thelenhof", + "Am Vogelkreuz", + "Am Vogelsang", + "Am Vogelsfeldchen", + "Am Wambacher Hof", + "Am Wasserturm", + "Am Weidenbusch", + "Am Weiher", + "Am Weingarten", + "Am Werth", + "Amselweg", + "An den Irlen", + "An den Rheinauen", + "An der Bergerweide", + "An der Dingbank", + "An der Evangelischen Kirche", + "An der Evgl. Kirche", + "An der Feldgasse", + "An der Fettehenne", + "An der Kante", + "An der Laach", + "An der Lehmkuhle", + "An der Lichtenburg", + "An der Luisenburg", + "An der Robertsburg", + "An der Schmitten", + "An der Schusterinsel", + "An der Steinrütsch", + "An St. Andreas", + "An St. Remigius", + "Andreasstr.", + "Ankerweg", + "Annette-Kolb-Str.", + "Apenrader Str.", + "Arnold-Ohletz-Str.", + "Atzlenbacher Str.", + "Auerweg", + "Auestr.", + "Auf dem Acker", + "Auf dem Blahnenhof", + "Auf dem Bohnbüchel", + "Auf dem Bruch", + "Auf dem End", + "Auf dem Forst", + "Auf dem Herberg", + "Auf dem Lehn", + "Auf dem Stein", + "Auf dem Weierberg", + "Auf dem Weiherhahn", + "Auf den Reien", + "Auf der Donnen", + "Auf der Grieße", + "Auf der Ohmer", + "Auf der Weide", + "Auf'm Berg", + "Auf'm Kamp", + "Augustastr.", + "August-Kekulé-Str.", + "A.-W.-v.-Hofmann-Str.", + "Bahnallee", + "Bahnhofstr.", + "Baltrumstr.", + "Bamberger Str.", + "Baumberger Str.", + "Bebelstr.", + "Beckers Kämpchen", + "Beerenstr.", + "Beethovenstr.", + "Behringstr.", + "Bendenweg", + "Bensberger Str.", + "Benzstr.", + "Bergische Landstr.", + "Bergstr.", + "Berliner Platz", + "Berliner Str.", + "Bernhard-Letterhaus-Str.", + "Bernhard-Lichtenberg-Str.", + "Bernhard-Ridder-Str.", + "Bernsteinstr.", + "Bertha-Middelhauve-Str.", + "Bertha-von-Suttner-Str.", + "Bertolt-Brecht-Str.", + "Berzeliusstr.", + "Bielertstr.", + "Biesenbach", + "Billrothstr.", + "Birkenbergstr.", + "Birkengartenstr.", + "Birkenweg", + "Bismarckstr.", + "Bitterfelder Str.", + "Blankenburg", + "Blaukehlchenweg", + "Blütenstr.", + "Boberstr.", + "Böcklerstr.", + "Bodelschwinghstr.", + "Bodestr.", + "Bogenstr.", + "Bohnenkampsweg", + "Bohofsweg", + "Bonifatiusstr.", + "Bonner Str.", + "Borkumstr.", + "Bornheimer Str.", + "Borsigstr.", + "Borussiastr.", + "Bracknellstr.", + "Brahmsweg", + "Brandenburger Str.", + "Breidenbachstr.", + "Breslauer Str.", + "Bruchhauser Str.", + "Brückenstr.", + "Brucknerstr.", + "Brüder-Bonhoeffer-Str.", + "Buchenweg", + "Bürgerbuschweg", + "Burgloch", + "Burgplatz", + "Burgstr.", + "Burgweg", + "Bürriger Weg", + "Burscheider Str.", + "Buschkämpchen", + "Butterheider Str.", + "Carl-Duisberg-Platz", + "Carl-Duisberg-Str.", + "Carl-Leverkus-Str.", + "Carl-Maria-von-Weber-Platz", + "Carl-Maria-von-Weber-Str.", + "Carlo-Mierendorff-Str.", + "Carl-Rumpff-Str.", + "Carl-von-Ossietzky-Str.", + "Charlottenburger Str.", + "Christian-Heß-Str.", + "Claasbruch", + "Clemens-Winkler-Str.", + "Concordiastr.", + "Cranachstr.", + "Dahlemer Str.", + "Daimlerstr.", + "Damaschkestr.", + "Danziger Str.", + "Debengasse", + "Dechant-Fein-Str.", + "Dechant-Krey-Str.", + "Deichtorstr.", + "Dhünnberg", + "Dhünnstr.", + "Dianastr.", + "Diedenhofener Str.", + "Diepental", + "Diepenthaler Str.", + "Dieselstr.", + "Dillinger Str.", + "Distelkamp", + "Dohrgasse", + "Domblick", + "Dönhoffstr.", + "Dornierstr.", + "Drachenfelsstr.", + "Dr.-August-Blank-Str.", + "Dresdener Str.", + "Driescher Hecke", + "Drosselweg", + "Dudweilerstr.", + "Dünenweg", + "Dünfelder Str.", + "Dünnwalder Grenzweg", + "Düppeler Str.", + "Dürerstr.", + "Dürscheider Weg", + "Düsseldorfer Str.", + "Edelrather Weg", + "Edmund-Husserl-Str.", + "Eduard-Spranger-Str.", + "Ehrlichstr.", + "Eichenkamp", + "Eichenweg", + "Eidechsenweg", + "Eifelstr.", + "Eifgenstr.", + "Eintrachtstr.", + "Elbestr.", + "Elisabeth-Langgässer-Str.", + "Elisabethstr.", + "Elisabeth-von-Thadden-Str.", + "Elisenstr.", + "Elsa-Brändström-Str.", + "Elsbachstr.", + "Else-Lasker-Schüler-Str.", + "Elsterstr.", + "Emil-Fischer-Str.", + "Emil-Nolde-Str.", + "Engelbertstr.", + "Engstenberger Weg", + "Entenpfuhl", + "Erbelegasse", + "Erftstr.", + "Erfurter Str.", + "Erich-Heckel-Str.", + "Erich-Klausener-Str.", + "Erich-Ollenhauer-Str.", + "Erlenweg", + "Ernst-Bloch-Str.", + "Ernst-Ludwig-Kirchner-Str.", + "Erzbergerstr.", + "Eschenallee", + "Eschenweg", + "Esmarchstr.", + "Espenweg", + "Euckenstr.", + "Eulengasse", + "Eulenkamp", + "Ewald-Flamme-Str.", + "Ewald-Röll-Str.", + "Fährstr.", + "Farnweg", + "Fasanenweg", + "Faßbacher Hof", + "Felderstr.", + "Feldkampstr.", + "Feldsiefer Weg", + "Feldsiefer Wiesen", + "Feldstr.", + "Feldtorstr.", + "Felix-von-Roll-Str.", + "Ferdinand-Lassalle-Str.", + "Fester Weg", + "Feuerbachstr.", + "Feuerdornweg", + "Fichtenweg", + "Fichtestr.", + "Finkelsteinstr.", + "Finkenweg", + "Fixheider Str.", + "Flabbenhäuschen", + "Flensburger Str.", + "Fliederweg", + "Florastr.", + "Florianweg", + "Flotowstr.", + "Flurstr.", + "Föhrenweg", + "Fontanestr.", + "Forellental", + "Fortunastr.", + "Franz-Esser-Str.", + "Franz-Hitze-Str.", + "Franz-Kail-Str.", + "Franz-Marc-Str.", + "Freiburger Str.", + "Freiheitstr.", + "Freiherr-vom-Stein-Str.", + "Freudenthal", + "Freudenthaler Weg", + "Fridtjof-Nansen-Str.", + "Friedenberger Str.", + "Friedensstr.", + "Friedhofstr.", + "Friedlandstr.", + "Friedlieb-Ferdinand-Runge-Str.", + "Friedrich-Bayer-Str.", + "Friedrich-Bergius-Platz", + "Friedrich-Ebert-Platz", + "Friedrich-Ebert-Str.", + "Friedrich-Engels-Str.", + "Friedrich-List-Str.", + "Friedrich-Naumann-Str.", + "Friedrich-Sertürner-Str.", + "Friedrichstr.", + "Friedrich-Weskott-Str.", + "Friesenweg", + "Frischenberg", + "Fritz-Erler-Str.", + "Fritz-Henseler-Str.", + "Fröbelstr.", + "Fürstenbergplatz", + "Fürstenbergstr.", + "Gabriele-Münter-Str.", + "Gartenstr.", + "Gebhardstr.", + "Geibelstr.", + "Gellertstr.", + "Georg-von-Vollmar-Str.", + "Gerhard-Domagk-Str.", + "Gerhart-Hauptmann-Str.", + "Gerichtsstr.", + "Geschwister-Scholl-Str.", + "Gezelinallee", + "Gierener Weg", + "Ginsterweg", + "Gisbert-Cremer-Str.", + "Glücksburger Str.", + "Gluckstr.", + "Gneisenaustr.", + "Goetheplatz", + "Goethestr.", + "Golo-Mann-Str.", + "Görlitzer Str.", + "Görresstr.", + "Graebestr.", + "Graf-Galen-Platz", + "Gregor-Mendel-Str.", + "Greifswalder Str.", + "Grillenweg", + "Gronenborner Weg", + "Große Kirchstr.", + "Grunder Wiesen", + "Grundermühle", + "Grundermühlenhof", + "Grundermühlenweg", + "Grüner Weg", + "Grunewaldstr.", + "Grünstr.", + "Günther-Weisenborn-Str.", + "Gustav-Freytag-Str.", + "Gustav-Heinemann-Str.", + "Gustav-Radbruch-Str.", + "Gut Reuschenberg", + "Gutenbergstr.", + "Haberstr.", + "Habichtgasse", + "Hafenstr.", + "Hagenauer Str.", + "Hahnenblecher", + "Halenseestr.", + "Halfenleimbach", + "Hallesche Str.", + "Halligstr.", + "Hamberger Str.", + "Hammerweg", + "Händelstr.", + "Hannah-Höch-Str.", + "Hans-Arp-Str.", + "Hans-Gerhard-Str.", + "Hans-Sachs-Str.", + "Hans-Schlehahn-Str.", + "Hans-von-Dohnanyi-Str.", + "Hardenbergstr.", + "Haselweg", + "Hauptstr.", + "Haus-Vorster-Str.", + "Hauweg", + "Havelstr.", + "Havensteinstr.", + "Haydnstr.", + "Hebbelstr.", + "Heckenweg", + "Heerweg", + "Hegelstr.", + "Heidberg", + "Heidehöhe", + "Heidestr.", + "Heimstättenweg", + "Heinrich-Böll-Str.", + "Heinrich-Brüning-Str.", + "Heinrich-Claes-Str.", + "Heinrich-Heine-Str.", + "Heinrich-Hörlein-Str.", + "Heinrich-Lübke-Str.", + "Heinrich-Lützenkirchen-Weg", + "Heinrichstr.", + "Heinrich-Strerath-Str.", + "Heinrich-von-Kleist-Str.", + "Heinrich-von-Stephan-Str.", + "Heisterbachstr.", + "Helenenstr.", + "Helmestr.", + "Hemmelrather Weg", + "Henry-T.-v.-Böttinger-Str.", + "Herderstr.", + "Heribertstr.", + "Hermann-Ehlers-Str.", + "Hermann-Hesse-Str.", + "Hermann-König-Str.", + "Hermann-Löns-Str.", + "Hermann-Milde-Str.", + "Hermann-Nörrenberg-Str.", + "Hermann-von-Helmholtz-Str.", + "Hermann-Waibel-Str.", + "Herzogstr.", + "Heymannstr.", + "Hindenburgstr.", + "Hirzenberg", + "Hitdorfer Kirchweg", + "Hitdorfer Str.", + "Höfer Mühle", + "Höfer Weg", + "Hohe Str.", + "Höhenstr.", + "Höltgestal", + "Holunderweg", + "Holzer Weg", + "Holzer Wiesen", + "Hornpottweg", + "Hubertusweg", + "Hufelandstr.", + "Hufer Weg", + "Humboldtstr.", + "Hummelsheim", + "Hummelweg", + "Humperdinckstr.", + "Hüscheider Gärten", + "Hüscheider Str.", + "Hütte", + "Ilmstr.", + "Im Bergischen Heim", + "Im Bruch", + "Im Buchenhain", + "Im Bühl", + "Im Burgfeld", + "Im Dorf", + "Im Eisholz", + "Im Friedenstal", + "Im Frohental", + "Im Grunde", + "Im Hederichsfeld", + "Im Jücherfeld", + "Im Kalkfeld", + "Im Kirberg", + "Im Kirchfeld", + "Im Kreuzbruch", + "Im Mühlenfeld", + "Im Nesselrader Kamp", + "Im Oberdorf", + "Im Oberfeld", + "Im Rosengarten", + "Im Rottland", + "Im Scheffengarten", + "Im Staderfeld", + "Im Steinfeld", + "Im Weidenblech", + "Im Winkel", + "Im Ziegelfeld", + "Imbach", + "Imbacher Weg", + "Immenweg", + "In den Blechenhöfen", + "In den Dehlen", + "In der Birkenau", + "In der Dasladen", + "In der Felderhütten", + "In der Hartmannswiese", + "In der Höhle", + "In der Schaafsdellen", + "In der Wasserkuhl", + "In der Wüste", + "In Holzhausen", + "Insterstr.", + "Jacob-Fröhlen-Str.", + "Jägerstr.", + "Jahnstr.", + "Jakob-Eulenberg-Weg", + "Jakobistr.", + "Jakob-Kaiser-Str.", + "Jenaer Str.", + "Johannes-Baptist-Str.", + "Johannes-Dott-Str.", + "Johannes-Popitz-Str.", + "Johannes-Wislicenus-Str.", + "Johannisburger Str.", + "Johann-Janssen-Str.", + "Johann-Wirtz-Weg", + "Josefstr.", + "Jüch", + "Julius-Doms-Str.", + "Julius-Leber-Str.", + "Kaiserplatz", + "Kaiserstr.", + "Kaiser-Wilhelm-Allee", + "Kalkstr.", + "Kämpchenstr.", + "Kämpenwiese", + "Kämper Weg", + "Kamptalweg", + "Kanalstr.", + "Kandinskystr.", + "Kantstr.", + "Kapellenstr.", + "Karl-Arnold-Str.", + "Karl-Bosch-Str.", + "Karl-Bückart-Str.", + "Karl-Carstens-Ring", + "Karl-Friedrich-Goerdeler-Str.", + "Karl-Jaspers-Str.", + "Karl-König-Str.", + "Karl-Krekeler-Str.", + "Karl-Marx-Str.", + "Karlstr.", + "Karl-Ulitzka-Str.", + "Karl-Wichmann-Str.", + "Karl-Wingchen-Str.", + "Käsenbrod", + "Käthe-Kollwitz-Str.", + "Katzbachstr.", + "Kerschensteinerstr.", + "Kiefernweg", + "Kieler Str.", + "Kieselstr.", + "Kiesweg", + "Kinderhausen", + "Kleiberweg", + "Kleine Kirchstr.", + "Kleingansweg", + "Kleinheider Weg", + "Klief", + "Kneippstr.", + "Knochenbergsweg", + "Kochergarten", + "Kocherstr.", + "Kockelsberg", + "Kolberger Str.", + "Kolmarer Str.", + "Kölner Gasse", + "Kölner Str.", + "Kolpingstr.", + "Königsberger Platz", + "Konrad-Adenauer-Platz", + "Köpenicker Str.", + "Kopernikusstr.", + "Körnerstr.", + "Köschenberg", + "Köttershof", + "Kreuzbroicher Str.", + "Kreuzkamp", + "Krummer Weg", + "Kruppstr.", + "Kuhlmannweg", + "Kump", + "Kumper Weg", + "Kunstfeldstr.", + "Küppersteger Str.", + "Kursiefen", + "Kursiefer Weg", + "Kurtekottenweg", + "Kurt-Schumacher-Ring", + "Kyllstr.", + "Langenfelder Str.", + "Längsleimbach", + "Lärchenweg", + "Legienstr.", + "Lehner Mühle", + "Leichlinger Str.", + "Leimbacher Hof", + "Leinestr.", + "Leineweberstr.", + "Leipziger Str.", + "Lerchengasse", + "Lessingstr.", + "Libellenweg", + "Lichstr.", + "Liebigstr.", + "Lindenstr.", + "Lingenfeld", + "Linienstr.", + "Lippe", + "Löchergraben", + "Löfflerstr.", + "Loheweg", + "Lohrbergstr.", + "Lohrstr.", + "Löhstr.", + "Lortzingstr.", + "Lötzener Str.", + "Löwenburgstr.", + "Lucasstr.", + "Ludwig-Erhard-Platz", + "Ludwig-Girtler-Str.", + "Ludwig-Knorr-Str.", + "Luisenstr.", + "Lupinenweg", + "Lurchenweg", + "Lützenkirchener Str.", + "Lycker Str.", + "Maashofstr.", + "Manforter Str.", + "Marc-Chagall-Str.", + "Maria-Dresen-Str.", + "Maria-Terwiel-Str.", + "Marie-Curie-Str.", + "Marienburger Str.", + "Mariendorfer Str.", + "Marienwerderstr.", + "Marie-Schlei-Str.", + "Marktplatz", + "Markusweg", + "Martin-Buber-Str.", + "Martin-Heidegger-Str.", + "Martin-Luther-Str.", + "Masurenstr.", + "Mathildenweg", + "Maurinusstr.", + "Mauspfad", + "Max-Beckmann-Str.", + "Max-Delbrück-Str.", + "Max-Ernst-Str.", + "Max-Holthausen-Platz", + "Max-Horkheimer-Str.", + "Max-Liebermann-Str.", + "Max-Pechstein-Str.", + "Max-Planck-Str.", + "Max-Scheler-Str.", + "Max-Schönenberg-Str.", + "Maybachstr.", + "Meckhofer Feld", + "Meisenweg", + "Memelstr.", + "Menchendahler Str.", + "Mendelssohnstr.", + "Merziger Str.", + "Mettlacher Str.", + "Metzer Str.", + "Michaelsweg", + "Miselohestr.", + "Mittelstr.", + "Mohlenstr.", + "Moltkestr.", + "Monheimer Str.", + "Montanusstr.", + "Montessoriweg", + "Moosweg", + "Morsbroicher Str.", + "Moselstr.", + "Moskauer Str.", + "Mozartstr.", + "Mühlenweg", + "Muhrgasse", + "Muldestr.", + "Mülhausener Str.", + "Mülheimer Str.", + "Münsters Gäßchen", + "Münzstr.", + "Müritzstr.", + "Myliusstr.", + "Nachtigallenweg", + "Nauener Str.", + "Neißestr.", + "Nelly-Sachs-Str.", + "Netzestr.", + "Neuendriesch", + "Neuenhausgasse", + "Neuenkamp", + "Neujudenhof", + "Neukronenberger Str.", + "Neustadtstr.", + "Nicolai-Hartmann-Str.", + "Niederblecher", + "Niederfeldstr.", + "Nietzschestr.", + "Nikolaus-Groß-Str.", + "Nobelstr.", + "Norderneystr.", + "Nordstr.", + "Ober dem Hof", + "Obere Lindenstr.", + "Obere Str.", + "Oberölbach", + "Odenthaler Str.", + "Oderstr.", + "Okerstr.", + "Olof-Palme-Str.", + "Ophovener Str.", + "Opladener Platz", + "Opladener Str.", + "Ortelsburger Str.", + "Oskar-Moll-Str.", + "Oskar-Schlemmer-Str.", + "Oststr.", + "Oswald-Spengler-Str.", + "Otto-Dix-Str.", + "Otto-Grimm-Str.", + "Otto-Hahn-Str.", + "Otto-Müller-Str.", + "Otto-Stange-Str.", + "Ottostr.", + "Otto-Varnhagen-Str.", + "Otto-Wels-Str.", + "Ottweilerstr.", + "Oulustr.", + "Overfeldweg", + "Pappelweg", + "Paracelsusstr.", + "Parkstr.", + "Pastor-Louis-Str.", + "Pastor-Scheibler-Str.", + "Pastorskamp", + "Paul-Klee-Str.", + "Paul-Löbe-Str.", + "Paulstr.", + "Peenestr.", + "Pescher Busch", + "Peschstr.", + "Pestalozzistr.", + "Peter-Grieß-Str.", + "Peter-Joseph-Lenné-Str.", + "Peter-Neuenheuser-Str.", + "Petersbergstr.", + "Peterstr.", + "Pfarrer-Jekel-Str.", + "Pfarrer-Klein-Str.", + "Pfarrer-Röhr-Str.", + "Pfeilshofstr.", + "Philipp-Ott-Str.", + "Piet-Mondrian-Str.", + "Platanenweg", + "Pommernstr.", + "Porschestr.", + "Poststr.", + "Potsdamer Str.", + "Pregelstr.", + "Prießnitzstr.", + "Pützdelle", + "Quarzstr.", + "Quettinger Str.", + "Rat-Deycks-Str.", + "Rathenaustr.", + "Ratherkämp", + "Ratiborer Str.", + "Raushofstr.", + "Regensburger Str.", + "Reinickendorfer Str.", + "Renkgasse", + "Rennbaumplatz", + "Rennbaumstr.", + "Reuschenberger Str.", + "Reusrather Str.", + "Reuterstr.", + "Rheinallee", + "Rheindorfer Str.", + "Rheinstr.", + "Rhein-Wupper-Platz", + "Richard-Wagner-Str.", + "Rilkestr.", + "Ringstr.", + "Robert-Blum-Str.", + "Robert-Koch-Str.", + "Robert-Medenwald-Str.", + "Rolandstr.", + "Romberg", + "Röntgenstr.", + "Roonstr.", + "Ropenstall", + "Ropenstaller Weg", + "Rosenthal", + "Rostocker Str.", + "Rotdornweg", + "Röttgerweg", + "Rückertstr.", + "Rudolf-Breitscheid-Str.", + "Rudolf-Mann-Platz", + "Rudolf-Stracke-Str.", + "Ruhlachplatz", + "Ruhlachstr.", + "Rüttersweg", + "Saalestr.", + "Saarbrücker Str.", + "Saarlauterner Str.", + "Saarstr.", + "Salamanderweg", + "Samlandstr.", + "Sanddornstr.", + "Sandstr.", + "Sauerbruchstr.", + "Schäfershütte", + "Scharnhorststr.", + "Scheffershof", + "Scheidemannstr.", + "Schellingstr.", + "Schenkendorfstr.", + "Schießbergstr.", + "Schillerstr.", + "Schlangenhecke", + "Schlebuscher Heide", + "Schlebuscher Str.", + "Schlebuschrath", + "Schlehdornstr.", + "Schleiermacherstr.", + "Schloßstr.", + "Schmalenbruch", + "Schnepfenflucht", + "Schöffenweg", + "Schöllerstr.", + "Schöne Aussicht", + "Schöneberger Str.", + "Schopenhauerstr.", + "Schubertplatz", + "Schubertstr.", + "Schulberg", + "Schulstr.", + "Schumannstr.", + "Schwalbenweg", + "Schwarzastr.", + "Sebastianusweg", + "Semmelweisstr.", + "Siebelplatz", + "Siemensstr.", + "Solinger Str.", + "Sonderburger Str.", + "Spandauer Str.", + "Speestr.", + "Sperberweg", + "Sperlingsweg", + "Spitzwegstr.", + "Sporrenberger Mühle", + "Spreestr.", + "St. Ingberter Str.", + "Starenweg", + "Stauffenbergstr.", + "Stefan-Zweig-Str.", + "Stegerwaldstr.", + "Steglitzer Str.", + "Steinbücheler Feld", + "Steinbücheler Str.", + "Steinstr.", + "Steinweg", + "Stephan-Lochner-Str.", + "Stephanusstr.", + "Stettiner Str.", + "Stixchesstr.", + "Stöckenstr.", + "Stralsunder Str.", + "Straßburger Str.", + "Stresemannplatz", + "Strombergstr.", + "Stromstr.", + "Stüttekofener Str.", + "Sudestr.", + "Sürderstr.", + "Syltstr.", + "Talstr.", + "Tannenbergstr.", + "Tannenweg", + "Taubenweg", + "Teitscheider Weg", + "Telegrafenstr.", + "Teltower Str.", + "Tempelhofer Str.", + "Theodor-Adorno-Str.", + "Theodor-Fliedner-Str.", + "Theodor-Gierath-Str.", + "Theodor-Haubach-Str.", + "Theodor-Heuss-Ring", + "Theodor-Storm-Str.", + "Theodorstr.", + "Thomas-Dehler-Str.", + "Thomas-Morus-Str.", + "Thomas-von-Aquin-Str.", + "Tönges Feld", + "Torstr.", + "Treptower Str.", + "Treuburger Str.", + "Uhlandstr.", + "Ulmenweg", + "Ulmer Str.", + "Ulrichstr.", + "Ulrich-von-Hassell-Str.", + "Umlag", + "Unstrutstr.", + "Unter dem Schildchen", + "Unterölbach", + "Unterstr.", + "Uppersberg", + "Van\\'t-Hoff-Str.", + "Veit-Stoß-Str.", + "Vereinsstr.", + "Viktor-Meyer-Str.", + "Vincent-van-Gogh-Str.", + "Virchowstr.", + "Voigtslach", + "Volhardstr.", + "Völklinger Str.", + "Von-Brentano-Str.", + "Von-Diergardt-Str.", + "Von-Eichendorff-Str.", + "Von-Ketteler-Str.", + "Von-Knoeringen-Str.", + "Von-Pettenkofer-Str.", + "Von-Siebold-Str.", + "Wacholderweg", + "Waldstr.", + "Walter-Flex-Str.", + "Walter-Hempel-Str.", + "Walter-Hochapfel-Str.", + "Walter-Nernst-Str.", + "Wannseestr.", + "Warnowstr.", + "Warthestr.", + "Weddigenstr.", + "Weichselstr.", + "Weidenstr.", + "Weidfeldstr.", + "Weiherfeld", + "Weiherstr.", + "Weinhäuser Str.", + "Weißdornweg", + "Weißenseestr.", + "Weizkamp", + "Werftstr.", + "Werkstättenstr.", + "Werner-Heisenberg-Str.", + "Werrastr.", + "Weyerweg", + "Widdauener Str.", + "Wiebertshof", + "Wiehbachtal", + "Wiembachallee", + "Wiesdorfer Platz", + "Wiesenstr.", + "Wilhelm-Busch-Str.", + "Wilhelm-Hastrich-Str.", + "Wilhelm-Leuschner-Str.", + "Wilhelm-Liebknecht-Str.", + "Wilhelmsgasse", + "Wilhelmstr.", + "Willi-Baumeister-Str.", + "Willy-Brandt-Ring", + "Winand-Rossi-Str.", + "Windthorststr.", + "Winkelweg", + "Winterberg", + "Wittenbergstr.", + "Wolf-Vostell-Str.", + "Wolkenburgstr.", + "Wupperstr.", + "Wuppertalstr.", + "Wüstenhof", + "Yitzhak-Rabin-Str.", + "Zauberkuhle", + "Zedernweg", + "Zehlendorfer Str.", + "Zehntenweg", + "Zeisigweg", + "Zeppelinstr.", + "Zschopaustr.", + "Zum Claashäuschen", + "Zündhütchenweg", + "Zur Alten Brauerei", + "Zur alten Fabrik" +]; + +},{}],166:[function(require,module,exports){ +module["exports"] = [ + "+49-1##-#######", + "+49-1###-########" +]; + +},{}],167:[function(require,module,exports){ +var cell_phone = {}; +module['exports'] = cell_phone; +cell_phone.formats = require("./formats"); + +},{"./formats":166}],168:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.legal_form = require("./legal_form"); +company.name = require("./name"); + +},{"./legal_form":169,"./name":170,"./suffix":171}],169:[function(require,module,exports){ +module["exports"] = [ + "GmbH", + "AG", + "Gruppe", + "KG", + "GmbH & Co. KG", + "UG", + "OHG" +]; + +},{}],170:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name}-#{Name.last_name}", + "#{Name.last_name}, #{Name.last_name} und #{Name.last_name}" +]; + +},{}],171:[function(require,module,exports){ +arguments[4][169][0].apply(exports,arguments) +},{"dup":169}],172:[function(require,module,exports){ +var de = {}; +module['exports'] = de; +de.title = "German"; +de.address = require("./address"); +de.company = require("./company"); +de.internet = require("./internet"); +de.lorem = require("./lorem"); +de.name = require("./name"); +de.phone_number = require("./phone_number"); +de.cell_phone = require("./cell_phone"); +},{"./address":158,"./cell_phone":167,"./company":168,"./internet":175,"./lorem":176,"./name":179,"./phone_number":185}],173:[function(require,module,exports){ +module["exports"] = [ + "com", + "info", + "name", + "net", + "org", + "de", + "ch" +]; + +},{}],174:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.com", + "hotmail.com" +]; + +},{}],175:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":173,"./free_email":174,"dup":98}],176:[function(require,module,exports){ +var lorem = {}; +module['exports'] = lorem; +lorem.words = require("./words"); + +},{"./words":177}],177:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],178:[function(require,module,exports){ +module["exports"] = [ + "Aaron", + "Abdul", + "Abdullah", + "Adam", + "Adrian", + "Adriano", + "Ahmad", + "Ahmed", + "Ahmet", + "Alan", + "Albert", + "Alessandro", + "Alessio", + "Alex", + "Alexander", + "Alfred", + "Ali", + "Amar", + "Amir", + "Amon", + "Andre", + "Andreas", + "Andrew", + "Angelo", + "Ansgar", + "Anthony", + "Anton", + "Antonio", + "Arda", + "Arian", + "Armin", + "Arne", + "Arno", + "Arthur", + "Artur", + "Arved", + "Arvid", + "Ayman", + "Baran", + "Baris", + "Bastian", + "Batuhan", + "Bela", + "Ben", + "Benedikt", + "Benjamin", + "Bennet", + "Bennett", + "Benno", + "Bent", + "Berat", + "Berkay", + "Bernd", + "Bilal", + "Bjarne", + "Björn", + "Bo", + "Boris", + "Brandon", + "Brian", + "Bruno", + "Bryan", + "Burak", + "Calvin", + "Can", + "Carl", + "Carlo", + "Carlos", + "Caspar", + "Cedric", + "Cedrik", + "Cem", + "Charlie", + "Chris", + "Christian", + "Christiano", + "Christoph", + "Christopher", + "Claas", + "Clemens", + "Colin", + "Collin", + "Conner", + "Connor", + "Constantin", + "Corvin", + "Curt", + "Damian", + "Damien", + "Daniel", + "Danilo", + "Danny", + "Darian", + "Dario", + "Darius", + "Darren", + "David", + "Davide", + "Davin", + "Dean", + "Deniz", + "Dennis", + "Denny", + "Devin", + "Diego", + "Dion", + "Domenic", + "Domenik", + "Dominic", + "Dominik", + "Dorian", + "Dustin", + "Dylan", + "Ecrin", + "Eddi", + "Eddy", + "Edgar", + "Edwin", + "Efe", + "Ege", + "Elia", + "Eliah", + "Elias", + "Elijah", + "Emanuel", + "Emil", + "Emilian", + "Emilio", + "Emir", + "Emirhan", + "Emre", + "Enes", + "Enno", + "Enrico", + "Eren", + "Eric", + "Erik", + "Etienne", + "Fabian", + "Fabien", + "Fabio", + "Fabrice", + "Falk", + "Felix", + "Ferdinand", + "Fiete", + "Filip", + "Finlay", + "Finley", + "Finn", + "Finnley", + "Florian", + "Francesco", + "Franz", + "Frederic", + "Frederick", + "Frederik", + "Friedrich", + "Fritz", + "Furkan", + "Fynn", + "Gabriel", + "Georg", + "Gerrit", + "Gian", + "Gianluca", + "Gino", + "Giuliano", + "Giuseppe", + "Gregor", + "Gustav", + "Hagen", + "Hamza", + "Hannes", + "Hanno", + "Hans", + "Hasan", + "Hassan", + "Hauke", + "Hendrik", + "Hennes", + "Henning", + "Henri", + "Henrick", + "Henrik", + "Henry", + "Hugo", + "Hussein", + "Ian", + "Ibrahim", + "Ilias", + "Ilja", + "Ilyas", + "Immanuel", + "Ismael", + "Ismail", + "Ivan", + "Iven", + "Jack", + "Jacob", + "Jaden", + "Jakob", + "Jamal", + "James", + "Jamie", + "Jan", + "Janek", + "Janis", + "Janne", + "Jannek", + "Jannes", + "Jannik", + "Jannis", + "Jano", + "Janosch", + "Jared", + "Jari", + "Jarne", + "Jarno", + "Jaron", + "Jason", + "Jasper", + "Jay", + "Jayden", + "Jayson", + "Jean", + "Jens", + "Jeremias", + "Jeremie", + "Jeremy", + "Jermaine", + "Jerome", + "Jesper", + "Jesse", + "Jim", + "Jimmy", + "Joe", + "Joel", + "Joey", + "Johann", + "Johannes", + "John", + "Johnny", + "Jon", + "Jona", + "Jonah", + "Jonas", + "Jonathan", + "Jonte", + "Joost", + "Jordan", + "Joris", + "Joscha", + "Joschua", + "Josef", + "Joseph", + "Josh", + "Joshua", + "Josua", + "Juan", + "Julian", + "Julien", + "Julius", + "Juri", + "Justin", + "Justus", + "Kaan", + "Kai", + "Kalle", + "Karim", + "Karl", + "Karlo", + "Kay", + "Keanu", + "Kenan", + "Kenny", + "Keno", + "Kerem", + "Kerim", + "Kevin", + "Kian", + "Kilian", + "Kim", + "Kimi", + "Kjell", + "Klaas", + "Klemens", + "Konrad", + "Konstantin", + "Koray", + "Korbinian", + "Kurt", + "Lars", + "Lasse", + "Laurence", + "Laurens", + "Laurenz", + "Laurin", + "Lean", + "Leander", + "Leandro", + "Leif", + "Len", + "Lenn", + "Lennard", + "Lennart", + "Lennert", + "Lennie", + "Lennox", + "Lenny", + "Leo", + "Leon", + "Leonard", + "Leonardo", + "Leonhard", + "Leonidas", + "Leopold", + "Leroy", + "Levent", + "Levi", + "Levin", + "Lewin", + "Lewis", + "Liam", + "Lian", + "Lias", + "Lino", + "Linus", + "Lio", + "Lion", + "Lionel", + "Logan", + "Lorenz", + "Lorenzo", + "Loris", + "Louis", + "Luan", + "Luc", + "Luca", + "Lucas", + "Lucian", + "Lucien", + "Ludwig", + "Luis", + "Luiz", + "Luk", + "Luka", + "Lukas", + "Luke", + "Lutz", + "Maddox", + "Mads", + "Magnus", + "Maik", + "Maksim", + "Malik", + "Malte", + "Manuel", + "Marc", + "Marcel", + "Marco", + "Marcus", + "Marek", + "Marian", + "Mario", + "Marius", + "Mark", + "Marko", + "Markus", + "Marlo", + "Marlon", + "Marten", + "Martin", + "Marvin", + "Marwin", + "Mateo", + "Mathis", + "Matis", + "Mats", + "Matteo", + "Mattes", + "Matthias", + "Matthis", + "Matti", + "Mattis", + "Maurice", + "Max", + "Maxim", + "Maximilian", + "Mehmet", + "Meik", + "Melvin", + "Merlin", + "Mert", + "Michael", + "Michel", + "Mick", + "Miguel", + "Mika", + "Mikail", + "Mike", + "Milan", + "Milo", + "Mio", + "Mirac", + "Mirco", + "Mirko", + "Mohamed", + "Mohammad", + "Mohammed", + "Moritz", + "Morten", + "Muhammed", + "Murat", + "Mustafa", + "Nathan", + "Nathanael", + "Nelson", + "Neo", + "Nevio", + "Nick", + "Niclas", + "Nico", + "Nicolai", + "Nicolas", + "Niels", + "Nikita", + "Niklas", + "Niko", + "Nikolai", + "Nikolas", + "Nils", + "Nino", + "Noah", + "Noel", + "Norman", + "Odin", + "Oke", + "Ole", + "Oliver", + "Omar", + "Onur", + "Oscar", + "Oskar", + "Pascal", + "Patrice", + "Patrick", + "Paul", + "Peer", + "Pepe", + "Peter", + "Phil", + "Philip", + "Philipp", + "Pierre", + "Piet", + "Pit", + "Pius", + "Quentin", + "Quirin", + "Rafael", + "Raik", + "Ramon", + "Raphael", + "Rasmus", + "Raul", + "Rayan", + "René", + "Ricardo", + "Riccardo", + "Richard", + "Rick", + "Rico", + "Robert", + "Robin", + "Rocco", + "Roman", + "Romeo", + "Ron", + "Ruben", + "Ryan", + "Said", + "Salih", + "Sam", + "Sami", + "Sammy", + "Samuel", + "Sandro", + "Santino", + "Sascha", + "Sean", + "Sebastian", + "Selim", + "Semih", + "Shawn", + "Silas", + "Simeon", + "Simon", + "Sinan", + "Sky", + "Stefan", + "Steffen", + "Stephan", + "Steve", + "Steven", + "Sven", + "Sönke", + "Sören", + "Taha", + "Tamino", + "Tammo", + "Tarik", + "Tayler", + "Taylor", + "Teo", + "Theo", + "Theodor", + "Thies", + "Thilo", + "Thomas", + "Thorben", + "Thore", + "Thorge", + "Tiago", + "Til", + "Till", + "Tillmann", + "Tim", + "Timm", + "Timo", + "Timon", + "Timothy", + "Tino", + "Titus", + "Tizian", + "Tjark", + "Tobias", + "Tom", + "Tommy", + "Toni", + "Tony", + "Torben", + "Tore", + "Tristan", + "Tyler", + "Tyron", + "Umut", + "Valentin", + "Valentino", + "Veit", + "Victor", + "Viktor", + "Vin", + "Vincent", + "Vito", + "Vitus", + "Wilhelm", + "Willi", + "William", + "Willy", + "Xaver", + "Yannic", + "Yannick", + "Yannik", + "Yannis", + "Yasin", + "Youssef", + "Yunus", + "Yusuf", + "Yven", + "Yves", + "Ömer", + "Aaliyah", + "Abby", + "Abigail", + "Ada", + "Adelina", + "Adriana", + "Aileen", + "Aimee", + "Alana", + "Alea", + "Alena", + "Alessa", + "Alessia", + "Alexa", + "Alexandra", + "Alexia", + "Alexis", + "Aleyna", + "Alia", + "Alica", + "Alice", + "Alicia", + "Alina", + "Alisa", + "Alisha", + "Alissa", + "Aliya", + "Aliyah", + "Allegra", + "Alma", + "Alyssa", + "Amalia", + "Amanda", + "Amelia", + "Amelie", + "Amina", + "Amira", + "Amy", + "Ana", + "Anabel", + "Anastasia", + "Andrea", + "Angela", + "Angelina", + "Angelique", + "Anja", + "Ann", + "Anna", + "Annabel", + "Annabell", + "Annabelle", + "Annalena", + "Anne", + "Anneke", + "Annelie", + "Annemarie", + "Anni", + "Annie", + "Annika", + "Anny", + "Anouk", + "Antonia", + "Arda", + "Ariana", + "Ariane", + "Arwen", + "Ashley", + "Asya", + "Aurelia", + "Aurora", + "Ava", + "Ayleen", + "Aylin", + "Ayse", + "Azra", + "Betty", + "Bianca", + "Bianka", + "Caitlin", + "Cara", + "Carina", + "Carla", + "Carlotta", + "Carmen", + "Carolin", + "Carolina", + "Caroline", + "Cassandra", + "Catharina", + "Catrin", + "Cecile", + "Cecilia", + "Celia", + "Celina", + "Celine", + "Ceyda", + "Ceylin", + "Chantal", + "Charleen", + "Charlotta", + "Charlotte", + "Chayenne", + "Cheyenne", + "Chiara", + "Christin", + "Christina", + "Cindy", + "Claire", + "Clara", + "Clarissa", + "Colleen", + "Collien", + "Cora", + "Corinna", + "Cosima", + "Dana", + "Daniela", + "Daria", + "Darleen", + "Defne", + "Delia", + "Denise", + "Diana", + "Dilara", + "Dina", + "Dorothea", + "Ecrin", + "Eda", + "Eileen", + "Ela", + "Elaine", + "Elanur", + "Elea", + "Elena", + "Eleni", + "Eleonora", + "Eliana", + "Elif", + "Elina", + "Elisa", + "Elisabeth", + "Ella", + "Ellen", + "Elli", + "Elly", + "Elsa", + "Emelie", + "Emely", + "Emilia", + "Emilie", + "Emily", + "Emma", + "Emmely", + "Emmi", + "Emmy", + "Enie", + "Enna", + "Enya", + "Esma", + "Estelle", + "Esther", + "Eva", + "Evelin", + "Evelina", + "Eveline", + "Evelyn", + "Fabienne", + "Fatima", + "Fatma", + "Felicia", + "Felicitas", + "Felina", + "Femke", + "Fenja", + "Fine", + "Finia", + "Finja", + "Finnja", + "Fiona", + "Flora", + "Florentine", + "Francesca", + "Franka", + "Franziska", + "Frederike", + "Freya", + "Frida", + "Frieda", + "Friederike", + "Giada", + "Gina", + "Giulia", + "Giuliana", + "Greta", + "Hailey", + "Hana", + "Hanna", + "Hannah", + "Heidi", + "Helen", + "Helena", + "Helene", + "Helin", + "Henriette", + "Henrike", + "Hermine", + "Ida", + "Ilayda", + "Imke", + "Ina", + "Ines", + "Inga", + "Inka", + "Irem", + "Isa", + "Isabel", + "Isabell", + "Isabella", + "Isabelle", + "Ivonne", + "Jacqueline", + "Jamie", + "Jamila", + "Jana", + "Jane", + "Janin", + "Janina", + "Janine", + "Janna", + "Janne", + "Jara", + "Jasmin", + "Jasmina", + "Jasmine", + "Jella", + "Jenna", + "Jennifer", + "Jenny", + "Jessica", + "Jessy", + "Jette", + "Jil", + "Jill", + "Joana", + "Joanna", + "Joelina", + "Joeline", + "Joelle", + "Johanna", + "Joleen", + "Jolie", + "Jolien", + "Jolin", + "Jolina", + "Joline", + "Jona", + "Jonah", + "Jonna", + "Josefin", + "Josefine", + "Josephin", + "Josephine", + "Josie", + "Josy", + "Joy", + "Joyce", + "Judith", + "Judy", + "Jule", + "Julia", + "Juliana", + "Juliane", + "Julie", + "Julienne", + "Julika", + "Julina", + "Juna", + "Justine", + "Kaja", + "Karina", + "Karla", + "Karlotta", + "Karolina", + "Karoline", + "Kassandra", + "Katarina", + "Katharina", + "Kathrin", + "Katja", + "Katrin", + "Kaya", + "Kayra", + "Kiana", + "Kiara", + "Kim", + "Kimberley", + "Kimberly", + "Kira", + "Klara", + "Korinna", + "Kristin", + "Kyra", + "Laila", + "Lana", + "Lara", + "Larissa", + "Laura", + "Laureen", + "Lavinia", + "Lea", + "Leah", + "Leana", + "Leandra", + "Leann", + "Lee", + "Leila", + "Lena", + "Lene", + "Leni", + "Lenia", + "Lenja", + "Lenya", + "Leona", + "Leoni", + "Leonie", + "Leonora", + "Leticia", + "Letizia", + "Levke", + "Leyla", + "Lia", + "Liah", + "Liana", + "Lili", + "Lilia", + "Lilian", + "Liliana", + "Lilith", + "Lilli", + "Lillian", + "Lilly", + "Lily", + "Lina", + "Linda", + "Lindsay", + "Line", + "Linn", + "Linnea", + "Lisa", + "Lisann", + "Lisanne", + "Liv", + "Livia", + "Liz", + "Lola", + "Loreen", + "Lorena", + "Lotta", + "Lotte", + "Louisa", + "Louise", + "Luana", + "Luca", + "Lucia", + "Lucie", + "Lucienne", + "Lucy", + "Luisa", + "Luise", + "Luka", + "Luna", + "Luzie", + "Lya", + "Lydia", + "Lyn", + "Lynn", + "Madeleine", + "Madita", + "Madleen", + "Madlen", + "Magdalena", + "Maike", + "Mailin", + "Maira", + "Maja", + "Malena", + "Malia", + "Malin", + "Malina", + "Mandy", + "Mara", + "Marah", + "Mareike", + "Maren", + "Maria", + "Mariam", + "Marie", + "Marieke", + "Mariella", + "Marika", + "Marina", + "Marisa", + "Marissa", + "Marit", + "Marla", + "Marleen", + "Marlen", + "Marlena", + "Marlene", + "Marta", + "Martha", + "Mary", + "Maryam", + "Mathilda", + "Mathilde", + "Matilda", + "Maxi", + "Maxima", + "Maxine", + "Maya", + "Mayra", + "Medina", + "Medine", + "Meike", + "Melanie", + "Melek", + "Melike", + "Melina", + "Melinda", + "Melis", + "Melisa", + "Melissa", + "Merle", + "Merve", + "Meryem", + "Mette", + "Mia", + "Michaela", + "Michelle", + "Mieke", + "Mila", + "Milana", + "Milena", + "Milla", + "Mina", + "Mira", + "Miray", + "Miriam", + "Mirja", + "Mona", + "Monique", + "Nadine", + "Nadja", + "Naemi", + "Nancy", + "Naomi", + "Natalia", + "Natalie", + "Nathalie", + "Neele", + "Nela", + "Nele", + "Nelli", + "Nelly", + "Nia", + "Nicole", + "Nika", + "Nike", + "Nikita", + "Nila", + "Nina", + "Nisa", + "Noemi", + "Nora", + "Olivia", + "Patricia", + "Patrizia", + "Paula", + "Paulina", + "Pauline", + "Penelope", + "Philine", + "Phoebe", + "Pia", + "Rahel", + "Rania", + "Rebecca", + "Rebekka", + "Riana", + "Rieke", + "Rike", + "Romina", + "Romy", + "Ronja", + "Rosa", + "Rosalie", + "Ruby", + "Sabrina", + "Sahra", + "Sally", + "Salome", + "Samantha", + "Samia", + "Samira", + "Sandra", + "Sandy", + "Sanja", + "Saphira", + "Sara", + "Sarah", + "Saskia", + "Selin", + "Selina", + "Selma", + "Sena", + "Sidney", + "Sienna", + "Silja", + "Sina", + "Sinja", + "Smilla", + "Sofia", + "Sofie", + "Sonja", + "Sophia", + "Sophie", + "Soraya", + "Stefanie", + "Stella", + "Stephanie", + "Stina", + "Sude", + "Summer", + "Susanne", + "Svea", + "Svenja", + "Sydney", + "Tabea", + "Talea", + "Talia", + "Tamara", + "Tamia", + "Tamina", + "Tanja", + "Tara", + "Tarja", + "Teresa", + "Tessa", + "Thalea", + "Thalia", + "Thea", + "Theresa", + "Tia", + "Tina", + "Tomke", + "Tuana", + "Valentina", + "Valeria", + "Valerie", + "Vanessa", + "Vera", + "Veronika", + "Victoria", + "Viktoria", + "Viola", + "Vivian", + "Vivien", + "Vivienne", + "Wibke", + "Wiebke", + "Xenia", + "Yara", + "Yaren", + "Yasmin", + "Ylvi", + "Ylvie", + "Yvonne", + "Zara", + "Zehra", + "Zeynep", + "Zoe", + "Zoey", + "Zoé" +]; + +},{}],179:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.nobility_title_prefix = require("./nobility_title_prefix"); +name.name = require("./name"); + +},{"./first_name":178,"./last_name":180,"./name":181,"./nobility_title_prefix":182,"./prefix":183}],180:[function(require,module,exports){ +module["exports"] = [ + "Abel", + "Abicht", + "Abraham", + "Abramovic", + "Abt", + "Achilles", + "Achkinadze", + "Ackermann", + "Adam", + "Adams", + "Ade", + "Agostini", + "Ahlke", + "Ahrenberg", + "Ahrens", + "Aigner", + "Albert", + "Albrecht", + "Alexa", + "Alexander", + "Alizadeh", + "Allgeyer", + "Amann", + "Amberg", + "Anding", + "Anggreny", + "Apitz", + "Arendt", + "Arens", + "Arndt", + "Aryee", + "Aschenbroich", + "Assmus", + "Astafei", + "Auer", + "Axmann", + "Baarck", + "Bachmann", + "Badane", + "Bader", + "Baganz", + "Bahl", + "Bak", + "Balcer", + "Balck", + "Balkow", + "Balnuweit", + "Balzer", + "Banse", + "Barr", + "Bartels", + "Barth", + "Barylla", + "Baseda", + "Battke", + "Bauer", + "Bauermeister", + "Baumann", + "Baumeister", + "Bauschinger", + "Bauschke", + "Bayer", + "Beavogui", + "Beck", + "Beckel", + "Becker", + "Beckmann", + "Bedewitz", + "Beele", + "Beer", + "Beggerow", + "Beh", + "Behr", + "Behrenbruch", + "Belz", + "Bender", + "Benecke", + "Benner", + "Benninger", + "Benzing", + "Berends", + "Berger", + "Berner", + "Berning", + "Bertenbreiter", + "Best", + "Bethke", + "Betz", + "Beushausen", + "Beutelspacher", + "Beyer", + "Biba", + "Bichler", + "Bickel", + "Biedermann", + "Bieler", + "Bielert", + "Bienasch", + "Bienias", + "Biesenbach", + "Bigdeli", + "Birkemeyer", + "Bittner", + "Blank", + "Blaschek", + "Blassneck", + "Bloch", + "Blochwitz", + "Blockhaus", + "Blum", + "Blume", + "Bock", + "Bode", + "Bogdashin", + "Bogenrieder", + "Bohge", + "Bolm", + "Borgschulze", + "Bork", + "Bormann", + "Bornscheuer", + "Borrmann", + "Borsch", + "Boruschewski", + "Bos", + "Bosler", + "Bourrouag", + "Bouschen", + "Boxhammer", + "Boyde", + "Bozsik", + "Brand", + "Brandenburg", + "Brandis", + "Brandt", + "Brauer", + "Braun", + "Brehmer", + "Breitenstein", + "Bremer", + "Bremser", + "Brenner", + "Brettschneider", + "Breu", + "Breuer", + "Briesenick", + "Bringmann", + "Brinkmann", + "Brix", + "Broening", + "Brosch", + "Bruckmann", + "Bruder", + "Bruhns", + "Brunner", + "Bruns", + "Bräutigam", + "Brömme", + "Brüggmann", + "Buchholz", + "Buchrucker", + "Buder", + "Bultmann", + "Bunjes", + "Burger", + "Burghagen", + "Burkhard", + "Burkhardt", + "Burmeister", + "Busch", + "Buschbaum", + "Busemann", + "Buss", + "Busse", + "Bussmann", + "Byrd", + "Bäcker", + "Böhm", + "Bönisch", + "Börgeling", + "Börner", + "Böttner", + "Büchele", + "Bühler", + "Büker", + "Büngener", + "Bürger", + "Bürklein", + "Büscher", + "Büttner", + "Camara", + "Carlowitz", + "Carlsohn", + "Caspari", + "Caspers", + "Chapron", + "Christ", + "Cierpinski", + "Clarius", + "Cleem", + "Cleve", + "Co", + "Conrad", + "Cordes", + "Cornelsen", + "Cors", + "Cotthardt", + "Crews", + "Cronjäger", + "Crosskofp", + "Da", + "Dahm", + "Dahmen", + "Daimer", + "Damaske", + "Danneberg", + "Danner", + "Daub", + "Daubner", + "Daudrich", + "Dauer", + "Daum", + "Dauth", + "Dautzenberg", + "De", + "Decker", + "Deckert", + "Deerberg", + "Dehmel", + "Deja", + "Delonge", + "Demut", + "Dengler", + "Denner", + "Denzinger", + "Derr", + "Dertmann", + "Dethloff", + "Deuschle", + "Dieckmann", + "Diedrich", + "Diekmann", + "Dienel", + "Dies", + "Dietrich", + "Dietz", + "Dietzsch", + "Diezel", + "Dilla", + "Dingelstedt", + "Dippl", + "Dittmann", + "Dittmar", + "Dittmer", + "Dix", + "Dobbrunz", + "Dobler", + "Dohring", + "Dolch", + "Dold", + "Dombrowski", + "Donie", + "Doskoczynski", + "Dragu", + "Drechsler", + "Drees", + "Dreher", + "Dreier", + "Dreissigacker", + "Dressler", + "Drews", + "Duma", + "Dutkiewicz", + "Dyett", + "Dylus", + "Dächert", + "Döbel", + "Döring", + "Dörner", + "Dörre", + "Dück", + "Eberhard", + "Eberhardt", + "Ecker", + "Eckhardt", + "Edorh", + "Effler", + "Eggenmueller", + "Ehm", + "Ehmann", + "Ehrig", + "Eich", + "Eichmann", + "Eifert", + "Einert", + "Eisenlauer", + "Ekpo", + "Elbe", + "Eleyth", + "Elss", + "Emert", + "Emmelmann", + "Ender", + "Engel", + "Engelen", + "Engelmann", + "Eplinius", + "Erdmann", + "Erhardt", + "Erlei", + "Erm", + "Ernst", + "Ertl", + "Erwes", + "Esenwein", + "Esser", + "Evers", + "Everts", + "Ewald", + "Fahner", + "Faller", + "Falter", + "Farber", + "Fassbender", + "Faulhaber", + "Fehrig", + "Feld", + "Felke", + "Feller", + "Fenner", + "Fenske", + "Feuerbach", + "Fietz", + "Figl", + "Figura", + "Filipowski", + "Filsinger", + "Fincke", + "Fink", + "Finke", + "Fischer", + "Fitschen", + "Fleischer", + "Fleischmann", + "Floder", + "Florczak", + "Flore", + "Flottmann", + "Forkel", + "Forst", + "Frahmeke", + "Frank", + "Franke", + "Franta", + "Frantz", + "Franz", + "Franzis", + "Franzmann", + "Frauen", + "Frauendorf", + "Freigang", + "Freimann", + "Freimuth", + "Freisen", + "Frenzel", + "Frey", + "Fricke", + "Fried", + "Friedek", + "Friedenberg", + "Friedmann", + "Friedrich", + "Friess", + "Frisch", + "Frohn", + "Frosch", + "Fuchs", + "Fuhlbrügge", + "Fusenig", + "Fust", + "Förster", + "Gaba", + "Gabius", + "Gabler", + "Gadschiew", + "Gakstädter", + "Galander", + "Gamlin", + "Gamper", + "Gangnus", + "Ganzmann", + "Garatva", + "Gast", + "Gastel", + "Gatzka", + "Gauder", + "Gebhardt", + "Geese", + "Gehre", + "Gehrig", + "Gehring", + "Gehrke", + "Geiger", + "Geisler", + "Geissler", + "Gelling", + "Gens", + "Gerbennow", + "Gerdel", + "Gerhardt", + "Gerschler", + "Gerson", + "Gesell", + "Geyer", + "Ghirmai", + "Ghosh", + "Giehl", + "Gierisch", + "Giesa", + "Giesche", + "Gilde", + "Glatting", + "Goebel", + "Goedicke", + "Goldbeck", + "Goldfuss", + "Goldkamp", + "Goldkühle", + "Goller", + "Golling", + "Gollnow", + "Golomski", + "Gombert", + "Gotthardt", + "Gottschalk", + "Gotz", + "Goy", + "Gradzki", + "Graf", + "Grams", + "Grasse", + "Gratzky", + "Grau", + "Greb", + "Green", + "Greger", + "Greithanner", + "Greschner", + "Griem", + "Griese", + "Grimm", + "Gromisch", + "Gross", + "Grosser", + "Grossheim", + "Grosskopf", + "Grothaus", + "Grothkopp", + "Grotke", + "Grube", + "Gruber", + "Grundmann", + "Gruning", + "Gruszecki", + "Gröss", + "Grötzinger", + "Grün", + "Grüner", + "Gummelt", + "Gunkel", + "Gunther", + "Gutjahr", + "Gutowicz", + "Gutschank", + "Göbel", + "Göckeritz", + "Göhler", + "Görlich", + "Görmer", + "Götz", + "Götzelmann", + "Güldemeister", + "Günther", + "Günz", + "Gürbig", + "Haack", + "Haaf", + "Habel", + "Hache", + "Hackbusch", + "Hackelbusch", + "Hadfield", + "Hadwich", + "Haferkamp", + "Hahn", + "Hajek", + "Hallmann", + "Hamann", + "Hanenberger", + "Hannecker", + "Hanniske", + "Hansen", + "Hardy", + "Hargasser", + "Harms", + "Harnapp", + "Harter", + "Harting", + "Hartlieb", + "Hartmann", + "Hartwig", + "Hartz", + "Haschke", + "Hasler", + "Hasse", + "Hassfeld", + "Haug", + "Hauke", + "Haupt", + "Haverney", + "Heberstreit", + "Hechler", + "Hecht", + "Heck", + "Hedermann", + "Hehl", + "Heidelmann", + "Heidler", + "Heinemann", + "Heinig", + "Heinke", + "Heinrich", + "Heinze", + "Heiser", + "Heist", + "Hellmann", + "Helm", + "Helmke", + "Helpling", + "Hengmith", + "Henkel", + "Hennes", + "Henry", + "Hense", + "Hensel", + "Hentel", + "Hentschel", + "Hentschke", + "Hepperle", + "Herberger", + "Herbrand", + "Hering", + "Hermann", + "Hermecke", + "Herms", + "Herold", + "Herrmann", + "Herschmann", + "Hertel", + "Herweg", + "Herwig", + "Herzenberg", + "Hess", + "Hesse", + "Hessek", + "Hessler", + "Hetzler", + "Heuck", + "Heydemüller", + "Hiebl", + "Hildebrand", + "Hildenbrand", + "Hilgendorf", + "Hillard", + "Hiller", + "Hingsen", + "Hingst", + "Hinrichs", + "Hirsch", + "Hirschberg", + "Hirt", + "Hodea", + "Hoffman", + "Hoffmann", + "Hofmann", + "Hohenberger", + "Hohl", + "Hohn", + "Hohnheiser", + "Hold", + "Holdt", + "Holinski", + "Holl", + "Holtfreter", + "Holz", + "Holzdeppe", + "Holzner", + "Hommel", + "Honz", + "Hooss", + "Hoppe", + "Horak", + "Horn", + "Horna", + "Hornung", + "Hort", + "Howard", + "Huber", + "Huckestein", + "Hudak", + "Huebel", + "Hugo", + "Huhn", + "Hujo", + "Huke", + "Huls", + "Humbert", + "Huneke", + "Huth", + "Häber", + "Häfner", + "Höcke", + "Höft", + "Höhne", + "Hönig", + "Hördt", + "Hübenbecker", + "Hübl", + "Hübner", + "Hügel", + "Hüttcher", + "Hütter", + "Ibe", + "Ihly", + "Illing", + "Isak", + "Isekenmeier", + "Itt", + "Jacob", + "Jacobs", + "Jagusch", + "Jahn", + "Jahnke", + "Jakobs", + "Jakubczyk", + "Jambor", + "Jamrozy", + "Jander", + "Janich", + "Janke", + "Jansen", + "Jarets", + "Jaros", + "Jasinski", + "Jasper", + "Jegorov", + "Jellinghaus", + "Jeorga", + "Jerschabek", + "Jess", + "John", + "Jonas", + "Jossa", + "Jucken", + "Jung", + "Jungbluth", + "Jungton", + "Just", + "Jürgens", + "Kaczmarek", + "Kaesmacher", + "Kahl", + "Kahlert", + "Kahles", + "Kahlmeyer", + "Kaiser", + "Kalinowski", + "Kallabis", + "Kallensee", + "Kampf", + "Kampschulte", + "Kappe", + "Kappler", + "Karhoff", + "Karrass", + "Karst", + "Karsten", + "Karus", + "Kass", + "Kasten", + "Kastner", + "Katzinski", + "Kaufmann", + "Kaul", + "Kausemann", + "Kawohl", + "Kazmarek", + "Kedzierski", + "Keil", + "Keiner", + "Keller", + "Kelm", + "Kempe", + "Kemper", + "Kempter", + "Kerl", + "Kern", + "Kesselring", + "Kesselschläger", + "Kette", + "Kettenis", + "Keutel", + "Kick", + "Kiessling", + "Kinadeter", + "Kinzel", + "Kinzy", + "Kirch", + "Kirst", + "Kisabaka", + "Klaas", + "Klabuhn", + "Klapper", + "Klauder", + "Klaus", + "Kleeberg", + "Kleiber", + "Klein", + "Kleinert", + "Kleininger", + "Kleinmann", + "Kleinsteuber", + "Kleiss", + "Klemme", + "Klimczak", + "Klinger", + "Klink", + "Klopsch", + "Klose", + "Kloss", + "Kluge", + "Kluwe", + "Knabe", + "Kneifel", + "Knetsch", + "Knies", + "Knippel", + "Knobel", + "Knoblich", + "Knoll", + "Knorr", + "Knorscheidt", + "Knut", + "Kobs", + "Koch", + "Kochan", + "Kock", + "Koczulla", + "Koderisch", + "Koehl", + "Koehler", + "Koenig", + "Koester", + "Kofferschlager", + "Koha", + "Kohle", + "Kohlmann", + "Kohnle", + "Kohrt", + "Koj", + "Kolb", + "Koleiski", + "Kolokas", + "Komoll", + "Konieczny", + "Konig", + "Konow", + "Konya", + "Koob", + "Kopf", + "Kosenkow", + "Koster", + "Koszewski", + "Koubaa", + "Kovacs", + "Kowalick", + "Kowalinski", + "Kozakiewicz", + "Krabbe", + "Kraft", + "Kral", + "Kramer", + "Krauel", + "Kraus", + "Krause", + "Krauspe", + "Kreb", + "Krebs", + "Kreissig", + "Kresse", + "Kreutz", + "Krieger", + "Krippner", + "Krodinger", + "Krohn", + "Krol", + "Kron", + "Krueger", + "Krug", + "Kruger", + "Krull", + "Kruschinski", + "Krämer", + "Kröckert", + "Kröger", + "Krüger", + "Kubera", + "Kufahl", + "Kuhlee", + "Kuhnen", + "Kulimann", + "Kulma", + "Kumbernuss", + "Kummle", + "Kunz", + "Kupfer", + "Kupprion", + "Kuprion", + "Kurnicki", + "Kurrat", + "Kurschilgen", + "Kuschewitz", + "Kuschmann", + "Kuske", + "Kustermann", + "Kutscherauer", + "Kutzner", + "Kwadwo", + "Kähler", + "Käther", + "Köhler", + "Köhrbrück", + "Köhre", + "Kölotzei", + "König", + "Köpernick", + "Köseoglu", + "Kúhn", + "Kúhnert", + "Kühn", + "Kühnel", + "Kühnemund", + "Kühnert", + "Kühnke", + "Küsters", + "Küter", + "Laack", + "Lack", + "Ladewig", + "Lakomy", + "Lammert", + "Lamos", + "Landmann", + "Lang", + "Lange", + "Langfeld", + "Langhirt", + "Lanig", + "Lauckner", + "Lauinger", + "Laurén", + "Lausecker", + "Laux", + "Laws", + "Lax", + "Leberer", + "Lehmann", + "Lehner", + "Leibold", + "Leide", + "Leimbach", + "Leipold", + "Leist", + "Leiter", + "Leiteritz", + "Leitheim", + "Leiwesmeier", + "Lenfers", + "Lenk", + "Lenz", + "Lenzen", + "Leo", + "Lepthin", + "Lesch", + "Leschnik", + "Letzelter", + "Lewin", + "Lewke", + "Leyckes", + "Lg", + "Lichtenfeld", + "Lichtenhagen", + "Lichtl", + "Liebach", + "Liebe", + "Liebich", + "Liebold", + "Lieder", + "Lienshöft", + "Linden", + "Lindenberg", + "Lindenmayer", + "Lindner", + "Linke", + "Linnenbaum", + "Lippe", + "Lipske", + "Lipus", + "Lischka", + "Lobinger", + "Logsch", + "Lohmann", + "Lohre", + "Lohse", + "Lokar", + "Loogen", + "Lorenz", + "Losch", + "Loska", + "Lott", + "Loy", + "Lubina", + "Ludolf", + "Lufft", + "Lukoschek", + "Lutje", + "Lutz", + "Löser", + "Löwa", + "Lübke", + "Maak", + "Maczey", + "Madetzky", + "Madubuko", + "Mai", + "Maier", + "Maisch", + "Malek", + "Malkus", + "Mallmann", + "Malucha", + "Manns", + "Manz", + "Marahrens", + "Marchewski", + "Margis", + "Markowski", + "Marl", + "Marner", + "Marquart", + "Marschek", + "Martel", + "Marten", + "Martin", + "Marx", + "Marxen", + "Mathes", + "Mathies", + "Mathiszik", + "Matschke", + "Mattern", + "Matthes", + "Matula", + "Mau", + "Maurer", + "Mauroff", + "May", + "Maybach", + "Mayer", + "Mebold", + "Mehl", + "Mehlhorn", + "Mehlorn", + "Meier", + "Meisch", + "Meissner", + "Meloni", + "Melzer", + "Menga", + "Menne", + "Mensah", + "Mensing", + "Merkel", + "Merseburg", + "Mertens", + "Mesloh", + "Metzger", + "Metzner", + "Mewes", + "Meyer", + "Michallek", + "Michel", + "Mielke", + "Mikitenko", + "Milde", + "Minah", + "Mintzlaff", + "Mockenhaupt", + "Moede", + "Moedl", + "Moeller", + "Moguenara", + "Mohr", + "Mohrhard", + "Molitor", + "Moll", + "Moller", + "Molzan", + "Montag", + "Moormann", + "Mordhorst", + "Morgenstern", + "Morhelfer", + "Moritz", + "Moser", + "Motchebon", + "Motzenbbäcker", + "Mrugalla", + "Muckenthaler", + "Mues", + "Muller", + "Mulrain", + "Mächtig", + "Mäder", + "Möcks", + "Mögenburg", + "Möhsner", + "Möldner", + "Möllenbeck", + "Möller", + "Möllinger", + "Mörsch", + "Mühleis", + "Müller", + "Münch", + "Nabein", + "Nabow", + "Nagel", + "Nannen", + "Nastvogel", + "Nau", + "Naubert", + "Naumann", + "Ne", + "Neimke", + "Nerius", + "Neubauer", + "Neubert", + "Neuendorf", + "Neumair", + "Neumann", + "Neupert", + "Neurohr", + "Neuschwander", + "Newton", + "Ney", + "Nicolay", + "Niedermeier", + "Nieklauson", + "Niklaus", + "Nitzsche", + "Noack", + "Nodler", + "Nolte", + "Normann", + "Norris", + "Northoff", + "Nowak", + "Nussbeck", + "Nwachukwu", + "Nytra", + "Nöh", + "Oberem", + "Obergföll", + "Obermaier", + "Ochs", + "Oeser", + "Olbrich", + "Onnen", + "Ophey", + "Oppong", + "Orth", + "Orthmann", + "Oschkenat", + "Osei", + "Osenberg", + "Ostendarp", + "Ostwald", + "Otte", + "Otto", + "Paesler", + "Pajonk", + "Pallentin", + "Panzig", + "Paschke", + "Patzwahl", + "Paukner", + "Peselman", + "Peter", + "Peters", + "Petzold", + "Pfeiffer", + "Pfennig", + "Pfersich", + "Pfingsten", + "Pflieger", + "Pflügner", + "Philipp", + "Pichlmaier", + "Piesker", + "Pietsch", + "Pingpank", + "Pinnock", + "Pippig", + "Pitschugin", + "Plank", + "Plass", + "Platzer", + "Plauk", + "Plautz", + "Pletsch", + "Plotzitzka", + "Poehn", + "Poeschl", + "Pogorzelski", + "Pohl", + "Pohland", + "Pohle", + "Polifka", + "Polizzi", + "Pollmächer", + "Pomp", + "Ponitzsch", + "Porsche", + "Porth", + "Poschmann", + "Poser", + "Pottel", + "Prah", + "Prange", + "Prediger", + "Pressler", + "Preuk", + "Preuss", + "Prey", + "Priemer", + "Proske", + "Pusch", + "Pöche", + "Pöge", + "Raabe", + "Rabenstein", + "Rach", + "Radtke", + "Rahn", + "Ranftl", + "Rangen", + "Ranz", + "Rapp", + "Rath", + "Rau", + "Raubuch", + "Raukuc", + "Rautenkranz", + "Rehwagen", + "Reiber", + "Reichardt", + "Reichel", + "Reichling", + "Reif", + "Reifenrath", + "Reimann", + "Reinberg", + "Reinelt", + "Reinhardt", + "Reinke", + "Reitze", + "Renk", + "Rentz", + "Renz", + "Reppin", + "Restle", + "Restorff", + "Retzke", + "Reuber", + "Reumann", + "Reus", + "Reuss", + "Reusse", + "Rheder", + "Rhoden", + "Richards", + "Richter", + "Riedel", + "Riediger", + "Rieger", + "Riekmann", + "Riepl", + "Riermeier", + "Riester", + "Riethmüller", + "Rietmüller", + "Rietscher", + "Ringel", + "Ringer", + "Rink", + "Ripken", + "Ritosek", + "Ritschel", + "Ritter", + "Rittweg", + "Ritz", + "Roba", + "Rockmeier", + "Rodehau", + "Rodowski", + "Roecker", + "Roggatz", + "Rohländer", + "Rohrer", + "Rokossa", + "Roleder", + "Roloff", + "Roos", + "Rosbach", + "Roschinsky", + "Rose", + "Rosenauer", + "Rosenbauer", + "Rosenthal", + "Rosksch", + "Rossberg", + "Rossler", + "Roth", + "Rother", + "Ruch", + "Ruckdeschel", + "Rumpf", + "Rupprecht", + "Ruth", + "Ryjikh", + "Ryzih", + "Rädler", + "Räntsch", + "Rödiger", + "Röse", + "Röttger", + "Rücker", + "Rüdiger", + "Rüter", + "Sachse", + "Sack", + "Saflanis", + "Sagafe", + "Sagonas", + "Sahner", + "Saile", + "Sailer", + "Salow", + "Salzer", + "Salzmann", + "Sammert", + "Sander", + "Sarvari", + "Sattelmaier", + "Sauer", + "Sauerland", + "Saumweber", + "Savoia", + "Scc", + "Schacht", + "Schaefer", + "Schaffarzik", + "Schahbasian", + "Scharf", + "Schedler", + "Scheer", + "Schelk", + "Schellenbeck", + "Schembera", + "Schenk", + "Scherbarth", + "Scherer", + "Schersing", + "Scherz", + "Scheurer", + "Scheuring", + "Scheytt", + "Schielke", + "Schieskow", + "Schildhauer", + "Schilling", + "Schima", + "Schimmer", + "Schindzielorz", + "Schirmer", + "Schirrmeister", + "Schlachter", + "Schlangen", + "Schlawitz", + "Schlechtweg", + "Schley", + "Schlicht", + "Schlitzer", + "Schmalzle", + "Schmid", + "Schmidt", + "Schmidtchen", + "Schmitt", + "Schmitz", + "Schmuhl", + "Schneider", + "Schnelting", + "Schnieder", + "Schniedermeier", + "Schnürer", + "Schoberg", + "Scholz", + "Schonberg", + "Schondelmaier", + "Schorr", + "Schott", + "Schottmann", + "Schouren", + "Schrader", + "Schramm", + "Schreck", + "Schreiber", + "Schreiner", + "Schreiter", + "Schroder", + "Schröder", + "Schuermann", + "Schuff", + "Schuhaj", + "Schuldt", + "Schult", + "Schulte", + "Schultz", + "Schultze", + "Schulz", + "Schulze", + "Schumacher", + "Schumann", + "Schupp", + "Schuri", + "Schuster", + "Schwab", + "Schwalm", + "Schwanbeck", + "Schwandke", + "Schwanitz", + "Schwarthoff", + "Schwartz", + "Schwarz", + "Schwarzer", + "Schwarzkopf", + "Schwarzmeier", + "Schwatlo", + "Schweisfurth", + "Schwennen", + "Schwerdtner", + "Schwidde", + "Schwirkschlies", + "Schwuchow", + "Schäfer", + "Schäffel", + "Schäffer", + "Schäning", + "Schöckel", + "Schönball", + "Schönbeck", + "Schönberg", + "Schönebeck", + "Schönenberger", + "Schönfeld", + "Schönherr", + "Schönlebe", + "Schötz", + "Schüler", + "Schüppel", + "Schütz", + "Schütze", + "Seeger", + "Seelig", + "Sehls", + "Seibold", + "Seidel", + "Seiders", + "Seigel", + "Seiler", + "Seitz", + "Semisch", + "Senkel", + "Sewald", + "Siebel", + "Siebert", + "Siegling", + "Sielemann", + "Siemon", + "Siener", + "Sievers", + "Siewert", + "Sihler", + "Sillah", + "Simon", + "Sinnhuber", + "Sischka", + "Skibicki", + "Sladek", + "Slotta", + "Smieja", + "Soboll", + "Sokolowski", + "Soller", + "Sollner", + "Sommer", + "Somssich", + "Sonn", + "Sonnabend", + "Spahn", + "Spank", + "Spelmeyer", + "Spiegelburg", + "Spielvogel", + "Spinner", + "Spitzmüller", + "Splinter", + "Sporrer", + "Sprenger", + "Spöttel", + "Stahl", + "Stang", + "Stanger", + "Stauss", + "Steding", + "Steffen", + "Steffny", + "Steidl", + "Steigauf", + "Stein", + "Steinecke", + "Steinert", + "Steinkamp", + "Steinmetz", + "Stelkens", + "Stengel", + "Stengl", + "Stenzel", + "Stepanov", + "Stephan", + "Stern", + "Steuk", + "Stief", + "Stifel", + "Stoll", + "Stolle", + "Stolz", + "Storl", + "Storp", + "Stoutjesdijk", + "Stratmann", + "Straub", + "Strausa", + "Streck", + "Streese", + "Strege", + "Streit", + "Streller", + "Strieder", + "Striezel", + "Strogies", + "Strohschank", + "Strunz", + "Strutz", + "Stube", + "Stöckert", + "Stöppler", + "Stöwer", + "Stürmer", + "Suffa", + "Sujew", + "Sussmann", + "Suthe", + "Sutschet", + "Swillims", + "Szendrei", + "Sören", + "Sürth", + "Tafelmeier", + "Tang", + "Tasche", + "Taufratshofer", + "Tegethof", + "Teichmann", + "Tepper", + "Terheiden", + "Terlecki", + "Teufel", + "Theele", + "Thieke", + "Thimm", + "Thiomas", + "Thomas", + "Thriene", + "Thränhardt", + "Thust", + "Thyssen", + "Thöne", + "Tidow", + "Tiedtke", + "Tietze", + "Tilgner", + "Tillack", + "Timmermann", + "Tischler", + "Tischmann", + "Tittman", + "Tivontschik", + "Tonat", + "Tonn", + "Trampeli", + "Trauth", + "Trautmann", + "Travan", + "Treff", + "Tremmel", + "Tress", + "Tsamonikian", + "Tschiers", + "Tschirch", + "Tuch", + "Tucholke", + "Tudow", + "Tuschmo", + "Tächl", + "Többen", + "Töpfer", + "Uhlemann", + "Uhlig", + "Uhrig", + "Uibel", + "Uliczka", + "Ullmann", + "Ullrich", + "Umbach", + "Umlauft", + "Umminger", + "Unger", + "Unterpaintner", + "Urban", + "Urbaniak", + "Urbansky", + "Urhig", + "Vahlensieck", + "Van", + "Vangermain", + "Vater", + "Venghaus", + "Verniest", + "Verzi", + "Vey", + "Viellehner", + "Vieweg", + "Voelkel", + "Vogel", + "Vogelgsang", + "Vogt", + "Voigt", + "Vokuhl", + "Volk", + "Volker", + "Volkmann", + "Von", + "Vona", + "Vontein", + "Wachenbrunner", + "Wachtel", + "Wagner", + "Waibel", + "Wakan", + "Waldmann", + "Wallner", + "Wallstab", + "Walter", + "Walther", + "Walton", + "Walz", + "Wanner", + "Wartenberg", + "Waschbüsch", + "Wassilew", + "Wassiluk", + "Weber", + "Wehrsen", + "Weidlich", + "Weidner", + "Weigel", + "Weight", + "Weiler", + "Weimer", + "Weis", + "Weiss", + "Weller", + "Welsch", + "Welz", + "Welzel", + "Weniger", + "Wenk", + "Werle", + "Werner", + "Werrmann", + "Wessel", + "Wessinghage", + "Weyel", + "Wezel", + "Wichmann", + "Wickert", + "Wiebe", + "Wiechmann", + "Wiegelmann", + "Wierig", + "Wiese", + "Wieser", + "Wilhelm", + "Wilky", + "Will", + "Willwacher", + "Wilts", + "Wimmer", + "Winkelmann", + "Winkler", + "Winter", + "Wischek", + "Wischer", + "Wissing", + "Wittich", + "Wittl", + "Wolf", + "Wolfarth", + "Wolff", + "Wollenberg", + "Wollmann", + "Woytkowska", + "Wujak", + "Wurm", + "Wyludda", + "Wölpert", + "Wöschler", + "Wühn", + "Wünsche", + "Zach", + "Zaczkiewicz", + "Zahn", + "Zaituc", + "Zandt", + "Zanner", + "Zapletal", + "Zauber", + "Zeidler", + "Zekl", + "Zender", + "Zeuch", + "Zeyen", + "Zeyhle", + "Ziegler", + "Zimanyi", + "Zimmer", + "Zimmermann", + "Zinser", + "Zintl", + "Zipp", + "Zipse", + "Zschunke", + "Zuber", + "Zwiener", + "Zümsande", + "Östringer", + "Überacker" +]; + +},{}],181:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name}", + "#{first_name} #{nobility_title_prefix} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}" +]; + +},{}],182:[function(require,module,exports){ +module["exports"] = [ + "zu", + "von", + "vom", + "von der" +]; + +},{}],183:[function(require,module,exports){ +module["exports"] = [ + "Hr.", + "Fr.", + "Dr.", + "Prof. Dr." +]; + +},{}],184:[function(require,module,exports){ +module["exports"] = [ + "(0###) #########", + "(0####) #######", + "+49-###-#######", + "+49-####-########" +]; + +},{}],185:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":184,"dup":108}],186:[function(require,module,exports){ +arguments[4][152][0].apply(exports,arguments) +},{"dup":152}],187:[function(require,module,exports){ +arguments[4][110][0].apply(exports,arguments) +},{"dup":110}],188:[function(require,module,exports){ +module["exports"] = [ + "Aigen im Mühlkreis", + "Allerheiligen bei Wildon", + "Altenfelden", + "Arriach", + "Axams", + "Baumgartenberg", + "Bergern im Dunkelsteinerwald", + "Berndorf bei Salzburg", + "Bregenz", + "Breitenbach am Inn", + "Deutsch-Wagram", + "Dienten am Hochkönig", + "Dietach", + "Dornbirn", + "Dürnkrut", + "Eben im Pongau", + "Ebenthal in Kärnten", + "Eichgraben", + "Eisenstadt", + "Ellmau", + "Feistritz am Wechsel", + "Finkenberg", + "Fiss", + "Frantschach-St. Gertraud", + "Fritzens", + "Gams bei Hieflau", + "Geiersberg", + "Graz", + "Großhöflein", + "Gößnitz", + "Hartl", + "Hausleiten", + "Herzogenburg", + "Hinterhornbach", + "Hochwolkersdorf", + "Ilz", + "Ilztal", + "Innerbraz", + "Innsbruck", + "Itter", + "Jagerberg", + "Jeging", + "Johnsbach", + "Johnsdorf-Brunn", + "Jungholz", + "Kirchdorf am Inn", + "Klagenfurt", + "Kottes-Purk", + "Krumau am Kamp", + "Krumbach", + "Lavamünd", + "Lech", + "Linz", + "Ludesch", + "Lödersdorf", + "Marbach an der Donau", + "Mattsee", + "Mautern an der Donau", + "Mauterndorf", + "Mitterbach am Erlaufsee", + "Neudorf bei Passail", + "Neudorf bei Staatz", + "Neukirchen an der Enknach", + "Neustift an der Lafnitz", + "Niederleis", + "Oberndorf in Tirol", + "Oberstorcha", + "Oberwaltersdorf", + "Oed-Oehling", + "Ort im Innkreis", + "Pilgersdorf", + "Pitschgau", + "Pollham", + "Preitenegg", + "Purbach am Neusiedler See", + "Rabenwald", + "Raiding", + "Rastenfeld", + "Ratten", + "Rettenegg", + "Salzburg", + "Sankt Johann im Saggautal", + "St. Peter am Kammersberg", + "St. Pölten", + "St. Veit an der Glan", + "Taxenbach", + "Tragwein", + "Trebesing", + "Trieben", + "Turnau", + "Ungerdorf", + "Unterauersbach", + "Unterstinkenbrunn", + "Untertilliach", + "Uttendorf", + "Vals", + "Velden am Wörther See", + "Viehhofen", + "Villach", + "Vitis", + "Waidhofen an der Thaya", + "Waldkirchen am Wesen", + "Weißkirchen an der Traun", + "Wien", + "Wimpassing im Schwarzatale", + "Ybbs an der Donau", + "Ybbsitz", + "Yspertal", + "Zeillern", + "Zell am Pettenfirst", + "Zell an der Pram", + "Zerlach", + "Zwölfaxing", + "Öblarn", + "Übelbach", + "Überackern", + "Übersaxen", + "Übersbach" +]; + +},{}],189:[function(require,module,exports){ +arguments[4][156][0].apply(exports,arguments) +},{"dup":156}],190:[function(require,module,exports){ +module["exports"] = [ + "Österreich" +]; + +},{}],191:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.country = require("./country"); +address.street_root = require("./street_root"); +address.building_number = require("./building_number"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":186,"./city":187,"./city_name":188,"./country":189,"./default_country":190,"./postcode":192,"./secondary_address":193,"./state":194,"./state_abbr":195,"./street_address":196,"./street_name":197,"./street_root":198}],192:[function(require,module,exports){ +module["exports"] = [ + "####" +]; + +},{}],193:[function(require,module,exports){ +arguments[4][160][0].apply(exports,arguments) +},{"dup":160}],194:[function(require,module,exports){ +module["exports"] = [ + "Burgenland", + "Kärnten", + "Niederösterreich", + "Oberösterreich", + "Salzburg", + "Steiermark", + "Tirol", + "Vorarlberg", + "Wien" +]; + +},{}],195:[function(require,module,exports){ +module["exports"] = [ + "Bgld.", + "Ktn.", + "NÖ", + "OÖ", + "Sbg.", + "Stmk.", + "T", + "Vbg.", + "W" +]; + +},{}],196:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],197:[function(require,module,exports){ +arguments[4][164][0].apply(exports,arguments) +},{"dup":164}],198:[function(require,module,exports){ +module["exports"] = [ + "Ahorn", + "Ahorngasse (St. Andrä)", + "Alleestraße (Poysbrunn)", + "Alpenlandstraße", + "Alte Poststraße", + "Alte Ufergasse", + "Am Kronawett (Hagenbrunn)", + "Am Mühlwasser", + "Am Rebenhang", + "Am Sternweg", + "Anton Wildgans-Straße", + "Auer-von-Welsbach-Weg", + "Auf der Stift", + "Aufeldgasse", + "Bahngasse", + "Bahnhofstraße", + "Bahnstraße (Gerhaus)", + "Basteigasse", + "Berggasse", + "Bergstraße", + "Birkenweg", + "Blasiussteig", + "Blattur", + "Bruderhofgasse", + "Brunnelligasse", + "Bühelweg", + "Darnautgasse", + "Donaugasse", + "Dorfplatz (Haselbach)", + "Dr.-Oberreiter-Straße", + "Dr.Karl Holoubek-Str.", + "Drautal Bundesstraße", + "Dürnrohrer Straße", + "Ebenthalerstraße", + "Eckgrabenweg", + "Erlenstraße", + "Erlenweg", + "Eschenweg", + "Etrichgasse", + "Fassergasse", + "Feichteggerwiese", + "Feld-Weg", + "Feldgasse", + "Feldstapfe", + "Fischpointweg", + "Flachbergstraße", + "Flurweg", + "Franz Schubert-Gasse", + "Franz-Schneeweiß-Weg", + "Franz-von-Assisi-Straße", + "Fritz-Pregl-Straße", + "Fuchsgrubenweg", + "Födlerweg", + "Föhrenweg", + "Fünfhaus (Paasdorf)", + "Gabelsbergerstraße", + "Gartenstraße", + "Geigen", + "Geigergasse", + "Gemeindeaugasse", + "Gemeindeplatz", + "Georg-Aichinger-Straße", + "Glanfeldbachweg", + "Graben (Burgauberg)", + "Grub", + "Gröretgasse", + "Grünbach", + "Gösting", + "Hainschwang", + "Hans-Mauracher-Straße", + "Hart", + "Teichstraße", + "Hauptplatz", + "Hauptstraße", + "Heideweg", + "Heinrich Landauer Gasse", + "Helenengasse", + "Hermann von Gilmweg", + "Hermann-Löns-Gasse", + "Herminengasse", + "Hernstorferstraße", + "Hirsdorf", + "Hochfeistritz", + "Hochhaus Neue Donau", + "Hof", + "Hussovits Gasse", + "Höggen", + "Hütten", + "Janzgasse", + "Jochriemgutstraße", + "Johann-Strauß-Gasse", + "Julius-Raab-Straße", + "Kahlenberger Straße", + "Karl Kraft-Straße", + "Kegelprielstraße", + "Keltenberg-Eponaweg", + "Kennedybrücke", + "Kerpelystraße", + "Kindergartenstraße", + "Kinderheimgasse", + "Kirchenplatz", + "Kirchweg", + "Klagenfurter Straße", + "Klamm", + "Kleinbaumgarten", + "Klingergasse", + "Koloniestraße", + "Konrad-Duden-Gasse", + "Krankenhausstraße", + "Kubinstraße", + "Köhldorfergasse", + "Lackenweg", + "Lange Mekotte", + "Leifling", + "Leopold Frank-Straße (Pellendorf)", + "Lerchengasse (Pirka)", + "Lichtensternsiedlung V", + "Lindenhofstraße", + "Lindenweg", + "Luegstraße", + "Maierhof", + "Malerweg", + "Mitterweg", + "Mittlere Hauptstraße", + "Moosbachgasse", + "Morettigasse", + "Musikpavillon Riezlern", + "Mühlboden", + "Mühle", + "Mühlenweg", + "Neustiftgasse", + "Niederegg", + "Niedergams", + "Nordwestbahnbrücke", + "Oberbödenalm", + "Obere Berggasse", + "Oedt", + "Am Färberberg", + "Ottogasse", + "Paul Peters-Gasse", + "Perspektivstraße", + "Poppichl", + "Privatweg", + "Prixgasse", + "Pyhra", + "Radetzkystraße", + "Raiden", + "Reichensteinstraße", + "Reitbauernstraße", + "Reiterweg", + "Reitschulgasse", + "Ringweg", + "Rupertistraße", + "Römerstraße", + "Römerweg", + "Sackgasse", + "Schaunbergerstraße", + "Schloßweg", + "Schulgasse (Langeck)", + "Schönholdsiedlung", + "Seeblick", + "Seestraße", + "Semriacherstraße", + "Simling", + "Sipbachzeller Straße", + "Sonnenweg", + "Spargelfeldgasse", + "Spiesmayrweg", + "Sportplatzstraße", + "St.Ulrich", + "Steilmannstraße", + "Steingrüneredt", + "Strassfeld", + "Straßerau", + "Stöpflweg", + "Stüra", + "Taferngasse", + "Tennweg", + "Thomas Koschat-Gasse", + "Tiroler Straße", + "Torrogasse", + "Uferstraße (Schwarzau am Steinfeld)", + "Unterdörfl", + "Unterer Sonnrainweg", + "Verwaltersiedlung", + "Waldhang", + "Wasen", + "Weidenstraße", + "Weiherweg", + "Wettsteingasse", + "Wiener Straße", + "Windisch", + "Zebragasse", + "Zellerstraße", + "Ziehrerstraße", + "Zulechnerweg", + "Zwergjoch", + "Ötzbruck" +]; + +},{}],199:[function(require,module,exports){ +module["exports"] = [ + "+43-6##-#######", + "06##-########", + "+436#########", + "06##########" +]; + +},{}],200:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":199,"dup":167}],201:[function(require,module,exports){ +arguments[4][168][0].apply(exports,arguments) +},{"./legal_form":202,"./name":203,"./suffix":204,"dup":168}],202:[function(require,module,exports){ +arguments[4][169][0].apply(exports,arguments) +},{"dup":169}],203:[function(require,module,exports){ +arguments[4][170][0].apply(exports,arguments) +},{"dup":170}],204:[function(require,module,exports){ +arguments[4][169][0].apply(exports,arguments) +},{"dup":169}],205:[function(require,module,exports){ +var de_AT = {}; +module['exports'] = de_AT; +de_AT.title = "German (Austria)"; +de_AT.address = require("./address"); +de_AT.company = require("./company"); +de_AT.internet = require("./internet"); +de_AT.name = require("./name"); +de_AT.phone_number = require("./phone_number"); +de_AT.cell_phone = require("./cell_phone"); + +},{"./address":191,"./cell_phone":200,"./company":201,"./internet":208,"./name":210,"./phone_number":216}],206:[function(require,module,exports){ +module["exports"] = [ + "com", + "info", + "name", + "net", + "org", + "de", + "ch", + "at" +]; + +},{}],207:[function(require,module,exports){ +arguments[4][174][0].apply(exports,arguments) +},{"dup":174}],208:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":206,"./free_email":207,"dup":98}],209:[function(require,module,exports){ +arguments[4][178][0].apply(exports,arguments) +},{"dup":178}],210:[function(require,module,exports){ +arguments[4][179][0].apply(exports,arguments) +},{"./first_name":209,"./last_name":211,"./name":212,"./nobility_title_prefix":213,"./prefix":214,"dup":179}],211:[function(require,module,exports){ +arguments[4][180][0].apply(exports,arguments) +},{"dup":180}],212:[function(require,module,exports){ +arguments[4][181][0].apply(exports,arguments) +},{"dup":181}],213:[function(require,module,exports){ +arguments[4][182][0].apply(exports,arguments) +},{"dup":182}],214:[function(require,module,exports){ +module["exports"] = [ + "Dr.", + "Prof. Dr." +]; + +},{}],215:[function(require,module,exports){ +module["exports"] = [ + "01 #######", + "01#######", + "+43-1-#######", + "+431#######", + "0#### ####", + "0#########", + "+43-####-####", + "+43 ########" +]; + +},{}],216:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":215,"dup":108}],217:[function(require,module,exports){ +module["exports"] = [ + "CH", + "CH", + "CH", + "DE", + "AT", + "US", + "LI", + "US", + "HK", + "VN" +]; + +},{}],218:[function(require,module,exports){ +module["exports"] = [ + "Schweiz" +]; + +},{}],219:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.country_code = require("./country_code"); +address.postcode = require("./postcode"); +address.default_country = require("./default_country"); + +},{"./country_code":217,"./default_country":218,"./postcode":220}],220:[function(require,module,exports){ +module["exports"] = [ + "1###", + "2###", + "3###", + "4###", + "5###", + "6###", + "7###", + "8###", + "9###" +]; + +},{}],221:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.name = require("./name"); + +},{"./name":222,"./suffix":223}],222:[function(require,module,exports){ +arguments[4][170][0].apply(exports,arguments) +},{"dup":170}],223:[function(require,module,exports){ +module["exports"] = [ + "AG", + "GmbH", + "und Söhne", + "und Partner", + "& Co.", + "Gruppe", + "LLC", + "Inc." +]; + +},{}],224:[function(require,module,exports){ +var de_CH = {}; +module['exports'] = de_CH; +de_CH.title = "German (Switzerland)"; +de_CH.address = require("./address"); +de_CH.company = require("./company"); +de_CH.internet = require("./internet"); +de_CH.name = require("./name"); +de_CH.phone_number = require("./phone_number"); + +},{"./address":219,"./company":221,"./internet":226,"./name":228,"./phone_number":233}],225:[function(require,module,exports){ +module["exports"] = [ + "com", + "net", + "biz", + "ch", + "de", + "li", + "at", + "ch", + "ch" +]; + +},{}],226:[function(require,module,exports){ +var internet = {}; +module['exports'] = internet; +internet.domain_suffix = require("./domain_suffix"); + +},{"./domain_suffix":225}],227:[function(require,module,exports){ +module["exports"] = [ + "Adolf", + "Adrian", + "Agnes", + "Alain", + "Albert", + "Alberto", + "Aldo", + "Alex", + "Alexander", + "Alexandre", + "Alfons", + "Alfred", + "Alice", + "Alois", + "André", + "Andrea", + "Andreas", + "Angela", + "Angelo", + "Anita", + "Anna", + "Anne", + "Anne-Marie", + "Annemarie", + "Antoine", + "Anton", + "Antonio", + "Armin", + "Arnold", + "Arthur", + "Astrid", + "Barbara", + "Beat", + "Beatrice", + "Beatrix", + "Bernadette", + "Bernard", + "Bernhard", + "Bettina", + "Brigitta", + "Brigitte", + "Bruno", + "Carlo", + "Carmen", + "Caroline", + "Catherine", + "Chantal", + "Charles", + "Charlotte", + "Christa", + "Christian", + "Christiane", + "Christina", + "Christine", + "Christoph", + "Christophe", + "Claire", + "Claude", + "Claudia", + "Claudine", + "Claudio", + "Corinne", + "Cornelia", + "Daniel", + "Daniela", + "Daniele", + "Danielle", + "David", + "Denis", + "Denise", + "Didier", + "Dieter", + "Dominik", + "Dominique", + "Dora", + "Doris", + "Edgar", + "Edith", + "Eduard", + "Edwin", + "Eliane", + "Elisabeth", + "Elsa", + "Elsbeth", + "Emil", + "Enrico", + "Eric", + "Erica", + "Erich", + "Erika", + "Ernst", + "Erwin", + "Esther", + "Eugen", + "Eva", + "Eveline", + "Evelyne", + "Fabienne", + "Felix", + "Ferdinand", + "Florence", + "Francesco", + "Francis", + "Franco", + "François", + "Françoise", + "Frank", + "Franz", + "Franziska", + "Frédéric", + "Fredy", + "Fridolin", + "Friedrich", + "Fritz", + "Gabriel", + "Gabriela", + "Gabrielle", + "Georg", + "Georges", + "Gérald", + "Gérard", + "Gerhard", + "Gertrud", + "Gianni", + "Gilbert", + "Giorgio", + "Giovanni", + "Gisela", + "Giuseppe", + "Gottfried", + "Guido", + "Guy", + "Hanna", + "Hans", + "Hans-Peter", + "Hans-Rudolf", + "Hans-Ulrich", + "Hansjörg", + "Hanspeter", + "Hansruedi", + "Hansueli", + "Harry", + "Heidi", + "Heinrich", + "Heinz", + "Helen", + "Helena", + "Helene", + "Helmut", + "Henri", + "Herbert", + "Hermann", + "Hildegard", + "Hubert", + "Hugo", + "Ingrid", + "Irene", + "Iris", + "Isabelle", + "Jacqueline", + "Jacques", + "Jakob", + "Jan", + "Janine", + "Jean", + "Jean-Claude", + "Jean-Daniel", + "Jean-François", + "Jean-Jacques", + "Jean-Louis", + "Jean-Luc", + "Jean-Marc", + "Jean-Marie", + "Jean-Paul", + "Jean-Pierre", + "Johann", + "Johanna", + "Johannes", + "John", + "Jolanda", + "Jörg", + "Josef", + "Joseph", + "Josette", + "Josiane", + "Judith", + "Julia", + "Jürg", + "Karin", + "Karl", + "Katharina", + "Klaus", + "Konrad", + "Kurt", + "Laura", + "Laurence", + "Laurent", + "Leo", + "Liliane", + "Liselotte", + "Louis", + "Luca", + "Luigi", + "Lukas", + "Lydia", + "Madeleine", + "Maja", + "Manfred", + "Manuel", + "Manuela", + "Marc", + "Marcel", + "Marco", + "Margrit", + "Margrith", + "Maria", + "Marianne", + "Mario", + "Marion", + "Markus", + "Marlène", + "Marlies", + "Marlis", + "Martha", + "Martin", + "Martina", + "Martine", + "Massimo", + "Matthias", + "Maurice", + "Max", + "Maya", + "Michael", + "Michel", + "Michele", + "Micheline", + "Monica", + "Monika", + "Monique", + "Myriam", + "Nadia", + "Nadja", + "Nathalie", + "Nelly", + "Nicolas", + "Nicole", + "Niklaus", + "Norbert", + "Olivier", + "Oskar", + "Otto", + "Paola", + "Paolo", + "Pascal", + "Patricia", + "Patrick", + "Paul", + "Peter", + "Petra", + "Philipp", + "Philippe", + "Pia", + "Pierre", + "Pierre-Alain", + "Pierre-André", + "Pius", + "Priska", + "Rainer", + "Raymond", + "Regina", + "Regula", + "Reinhard", + "Remo", + "Renata", + "Renate", + "Renato", + "Rene", + "René", + "Reto", + "Richard", + "Rita", + "Robert", + "Roberto", + "Roger", + "Roland", + "Rolf", + "Roman", + "Rosa", + "Rosemarie", + "Rosmarie", + "Rudolf", + "Ruedi", + "Ruth", + "Sabine", + "Samuel", + "Sandra", + "Sandro", + "Serge", + "Silvia", + "Silvio", + "Simon", + "Simone", + "Sonia", + "Sonja", + "Stefan", + "Stephan", + "Stéphane", + "Stéphanie", + "Susanna", + "Susanne", + "Suzanne", + "Sylvia", + "Sylvie", + "Theo", + "Theodor", + "Therese", + "Thomas", + "Toni", + "Ueli", + "Ulrich", + "Urs", + "Ursula", + "Verena", + "Véronique", + "Victor", + "Viktor", + "Vreni", + "Walter", + "Werner", + "Willi", + "Willy", + "Wolfgang", + "Yolande", + "Yves", + "Yvette", + "Yvonne", + +]; + +},{}],228:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.name = require("./name"); + +},{"./first_name":227,"./last_name":229,"./name":230,"./prefix":231}],229:[function(require,module,exports){ +module["exports"] = [ + "Ackermann", + "Aebi", + "Albrecht", + "Ammann", + "Amrein", + "Arnold", + "Bachmann", + "Bader", + "Bär", + "Bättig", + "Bauer", + "Baumann", + "Baumgartner", + "Baur", + "Beck", + "Benz", + "Berger", + "Bernasconi", + "Betschart", + "Bianchi", + "Bieri", + "Blaser", + "Blum", + "Bolliger", + "Bosshard", + "Braun", + "Brun", + "Brunner", + "Bucher", + "Bühler", + "Bühlmann", + "Burri", + "Christen", + "Egger", + "Egli", + "Eichenberger", + "Erni", + "Ernst", + "Eugster", + "Fankhauser", + "Favre", + "Fehr", + "Felber", + "Felder", + "Ferrari", + "Fischer", + "Flückiger", + "Forster", + "Frei", + "Frey", + "Frick", + "Friedli", + "Fuchs", + "Furrer", + "Gasser", + "Geiger", + "Gerber", + "Gfeller", + "Giger", + "Gloor", + "Graf", + "Grob", + "Gross", + "Gut", + "Haas", + "Häfliger", + "Hafner", + "Hartmann", + "Hasler", + "Hauser", + "Hermann", + "Herzog", + "Hess", + "Hirt", + "Hodel", + "Hofer", + "Hoffmann", + "Hofmann", + "Hofstetter", + "Hotz", + "Huber", + "Hug", + "Hunziker", + "Hürlimann", + "Imhof", + "Isler", + "Iten", + "Jäggi", + "Jenni", + "Jost", + "Kägi", + "Kaiser", + "Kälin", + "Käser", + "Kaufmann", + "Keller", + "Kern", + "Kessler", + "Knecht", + "Koch", + "Kohler", + "Kuhn", + "Küng", + "Kunz", + "Lang", + "Lanz", + "Lehmann", + "Leu", + "Leunberger", + "Lüscher", + "Lustenberger", + "Lüthi", + "Lutz", + "Mäder", + "Maier", + "Marti", + "Martin", + "Maurer", + "Mayer", + "Meier", + "Meili", + "Meister", + "Merz", + "Mettler", + "Meyer", + "Michel", + "Moser", + "Müller", + "Näf", + "Ott", + "Peter", + "Pfister", + "Portmann", + "Probst", + "Rey", + "Ritter", + "Roos", + "Roth", + "Rüegg", + "Schäfer", + "Schaller", + "Schär", + "Schärer", + "Schaub", + "Scheidegger", + "Schenk", + "Scherrer", + "Schlatter", + "Schmid", + "Schmidt", + "Schneider", + "Schnyder", + "Schoch", + "Schuler", + "Schumacher", + "Schürch", + "Schwab", + "Schwarz", + "Schweizer", + "Seiler", + "Senn", + "Sidler", + "Siegrist", + "Sigrist", + "Spörri", + "Stadelmann", + "Stalder", + "Staub", + "Stauffer", + "Steffen", + "Steiger", + "Steiner", + "Steinmann", + "Stettler", + "Stocker", + "Stöckli", + "Stucki", + "Studer", + "Stutz", + "Suter", + "Sutter", + "Tanner", + "Thommen", + "Tobler", + "Vogel", + "Vogt", + "Wagner", + "Walder", + "Walter", + "Weber", + "Wegmann", + "Wehrli", + "Weibel", + "Wenger", + "Wettstein", + "Widmer", + "Winkler", + "Wirth", + "Wirz", + "Wolf", + "Wüthrich", + "Wyss", + "Zbinden", + "Zehnder", + "Ziegler", + "Zimmermann", + "Zingg", + "Zollinger", + "Zürcher" +]; + +},{}],230:[function(require,module,exports){ +module["exports"] = [ + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}" +]; + +},{}],231:[function(require,module,exports){ +module["exports"] = [ + "Hr.", + "Fr.", + "Dr." +]; + +},{}],232:[function(require,module,exports){ +module["exports"] = [ + "0800 ### ###", + "0800 ## ## ##", + "0## ### ## ##", + "0## ### ## ##", + "+41 ## ### ## ##", + "0900 ### ###", + "076 ### ## ##", + "+4178 ### ## ##", + "0041 79 ### ## ##" +]; + +},{}],233:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":232,"dup":108}],234:[function(require,module,exports){ +module["exports"] = [ + "#####", + "####", + "###" +]; + +},{}],235:[function(require,module,exports){ +arguments[4][153][0].apply(exports,arguments) +},{"dup":153}],236:[function(require,module,exports){ +module["exports"] = [ + "North", + "East", + "West", + "South", + "New", + "Lake", + "Port" +]; + +},{}],237:[function(require,module,exports){ +module["exports"] = [ + "town", + "ton", + "land", + "ville", + "berg", + "burgh", + "borough", + "bury", + "view", + "port", + "mouth", + "stad", + "furt", + "chester", + "mouth", + "fort", + "haven", + "side", + "shire" +]; + +},{}],238:[function(require,module,exports){ +module["exports"] = [ + "Afghanistan", + "Albania", + "Algeria", + "American Samoa", + "Andorra", + "Angola", + "Anguilla", + "Antarctica (the territory South of 60 deg S)", + "Antigua and Barbuda", + "Argentina", + "Armenia", + "Aruba", + "Australia", + "Austria", + "Azerbaijan", + "Bahamas", + "Bahrain", + "Bangladesh", + "Barbados", + "Belarus", + "Belgium", + "Belize", + "Benin", + "Bermuda", + "Bhutan", + "Bolivia", + "Bosnia and Herzegovina", + "Botswana", + "Bouvet Island (Bouvetoya)", + "Brazil", + "British Indian Ocean Territory (Chagos Archipelago)", + "Brunei Darussalam", + "Bulgaria", + "Burkina Faso", + "Burundi", + "Cambodia", + "Cameroon", + "Canada", + "Cape Verde", + "Cayman Islands", + "Central African Republic", + "Chad", + "Chile", + "China", + "Christmas Island", + "Cocos (Keeling) Islands", + "Colombia", + "Comoros", + "Congo", + "Cook Islands", + "Costa Rica", + "Cote d'Ivoire", + "Croatia", + "Cuba", + "Cyprus", + "Czech Republic", + "Denmark", + "Djibouti", + "Dominica", + "Dominican Republic", + "Ecuador", + "Egypt", + "El Salvador", + "Equatorial Guinea", + "Eritrea", + "Estonia", + "Ethiopia", + "Faroe Islands", + "Falkland Islands (Malvinas)", + "Fiji", + "Finland", + "France", + "French Guiana", + "French Polynesia", + "French Southern Territories", + "Gabon", + "Gambia", + "Georgia", + "Germany", + "Ghana", + "Gibraltar", + "Greece", + "Greenland", + "Grenada", + "Guadeloupe", + "Guam", + "Guatemala", + "Guernsey", + "Guinea", + "Guinea-Bissau", + "Guyana", + "Haiti", + "Heard Island and McDonald Islands", + "Holy See (Vatican City State)", + "Honduras", + "Hong Kong", + "Hungary", + "Iceland", + "India", + "Indonesia", + "Iran", + "Iraq", + "Ireland", + "Isle of Man", + "Israel", + "Italy", + "Jamaica", + "Japan", + "Jersey", + "Jordan", + "Kazakhstan", + "Kenya", + "Kiribati", + "Democratic People's Republic of Korea", + "Republic of Korea", + "Kuwait", + "Kyrgyz Republic", + "Lao People's Democratic Republic", + "Latvia", + "Lebanon", + "Lesotho", + "Liberia", + "Libyan Arab Jamahiriya", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macao", + "Macedonia", + "Madagascar", + "Malawi", + "Malaysia", + "Maldives", + "Mali", + "Malta", + "Marshall Islands", + "Martinique", + "Mauritania", + "Mauritius", + "Mayotte", + "Mexico", + "Micronesia", + "Moldova", + "Monaco", + "Mongolia", + "Montenegro", + "Montserrat", + "Morocco", + "Mozambique", + "Myanmar", + "Namibia", + "Nauru", + "Nepal", + "Netherlands Antilles", + "Netherlands", + "New Caledonia", + "New Zealand", + "Nicaragua", + "Niger", + "Nigeria", + "Niue", + "Norfolk Island", + "Northern Mariana Islands", + "Norway", + "Oman", + "Pakistan", + "Palau", + "Palestinian Territory", + "Panama", + "Papua New Guinea", + "Paraguay", + "Peru", + "Philippines", + "Pitcairn Islands", + "Poland", + "Portugal", + "Puerto Rico", + "Qatar", + "Reunion", + "Romania", + "Russian Federation", + "Rwanda", + "Saint Barthelemy", + "Saint Helena", + "Saint Kitts and Nevis", + "Saint Lucia", + "Saint Martin", + "Saint Pierre and Miquelon", + "Saint Vincent and the Grenadines", + "Samoa", + "San Marino", + "Sao Tome and Principe", + "Saudi Arabia", + "Senegal", + "Serbia", + "Seychelles", + "Sierra Leone", + "Singapore", + "Slovakia (Slovak Republic)", + "Slovenia", + "Solomon Islands", + "Somalia", + "South Africa", + "South Georgia and the South Sandwich Islands", + "Spain", + "Sri Lanka", + "Sudan", + "Suriname", + "Svalbard & Jan Mayen Islands", + "Swaziland", + "Sweden", + "Switzerland", + "Syrian Arab Republic", + "Taiwan", + "Tajikistan", + "Tanzania", + "Thailand", + "Timor-Leste", + "Togo", + "Tokelau", + "Tonga", + "Trinidad and Tobago", + "Tunisia", + "Turkey", + "Turkmenistan", + "Turks and Caicos Islands", + "Tuvalu", + "Uganda", + "Ukraine", + "United Arab Emirates", + "United Kingdom", + "United States of America", + "United States Minor Outlying Islands", + "Uruguay", + "Uzbekistan", + "Vanuatu", + "Venezuela", + "Vietnam", + "Virgin Islands, British", + "Virgin Islands, U.S.", + "Wallis and Futuna", + "Western Sahara", + "Yemen", + "Zambia", + "Zimbabwe" +]; + +},{}],239:[function(require,module,exports){ +module["exports"] = [ + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "ZA", + "ZM", + "ZW" +]; + +},{}],240:[function(require,module,exports){ +module["exports"] = [ + "Avon", + "Bedfordshire", + "Berkshire", + "Borders", + "Buckinghamshire", + "Cambridgeshire" +]; + +},{}],241:[function(require,module,exports){ +module["exports"] = [ + "United States of America" +]; + +},{}],242:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.county = require("./county"); +address.country = require("./country"); +address.country_code = require("./country_code"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.postcode_by_state = require("./postcode_by_state"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.time_zone = require("./time_zone"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":234,"./city":235,"./city_prefix":236,"./city_suffix":237,"./country":238,"./country_code":239,"./county":240,"./default_country":241,"./postcode":243,"./postcode_by_state":244,"./secondary_address":245,"./state":246,"./state_abbr":247,"./street_address":248,"./street_name":249,"./street_suffix":250,"./time_zone":251}],243:[function(require,module,exports){ +module["exports"] = [ + "#####", + "#####-####" +]; + +},{}],244:[function(require,module,exports){ +arguments[4][243][0].apply(exports,arguments) +},{"dup":243}],245:[function(require,module,exports){ +arguments[4][116][0].apply(exports,arguments) +},{"dup":116}],246:[function(require,module,exports){ +module["exports"] = [ + "Alabama", + "Alaska", + "Arizona", + "Arkansas", + "California", + "Colorado", + "Connecticut", + "Delaware", + "Florida", + "Georgia", + "Hawaii", + "Idaho", + "Illinois", + "Indiana", + "Iowa", + "Kansas", + "Kentucky", + "Louisiana", + "Maine", + "Maryland", + "Massachusetts", + "Michigan", + "Minnesota", + "Mississippi", + "Missouri", + "Montana", + "Nebraska", + "Nevada", + "New Hampshire", + "New Jersey", + "New Mexico", + "New York", + "North Carolina", + "North Dakota", + "Ohio", + "Oklahoma", + "Oregon", + "Pennsylvania", + "Rhode Island", + "South Carolina", + "South Dakota", + "Tennessee", + "Texas", + "Utah", + "Vermont", + "Virginia", + "Washington", + "West Virginia", + "Wisconsin", + "Wyoming" +]; + +},{}],247:[function(require,module,exports){ +module["exports"] = [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "FL", + "GA", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VA", + "WA", + "WV", + "WI", + "WY" +]; + +},{}],248:[function(require,module,exports){ +module["exports"] = [ + "#{building_number} #{street_name}" +]; + +},{}],249:[function(require,module,exports){ +module["exports"] = [ + "#{Name.first_name} #{street_suffix}", + "#{Name.last_name} #{street_suffix}" +]; + +},{}],250:[function(require,module,exports){ +module["exports"] = [ + "Alley", + "Avenue", + "Branch", + "Bridge", + "Brook", + "Brooks", + "Burg", + "Burgs", + "Bypass", + "Camp", + "Canyon", + "Cape", + "Causeway", + "Center", + "Centers", + "Circle", + "Circles", + "Cliff", + "Cliffs", + "Club", + "Common", + "Corner", + "Corners", + "Course", + "Court", + "Courts", + "Cove", + "Coves", + "Creek", + "Crescent", + "Crest", + "Crossing", + "Crossroad", + "Curve", + "Dale", + "Dam", + "Divide", + "Drive", + "Drive", + "Drives", + "Estate", + "Estates", + "Expressway", + "Extension", + "Extensions", + "Fall", + "Falls", + "Ferry", + "Field", + "Fields", + "Flat", + "Flats", + "Ford", + "Fords", + "Forest", + "Forge", + "Forges", + "Fork", + "Forks", + "Fort", + "Freeway", + "Garden", + "Gardens", + "Gateway", + "Glen", + "Glens", + "Green", + "Greens", + "Grove", + "Groves", + "Harbor", + "Harbors", + "Haven", + "Heights", + "Highway", + "Hill", + "Hills", + "Hollow", + "Inlet", + "Inlet", + "Island", + "Island", + "Islands", + "Islands", + "Isle", + "Isle", + "Junction", + "Junctions", + "Key", + "Keys", + "Knoll", + "Knolls", + "Lake", + "Lakes", + "Land", + "Landing", + "Lane", + "Light", + "Lights", + "Loaf", + "Lock", + "Locks", + "Locks", + "Lodge", + "Lodge", + "Loop", + "Mall", + "Manor", + "Manors", + "Meadow", + "Meadows", + "Mews", + "Mill", + "Mills", + "Mission", + "Mission", + "Motorway", + "Mount", + "Mountain", + "Mountain", + "Mountains", + "Mountains", + "Neck", + "Orchard", + "Oval", + "Overpass", + "Park", + "Parks", + "Parkway", + "Parkways", + "Pass", + "Passage", + "Path", + "Pike", + "Pine", + "Pines", + "Place", + "Plain", + "Plains", + "Plains", + "Plaza", + "Plaza", + "Point", + "Points", + "Port", + "Port", + "Ports", + "Ports", + "Prairie", + "Prairie", + "Radial", + "Ramp", + "Ranch", + "Rapid", + "Rapids", + "Rest", + "Ridge", + "Ridges", + "River", + "Road", + "Road", + "Roads", + "Roads", + "Route", + "Row", + "Rue", + "Run", + "Shoal", + "Shoals", + "Shore", + "Shores", + "Skyway", + "Spring", + "Springs", + "Springs", + "Spur", + "Spurs", + "Square", + "Square", + "Squares", + "Squares", + "Station", + "Station", + "Stravenue", + "Stravenue", + "Stream", + "Stream", + "Street", + "Street", + "Streets", + "Summit", + "Summit", + "Terrace", + "Throughway", + "Trace", + "Track", + "Trafficway", + "Trail", + "Trail", + "Tunnel", + "Tunnel", + "Turnpike", + "Turnpike", + "Underpass", + "Union", + "Unions", + "Valley", + "Valleys", + "Via", + "Viaduct", + "View", + "Views", + "Village", + "Village", + "Villages", + "Ville", + "Vista", + "Vista", + "Walk", + "Walks", + "Wall", + "Way", + "Ways", + "Well", + "Wells" +]; + +},{}],251:[function(require,module,exports){ +arguments[4][122][0].apply(exports,arguments) +},{"dup":122}],252:[function(require,module,exports){ +module["exports"] = [ + "#{Name.name}", + "#{Company.name}" +]; + +},{}],253:[function(require,module,exports){ +var app = {}; +module['exports'] = app; +app.name = require("./name"); +app.version = require("./version"); +app.author = require("./author"); + +},{"./author":252,"./name":254,"./version":255}],254:[function(require,module,exports){ +module["exports"] = [ + "Redhold", + "Treeflex", + "Trippledex", + "Kanlam", + "Bigtax", + "Daltfresh", + "Toughjoyfax", + "Mat Lam Tam", + "Otcom", + "Tres-Zap", + "Y-Solowarm", + "Tresom", + "Voltsillam", + "Biodex", + "Greenlam", + "Viva", + "Matsoft", + "Temp", + "Zoolab", + "Subin", + "Rank", + "Job", + "Stringtough", + "Tin", + "It", + "Home Ing", + "Zamit", + "Sonsing", + "Konklab", + "Alpha", + "Latlux", + "Voyatouch", + "Alphazap", + "Holdlamis", + "Zaam-Dox", + "Sub-Ex", + "Quo Lux", + "Bamity", + "Ventosanzap", + "Lotstring", + "Hatity", + "Tempsoft", + "Overhold", + "Fixflex", + "Konklux", + "Zontrax", + "Tampflex", + "Span", + "Namfix", + "Transcof", + "Stim", + "Fix San", + "Sonair", + "Stronghold", + "Fintone", + "Y-find", + "Opela", + "Lotlux", + "Ronstring", + "Zathin", + "Duobam", + "Keylex" +]; + +},{}],255:[function(require,module,exports){ +module["exports"] = [ + "0.#.#", + "0.##", + "#.##", + "#.#", + "#.#.#" +]; + +},{}],256:[function(require,module,exports){ +module["exports"] = [ + "2011-10-12", + "2012-11-12", + "2015-11-11", + "2013-9-12" +]; + +},{}],257:[function(require,module,exports){ +module["exports"] = [ + "1234-2121-1221-1211", + "1212-1221-1121-1234", + "1211-1221-1234-2201", + "1228-1221-1221-1431" +]; + +},{}],258:[function(require,module,exports){ +module["exports"] = [ + "visa", + "mastercard", + "americanexpress", + "discover" +]; + +},{}],259:[function(require,module,exports){ +var business = {}; +module['exports'] = business; +business.credit_card_numbers = require("./credit_card_numbers"); +business.credit_card_expiry_dates = require("./credit_card_expiry_dates"); +business.credit_card_types = require("./credit_card_types"); + +},{"./credit_card_expiry_dates":256,"./credit_card_numbers":257,"./credit_card_types":258}],260:[function(require,module,exports){ +module["exports"] = [ + "###-###-####", + "(###) ###-####", + "1-###-###-####", + "###.###.####" +]; + +},{}],261:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":260,"dup":167}],262:[function(require,module,exports){ +module["exports"] = [ + "red", + "green", + "blue", + "yellow", + "purple", + "mint green", + "teal", + "white", + "black", + "orange", + "pink", + "grey", + "maroon", + "violet", + "turquoise", + "tan", + "sky blue", + "salmon", + "plum", + "orchid", + "olive", + "magenta", + "lime", + "ivory", + "indigo", + "gold", + "fuchsia", + "cyan", + "azure", + "lavender", + "silver" +]; + +},{}],263:[function(require,module,exports){ +module["exports"] = [ + "Books", + "Movies", + "Music", + "Games", + "Electronics", + "Computers", + "Home", + "Garden", + "Tools", + "Grocery", + "Health", + "Beauty", + "Toys", + "Kids", + "Baby", + "Clothing", + "Shoes", + "Jewelery", + "Sports", + "Outdoors", + "Automotive", + "Industrial" +]; + +},{}],264:[function(require,module,exports){ +arguments[4][86][0].apply(exports,arguments) +},{"./color":262,"./department":263,"./product_name":265,"dup":86}],265:[function(require,module,exports){ +module["exports"] = { + "adjective": [ + "Small", + "Ergonomic", + "Rustic", + "Intelligent", + "Gorgeous", + "Incredible", + "Fantastic", + "Practical", + "Sleek", + "Awesome", + "Generic", + "Handcrafted", + "Handmade", + "Licensed", + "Refined", + "Unbranded", + "Tasty" + ], + "material": [ + "Steel", + "Wooden", + "Concrete", + "Plastic", + "Cotton", + "Granite", + "Rubber", + "Metal", + "Soft", + "Fresh", + "Frozen" + ], + "product": [ + "Chair", + "Car", + "Computer", + "Keyboard", + "Mouse", + "Bike", + "Ball", + "Gloves", + "Pants", + "Shirt", + "Table", + "Shoes", + "Hat", + "Towels", + "Soap", + "Tuna", + "Chicken", + "Fish", + "Cheese", + "Bacon", + "Pizza", + "Salad", + "Sausages", + "Chips" + ] +}; + +},{}],266:[function(require,module,exports){ +arguments[4][123][0].apply(exports,arguments) +},{"dup":123}],267:[function(require,module,exports){ +module["exports"] = [ + "clicks-and-mortar", + "value-added", + "vertical", + "proactive", + "robust", + "revolutionary", + "scalable", + "leading-edge", + "innovative", + "intuitive", + "strategic", + "e-business", + "mission-critical", + "sticky", + "one-to-one", + "24/7", + "end-to-end", + "global", + "B2B", + "B2C", + "granular", + "frictionless", + "virtual", + "viral", + "dynamic", + "24/365", + "best-of-breed", + "killer", + "magnetic", + "bleeding-edge", + "web-enabled", + "interactive", + "dot-com", + "sexy", + "back-end", + "real-time", + "efficient", + "front-end", + "distributed", + "seamless", + "extensible", + "turn-key", + "world-class", + "open-source", + "cross-platform", + "cross-media", + "synergistic", + "bricks-and-clicks", + "out-of-the-box", + "enterprise", + "integrated", + "impactful", + "wireless", + "transparent", + "next-generation", + "cutting-edge", + "user-centric", + "visionary", + "customized", + "ubiquitous", + "plug-and-play", + "collaborative", + "compelling", + "holistic", + "rich" +]; + +},{}],268:[function(require,module,exports){ +module["exports"] = [ + "synergies", + "web-readiness", + "paradigms", + "markets", + "partnerships", + "infrastructures", + "platforms", + "initiatives", + "channels", + "eyeballs", + "communities", + "ROI", + "solutions", + "e-tailers", + "e-services", + "action-items", + "portals", + "niches", + "technologies", + "content", + "vortals", + "supply-chains", + "convergence", + "relationships", + "architectures", + "interfaces", + "e-markets", + "e-commerce", + "systems", + "bandwidth", + "infomediaries", + "models", + "mindshare", + "deliverables", + "users", + "schemas", + "networks", + "applications", + "metrics", + "e-business", + "functionalities", + "experiences", + "web services", + "methodologies" +]; + +},{}],269:[function(require,module,exports){ +arguments[4][125][0].apply(exports,arguments) +},{"dup":125}],270:[function(require,module,exports){ +arguments[4][126][0].apply(exports,arguments) +},{"dup":126}],271:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.adjective = require("./adjective"); +company.descriptor = require("./descriptor"); +company.noun = require("./noun"); +company.bs_verb = require("./bs_verb"); +company.bs_adjective = require("./bs_adjective"); +company.bs_noun = require("./bs_noun"); +company.name = require("./name"); + +},{"./adjective":266,"./bs_adjective":267,"./bs_noun":268,"./bs_verb":269,"./descriptor":270,"./name":272,"./noun":273,"./suffix":274}],272:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name}-#{Name.last_name}", + "#{Name.last_name}, #{Name.last_name} and #{Name.last_name}" +]; + +},{}],273:[function(require,module,exports){ +arguments[4][129][0].apply(exports,arguments) +},{"dup":129}],274:[function(require,module,exports){ +module["exports"] = [ + "Inc", + "and Sons", + "LLC", + "Group" +]; + +},{}],275:[function(require,module,exports){ +module["exports"] = [ + "/34##-######-####L/", + "/37##-######-####L/" +]; + +},{}],276:[function(require,module,exports){ +module["exports"] = [ + "/30[0-5]#-######-###L/", + "/368#-######-###L/" +]; + +},{}],277:[function(require,module,exports){ +module["exports"] = [ + "/6011-####-####-###L/", + "/65##-####-####-###L/", + "/64[4-9]#-####-####-###L/", + "/6011-62##-####-####-###L/", + "/65##-62##-####-####-###L/", + "/64[4-9]#-62##-####-####-###L/" +]; + +},{}],278:[function(require,module,exports){ +var credit_card = {}; +module['exports'] = credit_card; +credit_card.visa = require("./visa"); +credit_card.mastercard = require("./mastercard"); +credit_card.discover = require("./discover"); +credit_card.american_express = require("./american_express"); +credit_card.diners_club = require("./diners_club"); +credit_card.jcb = require("./jcb"); +credit_card.switch = require("./switch"); +credit_card.solo = require("./solo"); +credit_card.maestro = require("./maestro"); +credit_card.laser = require("./laser"); + +},{"./american_express":275,"./diners_club":276,"./discover":277,"./jcb":279,"./laser":280,"./maestro":281,"./mastercard":282,"./solo":283,"./switch":284,"./visa":285}],279:[function(require,module,exports){ +module["exports"] = [ + "/3528-####-####-###L/", + "/3529-####-####-###L/", + "/35[3-8]#-####-####-###L/" +]; + +},{}],280:[function(require,module,exports){ +module["exports"] = [ + "/6304###########L/", + "/6706###########L/", + "/6771###########L/", + "/6709###########L/", + "/6304#########{5,6}L/", + "/6706#########{5,6}L/", + "/6771#########{5,6}L/", + "/6709#########{5,6}L/" +]; + +},{}],281:[function(require,module,exports){ +module["exports"] = [ + "/50#{9,16}L/", + "/5[6-8]#{9,16}L/", + "/56##{9,16}L/" +]; + +},{}],282:[function(require,module,exports){ +module["exports"] = [ + "/5[1-5]##-####-####-###L/", + "/6771-89##-####-###L/" +]; + +},{}],283:[function(require,module,exports){ +module["exports"] = [ + "/6767-####-####-###L/", + "/6767-####-####-####-#L/", + "/6767-####-####-####-##L/" +]; + +},{}],284:[function(require,module,exports){ +module["exports"] = [ + "/6759-####-####-###L/", + "/6759-####-####-####-#L/", + "/6759-####-####-####-##L/" +]; + +},{}],285:[function(require,module,exports){ +module["exports"] = [ + "/4###########L/", + "/4###-####-####-###L/" +]; + +},{}],286:[function(require,module,exports){ +module["exports"] = [ + "utf8_unicode_ci", + "utf8_general_ci", + "utf8_bin", + "ascii_bin", + "ascii_general_ci", + "cp1250_bin", + "cp1250_general_ci" +]; + +},{}],287:[function(require,module,exports){ +module["exports"] = [ + "id", + "title", + "name", + "email", + "phone", + "token", + "group", + "category", + "password", + "comment", + "avatar", + "status", + "createdAt", + "updatedAt" +]; + +},{}],288:[function(require,module,exports){ +module["exports"] = [ + "InnoDB", + "MyISAM", + "MEMORY", + "CSV", + "BLACKHOLE", + "ARCHIVE" +]; + +},{}],289:[function(require,module,exports){ +var database = {}; +module['exports'] = database; +database.collation = require("./collation"); +database.column = require("./column"); +database.engine = require("./engine"); +database.type = require("./type"); +},{"./collation":286,"./column":287,"./engine":288,"./type":290}],290:[function(require,module,exports){ +module["exports"] = [ + "int", + "varchar", + "text", + "date", + "datetime", + "tinyint", + "time", + "timestamp", + "smallint", + "mediumint", + "bigint", + "decimal", + "float", + "double", + "real", + "bit", + "boolean", + "serial", + "blob", + "binary", + "enum", + "set", + "geometry", + "point" +]; + +},{}],291:[function(require,module,exports){ +arguments[4][92][0].apply(exports,arguments) +},{"./month":292,"./weekday":293,"dup":92}],292:[function(require,module,exports){ +// Source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/en.xml#L1799 +module["exports"] = { + wide: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + // Property "wide_context" is optional, if not set then "wide" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + wide_context: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + abbr: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + // Property "abbr_context" is optional, if not set then "abbr" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + abbr_context: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ] +}; + +},{}],293:[function(require,module,exports){ +// Source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/en.xml#L1847 +module["exports"] = { + wide: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + // Property "wide_context" is optional, if not set then "wide" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + wide_context: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + abbr: [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + // Property "abbr_context" is optional, if not set then "abbr" will be used instead + // It is used to specify a word in context, which may differ from a stand-alone word + abbr_context: [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ] +}; + +},{}],294:[function(require,module,exports){ +module["exports"] = [ + "Checking", + "Savings", + "Money Market", + "Investment", + "Home Loan", + "Credit Card", + "Auto Loan", + "Personal Loan" +]; + +},{}],295:[function(require,module,exports){ +module["exports"] = { + "UAE Dirham": { + "code": "AED", + "symbol": "" + }, + "Afghani": { + "code": "AFN", + "symbol": "؋" + }, + "Lek": { + "code": "ALL", + "symbol": "Lek" + }, + "Armenian Dram": { + "code": "AMD", + "symbol": "" + }, + "Netherlands Antillian Guilder": { + "code": "ANG", + "symbol": "ƒ" + }, + "Kwanza": { + "code": "AOA", + "symbol": "" + }, + "Argentine Peso": { + "code": "ARS", + "symbol": "$" + }, + "Australian Dollar": { + "code": "AUD", + "symbol": "$" + }, + "Aruban Guilder": { + "code": "AWG", + "symbol": "ƒ" + }, + "Azerbaijanian Manat": { + "code": "AZN", + "symbol": "ман" + }, + "Convertible Marks": { + "code": "BAM", + "symbol": "KM" + }, + "Barbados Dollar": { + "code": "BBD", + "symbol": "$" + }, + "Taka": { + "code": "BDT", + "symbol": "" + }, + "Bulgarian Lev": { + "code": "BGN", + "symbol": "лв" + }, + "Bahraini Dinar": { + "code": "BHD", + "symbol": "" + }, + "Burundi Franc": { + "code": "BIF", + "symbol": "" + }, + "Bermudian Dollar (customarily known as Bermuda Dollar)": { + "code": "BMD", + "symbol": "$" + }, + "Brunei Dollar": { + "code": "BND", + "symbol": "$" + }, + "Boliviano Mvdol": { + "code": "BOB BOV", + "symbol": "$b" + }, + "Brazilian Real": { + "code": "BRL", + "symbol": "R$" + }, + "Bahamian Dollar": { + "code": "BSD", + "symbol": "$" + }, + "Pula": { + "code": "BWP", + "symbol": "P" + }, + "Belarussian Ruble": { + "code": "BYR", + "symbol": "p." + }, + "Belize Dollar": { + "code": "BZD", + "symbol": "BZ$" + }, + "Canadian Dollar": { + "code": "CAD", + "symbol": "$" + }, + "Congolese Franc": { + "code": "CDF", + "symbol": "" + }, + "Swiss Franc": { + "code": "CHF", + "symbol": "CHF" + }, + "Chilean Peso Unidades de fomento": { + "code": "CLP CLF", + "symbol": "$" + }, + "Yuan Renminbi": { + "code": "CNY", + "symbol": "¥" + }, + "Colombian Peso Unidad de Valor Real": { + "code": "COP COU", + "symbol": "$" + }, + "Costa Rican Colon": { + "code": "CRC", + "symbol": "₡" + }, + "Cuban Peso Peso Convertible": { + "code": "CUP CUC", + "symbol": "₱" + }, + "Cape Verde Escudo": { + "code": "CVE", + "symbol": "" + }, + "Czech Koruna": { + "code": "CZK", + "symbol": "Kč" + }, + "Djibouti Franc": { + "code": "DJF", + "symbol": "" + }, + "Danish Krone": { + "code": "DKK", + "symbol": "kr" + }, + "Dominican Peso": { + "code": "DOP", + "symbol": "RD$" + }, + "Algerian Dinar": { + "code": "DZD", + "symbol": "" + }, + "Kroon": { + "code": "EEK", + "symbol": "" + }, + "Egyptian Pound": { + "code": "EGP", + "symbol": "£" + }, + "Nakfa": { + "code": "ERN", + "symbol": "" + }, + "Ethiopian Birr": { + "code": "ETB", + "symbol": "" + }, + "Euro": { + "code": "EUR", + "symbol": "€" + }, + "Fiji Dollar": { + "code": "FJD", + "symbol": "$" + }, + "Falkland Islands Pound": { + "code": "FKP", + "symbol": "£" + }, + "Pound Sterling": { + "code": "GBP", + "symbol": "£" + }, + "Lari": { + "code": "GEL", + "symbol": "" + }, + "Cedi": { + "code": "GHS", + "symbol": "" + }, + "Gibraltar Pound": { + "code": "GIP", + "symbol": "£" + }, + "Dalasi": { + "code": "GMD", + "symbol": "" + }, + "Guinea Franc": { + "code": "GNF", + "symbol": "" + }, + "Quetzal": { + "code": "GTQ", + "symbol": "Q" + }, + "Guyana Dollar": { + "code": "GYD", + "symbol": "$" + }, + "Hong Kong Dollar": { + "code": "HKD", + "symbol": "$" + }, + "Lempira": { + "code": "HNL", + "symbol": "L" + }, + "Croatian Kuna": { + "code": "HRK", + "symbol": "kn" + }, + "Gourde US Dollar": { + "code": "HTG USD", + "symbol": "" + }, + "Forint": { + "code": "HUF", + "symbol": "Ft" + }, + "Rupiah": { + "code": "IDR", + "symbol": "Rp" + }, + "New Israeli Sheqel": { + "code": "ILS", + "symbol": "₪" + }, + "Indian Rupee": { + "code": "INR", + "symbol": "" + }, + "Indian Rupee Ngultrum": { + "code": "INR BTN", + "symbol": "" + }, + "Iraqi Dinar": { + "code": "IQD", + "symbol": "" + }, + "Iranian Rial": { + "code": "IRR", + "symbol": "﷼" + }, + "Iceland Krona": { + "code": "ISK", + "symbol": "kr" + }, + "Jamaican Dollar": { + "code": "JMD", + "symbol": "J$" + }, + "Jordanian Dinar": { + "code": "JOD", + "symbol": "" + }, + "Yen": { + "code": "JPY", + "symbol": "¥" + }, + "Kenyan Shilling": { + "code": "KES", + "symbol": "" + }, + "Som": { + "code": "KGS", + "symbol": "лв" + }, + "Riel": { + "code": "KHR", + "symbol": "៛" + }, + "Comoro Franc": { + "code": "KMF", + "symbol": "" + }, + "North Korean Won": { + "code": "KPW", + "symbol": "₩" + }, + "Won": { + "code": "KRW", + "symbol": "₩" + }, + "Kuwaiti Dinar": { + "code": "KWD", + "symbol": "" + }, + "Cayman Islands Dollar": { + "code": "KYD", + "symbol": "$" + }, + "Tenge": { + "code": "KZT", + "symbol": "лв" + }, + "Kip": { + "code": "LAK", + "symbol": "₭" + }, + "Lebanese Pound": { + "code": "LBP", + "symbol": "£" + }, + "Sri Lanka Rupee": { + "code": "LKR", + "symbol": "₨" + }, + "Liberian Dollar": { + "code": "LRD", + "symbol": "$" + }, + "Lithuanian Litas": { + "code": "LTL", + "symbol": "Lt" + }, + "Latvian Lats": { + "code": "LVL", + "symbol": "Ls" + }, + "Libyan Dinar": { + "code": "LYD", + "symbol": "" + }, + "Moroccan Dirham": { + "code": "MAD", + "symbol": "" + }, + "Moldovan Leu": { + "code": "MDL", + "symbol": "" + }, + "Malagasy Ariary": { + "code": "MGA", + "symbol": "" + }, + "Denar": { + "code": "MKD", + "symbol": "ден" + }, + "Kyat": { + "code": "MMK", + "symbol": "" + }, + "Tugrik": { + "code": "MNT", + "symbol": "₮" + }, + "Pataca": { + "code": "MOP", + "symbol": "" + }, + "Ouguiya": { + "code": "MRO", + "symbol": "" + }, + "Mauritius Rupee": { + "code": "MUR", + "symbol": "₨" + }, + "Rufiyaa": { + "code": "MVR", + "symbol": "" + }, + "Kwacha": { + "code": "MWK", + "symbol": "" + }, + "Mexican Peso Mexican Unidad de Inversion (UDI)": { + "code": "MXN MXV", + "symbol": "$" + }, + "Malaysian Ringgit": { + "code": "MYR", + "symbol": "RM" + }, + "Metical": { + "code": "MZN", + "symbol": "MT" + }, + "Naira": { + "code": "NGN", + "symbol": "₦" + }, + "Cordoba Oro": { + "code": "NIO", + "symbol": "C$" + }, + "Norwegian Krone": { + "code": "NOK", + "symbol": "kr" + }, + "Nepalese Rupee": { + "code": "NPR", + "symbol": "₨" + }, + "New Zealand Dollar": { + "code": "NZD", + "symbol": "$" + }, + "Rial Omani": { + "code": "OMR", + "symbol": "﷼" + }, + "Balboa US Dollar": { + "code": "PAB USD", + "symbol": "B/." + }, + "Nuevo Sol": { + "code": "PEN", + "symbol": "S/." + }, + "Kina": { + "code": "PGK", + "symbol": "" + }, + "Philippine Peso": { + "code": "PHP", + "symbol": "Php" + }, + "Pakistan Rupee": { + "code": "PKR", + "symbol": "₨" + }, + "Zloty": { + "code": "PLN", + "symbol": "zł" + }, + "Guarani": { + "code": "PYG", + "symbol": "Gs" + }, + "Qatari Rial": { + "code": "QAR", + "symbol": "﷼" + }, + "New Leu": { + "code": "RON", + "symbol": "lei" + }, + "Serbian Dinar": { + "code": "RSD", + "symbol": "Дин." + }, + "Russian Ruble": { + "code": "RUB", + "symbol": "руб" + }, + "Rwanda Franc": { + "code": "RWF", + "symbol": "" + }, + "Saudi Riyal": { + "code": "SAR", + "symbol": "﷼" + }, + "Solomon Islands Dollar": { + "code": "SBD", + "symbol": "$" + }, + "Seychelles Rupee": { + "code": "SCR", + "symbol": "₨" + }, + "Sudanese Pound": { + "code": "SDG", + "symbol": "" + }, + "Swedish Krona": { + "code": "SEK", + "symbol": "kr" + }, + "Singapore Dollar": { + "code": "SGD", + "symbol": "$" + }, + "Saint Helena Pound": { + "code": "SHP", + "symbol": "£" + }, + "Leone": { + "code": "SLL", + "symbol": "" + }, + "Somali Shilling": { + "code": "SOS", + "symbol": "S" + }, + "Surinam Dollar": { + "code": "SRD", + "symbol": "$" + }, + "Dobra": { + "code": "STD", + "symbol": "" + }, + "El Salvador Colon US Dollar": { + "code": "SVC USD", + "symbol": "$" + }, + "Syrian Pound": { + "code": "SYP", + "symbol": "£" + }, + "Lilangeni": { + "code": "SZL", + "symbol": "" + }, + "Baht": { + "code": "THB", + "symbol": "฿" + }, + "Somoni": { + "code": "TJS", + "symbol": "" + }, + "Manat": { + "code": "TMT", + "symbol": "" + }, + "Tunisian Dinar": { + "code": "TND", + "symbol": "" + }, + "Pa'anga": { + "code": "TOP", + "symbol": "" + }, + "Turkish Lira": { + "code": "TRY", + "symbol": "TL" + }, + "Trinidad and Tobago Dollar": { + "code": "TTD", + "symbol": "TT$" + }, + "New Taiwan Dollar": { + "code": "TWD", + "symbol": "NT$" + }, + "Tanzanian Shilling": { + "code": "TZS", + "symbol": "" + }, + "Hryvnia": { + "code": "UAH", + "symbol": "₴" + }, + "Uganda Shilling": { + "code": "UGX", + "symbol": "" + }, + "US Dollar": { + "code": "USD", + "symbol": "$" + }, + "Peso Uruguayo Uruguay Peso en Unidades Indexadas": { + "code": "UYU UYI", + "symbol": "$U" + }, + "Uzbekistan Sum": { + "code": "UZS", + "symbol": "лв" + }, + "Bolivar Fuerte": { + "code": "VEF", + "symbol": "Bs" + }, + "Dong": { + "code": "VND", + "symbol": "₫" + }, + "Vatu": { + "code": "VUV", + "symbol": "" + }, + "Tala": { + "code": "WST", + "symbol": "" + }, + "CFA Franc BEAC": { + "code": "XAF", + "symbol": "" + }, + "Silver": { + "code": "XAG", + "symbol": "" + }, + "Gold": { + "code": "XAU", + "symbol": "" + }, + "Bond Markets Units European Composite Unit (EURCO)": { + "code": "XBA", + "symbol": "" + }, + "European Monetary Unit (E.M.U.-6)": { + "code": "XBB", + "symbol": "" + }, + "European Unit of Account 9(E.U.A.-9)": { + "code": "XBC", + "symbol": "" + }, + "European Unit of Account 17(E.U.A.-17)": { + "code": "XBD", + "symbol": "" + }, + "East Caribbean Dollar": { + "code": "XCD", + "symbol": "$" + }, + "SDR": { + "code": "XDR", + "symbol": "" + }, + "UIC-Franc": { + "code": "XFU", + "symbol": "" + }, + "CFA Franc BCEAO": { + "code": "XOF", + "symbol": "" + }, + "Palladium": { + "code": "XPD", + "symbol": "" + }, + "CFP Franc": { + "code": "XPF", + "symbol": "" + }, + "Platinum": { + "code": "XPT", + "symbol": "" + }, + "Codes specifically reserved for testing purposes": { + "code": "XTS", + "symbol": "" + }, + "Yemeni Rial": { + "code": "YER", + "symbol": "﷼" + }, + "Rand": { + "code": "ZAR", + "symbol": "R" + }, + "Rand Loti": { + "code": "ZAR LSL", + "symbol": "" + }, + "Rand Namibia Dollar": { + "code": "ZAR NAD", + "symbol": "" + }, + "Zambian Kwacha": { + "code": "ZMK", + "symbol": "" + }, + "Zimbabwe Dollar": { + "code": "ZWL", + "symbol": "" + } +}; + +},{}],296:[function(require,module,exports){ +var finance = {}; +module['exports'] = finance; +finance.account_type = require("./account_type"); +finance.transaction_type = require("./transaction_type"); +finance.currency = require("./currency"); + +},{"./account_type":294,"./currency":295,"./transaction_type":297}],297:[function(require,module,exports){ +module["exports"] = [ + "deposit", + "withdrawal", + "payment", + "invoice" +]; + +},{}],298:[function(require,module,exports){ +module["exports"] = [ + "TCP", + "HTTP", + "SDD", + "RAM", + "GB", + "CSS", + "SSL", + "AGP", + "SQL", + "FTP", + "PCI", + "AI", + "ADP", + "RSS", + "XML", + "EXE", + "COM", + "HDD", + "THX", + "SMTP", + "SMS", + "USB", + "PNG", + "SAS", + "IB", + "SCSI", + "JSON", + "XSS", + "JBOD" +]; + +},{}],299:[function(require,module,exports){ +module["exports"] = [ + "auxiliary", + "primary", + "back-end", + "digital", + "open-source", + "virtual", + "cross-platform", + "redundant", + "online", + "haptic", + "multi-byte", + "bluetooth", + "wireless", + "1080p", + "neural", + "optical", + "solid state", + "mobile" +]; + +},{}],300:[function(require,module,exports){ +var hacker = {}; +module['exports'] = hacker; +hacker.abbreviation = require("./abbreviation"); +hacker.adjective = require("./adjective"); +hacker.noun = require("./noun"); +hacker.verb = require("./verb"); +hacker.ingverb = require("./ingverb"); + +},{"./abbreviation":298,"./adjective":299,"./ingverb":301,"./noun":302,"./verb":303}],301:[function(require,module,exports){ +module["exports"] = [ + "backing up", + "bypassing", + "hacking", + "overriding", + "compressing", + "copying", + "navigating", + "indexing", + "connecting", + "generating", + "quantifying", + "calculating", + "synthesizing", + "transmitting", + "programming", + "parsing" +]; + +},{}],302:[function(require,module,exports){ +module["exports"] = [ + "driver", + "protocol", + "bandwidth", + "panel", + "microchip", + "program", + "port", + "card", + "array", + "interface", + "system", + "sensor", + "firewall", + "hard drive", + "pixel", + "alarm", + "feed", + "monitor", + "application", + "transmitter", + "bus", + "circuit", + "capacitor", + "matrix" +]; + +},{}],303:[function(require,module,exports){ +module["exports"] = [ + "back up", + "bypass", + "hack", + "override", + "compress", + "copy", + "navigate", + "index", + "connect", + "generate", + "quantify", + "calculate", + "synthesize", + "input", + "transmit", + "program", + "reboot", + "parse" +]; + +},{}],304:[function(require,module,exports){ +var en = {}; +module['exports'] = en; +en.title = "English"; +en.separator = " & "; +en.address = require("./address"); +en.credit_card = require("./credit_card"); +en.company = require("./company"); +en.internet = require("./internet"); +en.database = require("./database"); +en.lorem = require("./lorem"); +en.name = require("./name"); +en.phone_number = require("./phone_number"); +en.cell_phone = require("./cell_phone"); +en.business = require("./business"); +en.commerce = require("./commerce"); +en.team = require("./team"); +en.hacker = require("./hacker"); +en.app = require("./app"); +en.finance = require("./finance"); +en.date = require("./date"); +en.system = require("./system"); + +},{"./address":242,"./app":253,"./business":259,"./cell_phone":261,"./commerce":264,"./company":271,"./credit_card":278,"./database":289,"./date":291,"./finance":296,"./hacker":300,"./internet":309,"./lorem":310,"./name":314,"./phone_number":321,"./system":322,"./team":325}],305:[function(require,module,exports){ +module["exports"] = [ + "https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mahdif/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sprayaga/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ruzinav/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Skyhartman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/moscoz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kurafire/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/91bilal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/igorgarybaldi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/malykhinv/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joelhelin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kushsolitary/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/coreyweb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/snowshade/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/areus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/holdenweb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/heyimjuani/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/envex/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/unterdreht/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/collegeman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/peejfancher/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andyisonline/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ultragex/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fuck_you_two/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adellecharles/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ateneupopular/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ahmetalpbalkan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Stievius/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kerem/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/osvaldas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/angelceballos/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thierrykoblentz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/peterlandt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/catarino/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/weglov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brandclay/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ahmetsulek/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nicolasfolliot/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jayrobinson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/victorerixon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kolage/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michzen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/markjenkins/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nicolai_larsen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/noxdzine/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alagoon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/idiot/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mizko/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chadengle/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mutlu82/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/simobenso/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vocino/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/guiiipontes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/soyjavi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joshaustin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tomaslau/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/VinThomas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ManikRathee/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/langate/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cemshid/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/leemunroe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_shahedk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/enda/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/BillSKenney/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/divya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joshhemsley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sindresorhus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/soffes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/9lessons/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/linux29/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Chakintosh/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/anaami/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joreira/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shadeed9/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scottkclark/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jedbridges/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/salleedesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marakasina/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ariil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/BrianPurkiss/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michaelmartinho/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bublienko/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/devankoshal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ZacharyZorbas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/timmillwood/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joshuasortino/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/damenleeturks/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tomas_janousek/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/herrhaase/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/RussellBishop/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brajeshwar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cbracco/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bermonpainter/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/abdullindenis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/isacosta/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/suprb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yalozhkin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chandlervdw/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iamgarth/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_victa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/commadelimited/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/roybarberuk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/axel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vladarbatov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ffbel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/syropian/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ankitind/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/traneblow/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/flashmurphy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ChrisFarina78/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/baliomega/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/saschamt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jm_denis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/anoff/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kennyadr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chatyrko/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dingyi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mds/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/terryxlife/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aaroni/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kinday/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/prrstn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/eduardostuart/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dhilipsiva/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/GavicoInd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/baires/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rohixx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bigmancho/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/blakesimkins/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/leeiio/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tjrus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/uberschizo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kylefoundry/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/claudioguglieri/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ripplemdk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/exentrich/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jakemoore/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joaoedumedeiros/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/poormini/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tereshenkov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/keryilmaz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/haydn_woods/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rude/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/llun/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sgaurav_baghel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jamiebrittain/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/badlittleduck/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pifagor/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/agromov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/benefritz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/erwanhesry/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/diesellaws/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeremiaha/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/koridhandy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chaensel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andrewcohen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/smaczny/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gonzalorobaina/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nandini_m/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sydlawrence/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cdharrison/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tgerken/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lewisainslie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/charliecwaite/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/robbschiller/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/flexrs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mattdetails/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/raquelwilson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/karsh/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mrmartineau/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/opnsrce/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hgharrygo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/maximseshuk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/uxalex/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/samihah/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chanpory/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sharvin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/josemarques/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jefffis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/krystalfister/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lokesh_coder/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thedamianhdez/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dpmachado/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/funwatercat/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/timothycd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ivanfilipovbg/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/picard102/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marcobarbosa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/krasnoukhov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/g3d/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ademilter/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rickdt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/operatino/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bungiwan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hugomano/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/logorado/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dc_user/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/horaciobella/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/SlaapMe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/teeragit/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iqonicd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ilya_pestov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andrewarrow/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ssiskind/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/HenryHoffman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rdsaunders/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adamsxu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/curiousoffice/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/themadray/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michigangraham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kohette/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nickfratter/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/runningskull/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/madysondesigns/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brenton_clarke/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jennyshen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bradenhamm/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kurtinc/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/amanruzaini/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/coreyhaggard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Karimmove/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aaronalfred/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wtrsld/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jitachi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/therealmarvin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pmeissner/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ooomz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chacky14/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jesseddy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shanehudson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/akmur/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/IsaryAmairani/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/arthurholcombe1/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/boxmodel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ehsandiary/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/LucasPerdidao/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shalt0ni/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/swaplord/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kaelifa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/plbabin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/guillemboti/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/arindam_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/renbyrd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thiagovernetti/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jmillspaysbills/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mikemai2awesome/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jervo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mekal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sta1ex/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/robergd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/felipecsl/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andrea211087/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/garand/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dhooyenga/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/abovefunction/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pcridesagain/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/randomlies/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/BryanHorsey/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/heykenneth/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dahparra/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/allthingssmitty/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danvernon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/beweinreich/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/increase/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/falvarad/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alxndrustinov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/souuf/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/orkuncaylar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/AM_Kn2/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gearpixels/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bassamology/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vimarethomas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kosmar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/SULiik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mrjamesnoble/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/silvanmuhlemann/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shaneIxD/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nacho/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yigitpinarbasi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/buzzusborne/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aaronkwhite/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rmlewisuk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/giancarlon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nbirckel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/d_nny_m_cher/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sdidonato/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/atariboy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/abotap/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/karalek/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/psdesignuk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ludwiczakpawel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nemanjaivanovic/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/baluli/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ahmadajmi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vovkasolovev/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/samgrover/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/derienzo777/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jonathansimmons/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nelsonjoyce/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/S0ufi4n3/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xtopherpaul/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/oaktreemedia/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nateschulte/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/findingjenny/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/namankreative/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/antonyzotov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/we_social/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/leehambley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/solid_color/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/abelcabans/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mbilderbach/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kkusaa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jordyvdboom/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carlosgavina/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pechkinator/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vc27/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rdbannon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/croakx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/suribbles/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kerihenare/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/catadeleon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gcmorley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/duivvv/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/saschadroste/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/victorDubugras/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wintopia/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mattbilotti/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/taylorling/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/megdraws/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/meln1ks/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mahmoudmetwally/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Silveredge9/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/derekebradley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/happypeter1983/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/travis_arnold/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/artem_kostenko/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adobi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/daykiine/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alek_djuric/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scips/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/miguelmendes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/justinrhee/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alsobrooks/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fronx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mcflydesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/santi_urso/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/allfordesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stayuber/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bertboerland/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marosholly/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adamnac/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cynthiasavard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/muringa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danro/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hiemil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jackiesaik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iduuck/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/antjanus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aroon_sharma/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dshster/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thehacker/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michaelbrooksjr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ryanmclaughlin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/clubb3rry/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/taybenlor/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xripunov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/myastro/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adityasutomo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/digitalmaverick/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hjartstrorn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/itolmach/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vaughanmoffitt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/abdots/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/isnifer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sergeysafonov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/maz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scrapdnb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chrismj83/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vitorleal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sokaniwaal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/zaki3d/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/illyzoren/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mocabyte/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/osmanince/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/djsherman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/davidhemphill/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/waghner/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/necodymiconer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/praveen_vijaya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fabbrucci/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/travishines/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kuldarkalvik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Elt_n/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/phillapier/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/okseanjay/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/id835559/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kudretkeskin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/anjhero/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/duck4fuck/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scott_riley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/noufalibrahim/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/h1brd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/borges_marcos/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/devinhalladay/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ciaranr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stefooo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mikebeecham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tonymillion/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joshuaraichur/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/irae/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/petrangr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dmitriychuta/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/charliegann/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/arashmanteghi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adhamdannaway/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ainsleywagon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/svenlen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/faisalabid/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/beshur/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carlyson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dutchnadia/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/teddyzetterlund/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/samuelkraft/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aoimedia/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/toddrew/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/codepoet_ru/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/artvavs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/benoitboucart/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jomarmen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kolmarlopez/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/creartinc/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/homka/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gaborenton/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/robinclediere/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/maximsorokin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/plasticine/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/j2deme/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/peachananr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kapaluccio/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/de_ascanio/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rikas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dawidwu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/angelcreative/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rpatey/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/popey/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rehatkathuria/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/the_purplebunny/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/1markiz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ajaxy_ru/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brenmurrell/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dudestein/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/oskarlevinson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/victorstuber/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nehfy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vicivadeline/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/leandrovaranda/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scottgallant/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/victor_haydin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sawrb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ryhanhassan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/amayvs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/a_brixen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/karolkrakowiak_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/herkulano/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/geran7/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cggaurav/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chris_witko/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lososina/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/polarity/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mattlat/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brandonburke/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/constantx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/teylorfeliz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/craigelimeliah/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rachelreveley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/reabo101/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rahmeen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ky/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rickyyean/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/j04ntoh/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/spbroma/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sebashton/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jpenico/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/francis_vega/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/oktayelipek/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kikillo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fabbianz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/larrygerard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/BroumiYoussef/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/0therplanet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mbilalsiddique1/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ionuss/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/grrr_nl/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/liminha/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rawdiggie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ryandownie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sethlouey/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pixage/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/arpitnj/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/switmer777/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/josevnclch/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kanickairaj/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/puzik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tbakdesigns/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/besbujupi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/supjoey/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lowie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/linkibol/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/balintorosz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/imcoding/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/agustincruiz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gusoto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thomasschrijer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/superoutman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kalmerrautam/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gabrielizalo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gojeanyn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/davidbaldie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_vojto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/laurengray/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jydesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mymyboy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nellleo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marciotoledo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ninjad3m0/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/to_soham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hasslunsford/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/muridrahhal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/levisan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/grahamkennery/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lepetitogre/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/antongenkin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nessoila/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/amandabuzard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/safrankov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cocolero/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dss49/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/matt3224/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bluesix/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/quailandquasar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/AlbertoCococi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lepinski/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sementiy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mhudobivnik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thibaut_re/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/olgary/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shojberg/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mtolokonnikov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bereto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/naupintos/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wegotvices/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xadhix/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/macxim/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rodnylobos/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/madcampos/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/madebyvadim/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bartoszdawydzik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/supervova/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/markretzloff/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vonachoo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/darylws/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stevedesigner/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mylesb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/herbigt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/depaulawagner/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/geshan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gizmeedevil1991/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_scottburgess/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lisovsky/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/davidsasda/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/artd_sign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/YoungCutlass/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mgonto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/itstotallyamy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/victorquinn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/osmond/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/oksanafrewer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/zauerkraut/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iamkeithmason/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nitinhayaran/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lmjabreu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mandalareopens/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thinkleft/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ponchomendivil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/juamperro/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brunodesign1206/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/caseycavanagh/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/luxe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dotgridline/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/spedwig/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/madewulf/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mattsapii/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/helderleal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chrisstumph/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jayphen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nsamoylov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chrisvanderkooi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/justme_timothyg/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/otozk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/prinzadi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gu5taf/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cyril_gaillard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/d_kobelyatsky/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/daniloc/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nwdsha/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/romanbulah/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/skkirilov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dvdwinden/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dannol/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thekevinjones/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jwalter14/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/timgthomas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/buddhasource/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/uxpiper/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thatonetommy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/diansigitp/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adrienths/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/klimmka/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gkaam/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/derekcramer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jennyyo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nerrsoft/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xalionmalik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/edhenderson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/keyuri85/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/roxanejammet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kimcool/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/edkf/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/matkins/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alessandroribe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jacksonlatka/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lebronjennan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kostaspt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/karlkanall/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/moynihan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danpliego/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/saulihirvi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wesleytrankin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fjaguero/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bowbrick/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mashaaaaal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yassiryahya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dparrelli/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fotomagin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aka_james/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/denisepires/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iqbalperkasa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/martinansty/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jarsen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/r_oy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/justinrob/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gabrielrosser/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/malgordon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carlfairclough/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michaelabehsera/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pierrestoffe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/enjoythetau/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/loganjlambert/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rpeezy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/coreyginnivan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michalhron/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/msveet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lingeswaran/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kolsvein/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/peter576/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/reideiredale/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joeymurdah/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/raphaelnikson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mvdheuvel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/maxlinderman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jimmuirhead/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/begreative/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/frankiefreesbie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/robturlinckx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Talbi_ConSept/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/longlivemyword/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vanchesz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/maiklam/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hermanobrother/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rez___a/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gregsqueeb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/greenbes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_ragzor/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/anthonysukow/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fluidbrush/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dactrtr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jehnglynn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bergmartin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hugocornejo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_kkga/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dzantievm/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sawalazar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sovesove/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jonsgotwood/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/byryan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vytautas_a/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mizhgan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cicerobr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nilshelmersson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/d33pthought/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/davecraige/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nckjrvs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alexandermayes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jcubic/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/craigrcoles/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bagawarman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rob_thomas10/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cofla/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/maikelk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rtgibbons/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/russell_baylis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mhesslow/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/codysanfilippo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/webtanya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/madebybrenton/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dcalonaci/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/perfectflow/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jjsiii/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/saarabpreet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kumarrajan12123/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iamsteffen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/themikenagle/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ceekaytweet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/larrybolt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/conspirator/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dallasbpeters/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/n3dmax/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/terpimost/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/byrnecore/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/j_drake_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/calebjoyce/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/russoedu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hoangloi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tobysaxon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gofrasdesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dimaposnyy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tjisousa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/okandungel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/billyroshan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/oskamaya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/motionthinks/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/knilob/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ashocka18/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marrimo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bartjo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/omnizya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ernestsemerda/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andreas_pr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/edgarchris99/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thomasgeisen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gseguin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joannefournier/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/demersdesigns/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adammarsbar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nasirwd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/n_tassone/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/javorszky/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/themrdave/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yecidsm/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nicollerich/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/canapud/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nicoleglynn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/judzhin_miles/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/designervzm/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kianoshp/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/evandrix/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alterchuca/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dhrubo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ma_tiax/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ssbb_me/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dorphern/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mauriolg/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bruno_mart/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mactopus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/the_winslet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joemdesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/Shriiiiimp/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jacobbennett/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nfedoroff/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iamglimy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/allagringaus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aiiaiiaii/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/olaolusoga/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/buryaknick/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wim1k/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nicklacke/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/a1chapone/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/steynviljoen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/strikewan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ryankirkman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andrewabogado/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/doooon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jagan123/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ariffsetiawan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/elenadissi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mwarkentin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thierrymeier_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/r_garcia/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dmackerman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/borantula/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/konus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/spacewood_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ryuchi311/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/evanshajed/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tristanlegros/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shoaib253/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aislinnkelly/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/okcoker/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/timpetricola/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sunshinedgirl/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chadami/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aleclarsoniv/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nomidesigns/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/petebernardo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scottiedude/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/imsoper/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/imammuht/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/benjamin_knight/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nepdud/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joki4/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lanceguyatt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bboy1895/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/amywebbb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rweve/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/haruintesettden/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ricburton/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nelshd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/batsirai/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/primozcigler/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jffgrdnr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/8d3k/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/geneseleznev/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/al_li/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/souperphly/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mslarkina/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/2fockus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cdavis565/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xiel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/turkutuuli/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/uxward/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lebinoclard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gauravjassal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/davidmerrique/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mdsisto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andrewofficer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kojourin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dnirmal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kevka/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mr_shiznit/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aluisio_azevedo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cloudstudio/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danvierich/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alexivanichkin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fran_mchamy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/perretmagali/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/betraydan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cadikkara/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/matbeedotcom/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeremyworboys/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bpartridge/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michaelkoper/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/silv3rgvn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alevizio/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/johnsmithagency/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lawlbwoy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vitor376/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/desastrozo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thimo_cz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jasonmarkjones/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lhausermann/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xravil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/guischmitt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vigobronx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/panghal0/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/miguelkooreman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/surgeonist/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/christianoliff/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/caspergrl/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iamkarna/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ipavelek/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pierre_nel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/y2graphic/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sterlingrules/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/elbuscainfo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bennyjien/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stushona/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/estebanuribe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/embrcecreations/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danillos/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/elliotlewis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/charlesrpratt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vladyn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/emmeffess/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carlosblanco_eu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/leonfedotov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rangafangs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chris_frees/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tgormtx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bryan_topham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jpscribbles/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mighty55/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carbontwelve/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/isaacfifth/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/iamjdeleon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/snowwrite/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/barputro/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/drewbyreese/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sachacorazzi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bistrianiosip/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/magoo04/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pehamondello/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yayteejay/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/a_harris88/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/algunsanabria/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/zforrester/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ovall/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carlosjgsousa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/geobikas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ah_lice/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/looneydoodle/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nerdgr8/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ddggccaa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/zackeeler/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/normanbox/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/el_fuertisimo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ismail_biltagi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/juangomezw/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jnmnrd/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/patrickcoombe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ryanjohnson_me/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/markolschesky/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeffgolenski/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kvasnic/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gauchomatt/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/afusinatto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kevinoh/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/okansurreel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adamawesomeface/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/emileboudeling/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/arishi_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/juanmamartinez/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wikiziner/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danthms/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mkginfo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/terrorpixel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/curiousonaut/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/prheemo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michaelcolenso/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/foczzi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/martip07/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thaodang17/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/johncafazza/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/robinlayfield/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/franciscoamk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/abdulhyeuk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marklamb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/edobene/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andresenfredrik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mikaeljorhult/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chrisslowik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vinciarts/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/meelford/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/elliotnolten/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yehudab/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vijaykarthik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bfrohs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/josep_martins/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/attacks/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sur4dye/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tumski/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/instalox/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mangosango/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/paulfarino/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kazaky999/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kiwiupover/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nvkznemo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tom_even/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ratbus/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/woodsman001/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joshmedeski/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thewillbeard/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/psaikali/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joe_black/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aleinadsays/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marcusgorillius/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hota_v/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jghyllebert/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shinze/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/janpalounek/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeremiespoken/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/her_ruu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dansowter/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/felipeapiress/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/magugzbrand2d/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/posterjob/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nathalie_fs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bobbytwoshoes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dreizle/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeremymouton/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/elisabethkjaer/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/notbadart/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mohanrohith/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jlsolerdeltoro/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/itskawsar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/slowspock/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/zvchkelly/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wiljanslofstra/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/craighenneberry/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/trubeatto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/juaumlol/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/samscouto/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/BenouarradeM/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gipsy_raf/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/netonet_il/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/arkokoley/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/itsajimithing/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/smalonso/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/victordeanda/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_dwite_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/richardgarretts/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gregrwilkinson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/anatolinicolae/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lu4sh1i/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stefanotirloni/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ostirbu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/darcystonge/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/naitanamoreno/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/michaelcomiskey/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/adhiardana/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marcomano_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/davidcazalis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/falconerie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gregkilian/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bcrad/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bolzanmarco/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/low_res/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vlajki/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/petar_prog/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jonkspr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/akmalfikri/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mfacchinello/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/atanism/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/harry_sistalam/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/murrayswift/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bobwassermann/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gavr1l0/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/madshensel/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mr_subtle/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/deviljho_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/salimianoff/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joetruesdell/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/twittypork/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/airskylar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dnezkumar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dgajjar/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cherif_b/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/salvafc/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/louis_currie/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/deeenright/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cybind/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/eyronn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vickyshits/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sweetdelisa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/cboller1/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andresdjasso/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/melvindidit/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andysolomon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thaisselenator_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lvovenok/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/giuliusa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/belyaev_rs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/overcloacked/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kamal_chaneman/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/incubo82/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hellofeverrrr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mhaligowski/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sunlandictwin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bu7921/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/andytlaw/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeremery/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/finchjke/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/manigm/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/umurgdk/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/scottfeltham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ganserene/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mutu_krish/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jodytaggart/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ntfblog/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tanveerrao/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hfalucas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alxleroydeval/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kucingbelang4/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bargaorobalo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/colgruv/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stalewine/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kylefrost/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/baumannzone/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/angelcolberg/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sachingawas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jjshaw14/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ramanathan_pdy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/johndezember/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nilshoenson/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brandonmorreale/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nutzumi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/brandonflatsoda/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sergeyalmone/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/klefue/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kirangopal/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/baumann_alex/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/matthewkay_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jay_wilburn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shesgared/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/apriendeau/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/johnriordan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wake_gs/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aleksitappura/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/emsgulam/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xilantra/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/imomenui/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sircalebgrove/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/newbrushes/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hsinyo23/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/m4rio/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/katiemdaly/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/s4f1/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ecommerceil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marlinjayakody/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/swooshycueb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sangdth/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/coderdiaz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bluefx_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vivekprvr/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sasha_shestakov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/eugeneeweb/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dgclegg/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/n1ght_coder/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dixchen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/blakehawksworth/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/trueblood_33/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hai_ninh_nguyen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marclgonzales/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/yesmeck/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stephcoue/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/doronmalki/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ruehldesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/anasnakawa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kijanmaharjan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/wearesavas/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stefvdham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tweetubhai/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alecarpentier/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/fiterik/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/antonyryndya/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/d00maz/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/theonlyzeke/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/missaaamy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/carlosm/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/manekenthe/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/reetajayendra/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jeremyshimko/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/justinrgraham/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/stefanozoffoli/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/overra/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mrebay007/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/shvelo96/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/pyronite/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/thedjpetersen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/rtyukmaev/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_williamguerra/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/albertaugustin/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vikashpathak18/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kevinjohndayy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vj_demien/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/colirpixoil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/goddardlewis/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/laasli/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jqiuss/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/heycamtaylor/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nastya_mane/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mastermindesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ccinojasso1/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/nyancecom/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sandywoodruff/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/bighanddesign/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sbtransparent/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aviddayentonbay/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/richwild/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kaysix_dizzy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/tur8le/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/seyedhossein1/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/privetwagner/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/emmandenn/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dev_essentials/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jmfsocial/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_yardenoon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mateaodviteza/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/weavermedia/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mufaddal_mw/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hafeeskhan/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ashernatali/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sulaqo/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/eddiechen/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/josecarlospsh/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vm_f/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/enricocicconi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/danmartin70/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/gmourier/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/donjain/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mrxloka/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/_pedropinho/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/eitarafa/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/oscarowusu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ralph_lam/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/panchajanyag/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/woodydotmx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/jerrybai1907/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/marshallchen_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/xamorep/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aio___/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/chaabane_wail/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/txcx/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/akashsharma39/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/falling_soul/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sainraja/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mugukamil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/johannesneu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/markwienands/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/karthipanraj/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/balakayuriy/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/alan_zhang_/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/layerssss/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/kaspernordkvist/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/mirfanqureshi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/hanna_smi/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/VMilescu/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/aeon56/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/m_kalibry/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/sreejithexp/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dicesales/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/dhoot_amit/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/smenov/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/lonesomelemon/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vladimirdevic/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/joelcipriano/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/haligaliharun/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/buleswapnil/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/serefka/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/ifarafonow/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/vikasvinfotech/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/urrutimeoli/128.jpg", + "https://s3.amazonaws.com/uifaces/faces/twitter/areandacom/128.jpg" +]; + +},{}],306:[function(require,module,exports){ +module["exports"] = [ + "com", + "biz", + "info", + "name", + "net", + "org" +]; + +},{}],307:[function(require,module,exports){ +module["exports"] = [ + "example.org", + "example.com", + "example.net" +]; + +},{}],308:[function(require,module,exports){ +arguments[4][174][0].apply(exports,arguments) +},{"dup":174}],309:[function(require,module,exports){ +var internet = {}; +module['exports'] = internet; +internet.free_email = require("./free_email"); +internet.example_email = require("./example_email"); +internet.domain_suffix = require("./domain_suffix"); +internet.avatar_uri = require("./avatar_uri"); + +},{"./avatar_uri":305,"./domain_suffix":306,"./example_email":307,"./free_email":308}],310:[function(require,module,exports){ +arguments[4][138][0].apply(exports,arguments) +},{"./supplemental":311,"./words":312,"dup":138}],311:[function(require,module,exports){ +arguments[4][139][0].apply(exports,arguments) +},{"dup":139}],312:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],313:[function(require,module,exports){ +module["exports"] = [ + "Aaliyah", + "Aaron", + "Abagail", + "Abbey", + "Abbie", + "Abbigail", + "Abby", + "Abdiel", + "Abdul", + "Abdullah", + "Abe", + "Abel", + "Abelardo", + "Abigail", + "Abigale", + "Abigayle", + "Abner", + "Abraham", + "Ada", + "Adah", + "Adalberto", + "Adaline", + "Adam", + "Adan", + "Addie", + "Addison", + "Adela", + "Adelbert", + "Adele", + "Adelia", + "Adeline", + "Adell", + "Adella", + "Adelle", + "Aditya", + "Adolf", + "Adolfo", + "Adolph", + "Adolphus", + "Adonis", + "Adrain", + "Adrian", + "Adriana", + "Adrianna", + "Adriel", + "Adrien", + "Adrienne", + "Afton", + "Aglae", + "Agnes", + "Agustin", + "Agustina", + "Ahmad", + "Ahmed", + "Aida", + "Aidan", + "Aiden", + "Aileen", + "Aimee", + "Aisha", + "Aiyana", + "Akeem", + "Al", + "Alaina", + "Alan", + "Alana", + "Alanis", + "Alanna", + "Alayna", + "Alba", + "Albert", + "Alberta", + "Albertha", + "Alberto", + "Albin", + "Albina", + "Alda", + "Alden", + "Alec", + "Aleen", + "Alejandra", + "Alejandrin", + "Alek", + "Alena", + "Alene", + "Alessandra", + "Alessandro", + "Alessia", + "Aletha", + "Alex", + "Alexa", + "Alexander", + "Alexandra", + "Alexandre", + "Alexandrea", + "Alexandria", + "Alexandrine", + "Alexandro", + "Alexane", + "Alexanne", + "Alexie", + "Alexis", + "Alexys", + "Alexzander", + "Alf", + "Alfonso", + "Alfonzo", + "Alford", + "Alfred", + "Alfreda", + "Alfredo", + "Ali", + "Alia", + "Alice", + "Alicia", + "Alisa", + "Alisha", + "Alison", + "Alivia", + "Aliya", + "Aliyah", + "Aliza", + "Alize", + "Allan", + "Allen", + "Allene", + "Allie", + "Allison", + "Ally", + "Alphonso", + "Alta", + "Althea", + "Alva", + "Alvah", + "Alvena", + "Alvera", + "Alverta", + "Alvina", + "Alvis", + "Alyce", + "Alycia", + "Alysa", + "Alysha", + "Alyson", + "Alysson", + "Amalia", + "Amanda", + "Amani", + "Amara", + "Amari", + "Amaya", + "Amber", + "Ambrose", + "Amelia", + "Amelie", + "Amely", + "America", + "Americo", + "Amie", + "Amina", + "Amir", + "Amira", + "Amiya", + "Amos", + "Amparo", + "Amy", + "Amya", + "Ana", + "Anabel", + "Anabelle", + "Anahi", + "Anais", + "Anastacio", + "Anastasia", + "Anderson", + "Andre", + "Andreane", + "Andreanne", + "Andres", + "Andrew", + "Andy", + "Angel", + "Angela", + "Angelica", + "Angelina", + "Angeline", + "Angelita", + "Angelo", + "Angie", + "Angus", + "Anibal", + "Anika", + "Anissa", + "Anita", + "Aniya", + "Aniyah", + "Anjali", + "Anna", + "Annabel", + "Annabell", + "Annabelle", + "Annalise", + "Annamae", + "Annamarie", + "Anne", + "Annetta", + "Annette", + "Annie", + "Ansel", + "Ansley", + "Anthony", + "Antoinette", + "Antone", + "Antonetta", + "Antonette", + "Antonia", + "Antonietta", + "Antonina", + "Antonio", + "Antwan", + "Antwon", + "Anya", + "April", + "Ara", + "Araceli", + "Aracely", + "Arch", + "Archibald", + "Ardella", + "Arden", + "Ardith", + "Arely", + "Ari", + "Ariane", + "Arianna", + "Aric", + "Ariel", + "Arielle", + "Arjun", + "Arlene", + "Arlie", + "Arlo", + "Armand", + "Armando", + "Armani", + "Arnaldo", + "Arne", + "Arno", + "Arnold", + "Arnoldo", + "Arnulfo", + "Aron", + "Art", + "Arthur", + "Arturo", + "Arvel", + "Arvid", + "Arvilla", + "Aryanna", + "Asa", + "Asha", + "Ashlee", + "Ashleigh", + "Ashley", + "Ashly", + "Ashlynn", + "Ashton", + "Ashtyn", + "Asia", + "Assunta", + "Astrid", + "Athena", + "Aubree", + "Aubrey", + "Audie", + "Audra", + "Audreanne", + "Audrey", + "August", + "Augusta", + "Augustine", + "Augustus", + "Aurelia", + "Aurelie", + "Aurelio", + "Aurore", + "Austen", + "Austin", + "Austyn", + "Autumn", + "Ava", + "Avery", + "Avis", + "Axel", + "Ayana", + "Ayden", + "Ayla", + "Aylin", + "Baby", + "Bailee", + "Bailey", + "Barbara", + "Barney", + "Baron", + "Barrett", + "Barry", + "Bart", + "Bartholome", + "Barton", + "Baylee", + "Beatrice", + "Beau", + "Beaulah", + "Bell", + "Bella", + "Belle", + "Ben", + "Benedict", + "Benjamin", + "Bennett", + "Bennie", + "Benny", + "Benton", + "Berenice", + "Bernadette", + "Bernadine", + "Bernard", + "Bernardo", + "Berneice", + "Bernhard", + "Bernice", + "Bernie", + "Berniece", + "Bernita", + "Berry", + "Bert", + "Berta", + "Bertha", + "Bertram", + "Bertrand", + "Beryl", + "Bessie", + "Beth", + "Bethany", + "Bethel", + "Betsy", + "Bette", + "Bettie", + "Betty", + "Bettye", + "Beulah", + "Beverly", + "Bianka", + "Bill", + "Billie", + "Billy", + "Birdie", + "Blair", + "Blaise", + "Blake", + "Blanca", + "Blanche", + "Blaze", + "Bo", + "Bobbie", + "Bobby", + "Bonita", + "Bonnie", + "Boris", + "Boyd", + "Brad", + "Braden", + "Bradford", + "Bradley", + "Bradly", + "Brady", + "Braeden", + "Brain", + "Brandi", + "Brando", + "Brandon", + "Brandt", + "Brandy", + "Brandyn", + "Brannon", + "Branson", + "Brant", + "Braulio", + "Braxton", + "Brayan", + "Breana", + "Breanna", + "Breanne", + "Brenda", + "Brendan", + "Brenden", + "Brendon", + "Brenna", + "Brennan", + "Brennon", + "Brent", + "Bret", + "Brett", + "Bria", + "Brian", + "Briana", + "Brianne", + "Brice", + "Bridget", + "Bridgette", + "Bridie", + "Brielle", + "Brigitte", + "Brionna", + "Brisa", + "Britney", + "Brittany", + "Brock", + "Broderick", + "Brody", + "Brook", + "Brooke", + "Brooklyn", + "Brooks", + "Brown", + "Bruce", + "Bryana", + "Bryce", + "Brycen", + "Bryon", + "Buck", + "Bud", + "Buddy", + "Buford", + "Bulah", + "Burdette", + "Burley", + "Burnice", + "Buster", + "Cade", + "Caden", + "Caesar", + "Caitlyn", + "Cale", + "Caleb", + "Caleigh", + "Cali", + "Calista", + "Callie", + "Camden", + "Cameron", + "Camila", + "Camilla", + "Camille", + "Camren", + "Camron", + "Camryn", + "Camylle", + "Candace", + "Candelario", + "Candice", + "Candida", + "Candido", + "Cara", + "Carey", + "Carissa", + "Carlee", + "Carleton", + "Carley", + "Carli", + "Carlie", + "Carlo", + "Carlos", + "Carlotta", + "Carmel", + "Carmela", + "Carmella", + "Carmelo", + "Carmen", + "Carmine", + "Carol", + "Carolanne", + "Carole", + "Carolina", + "Caroline", + "Carolyn", + "Carolyne", + "Carrie", + "Carroll", + "Carson", + "Carter", + "Cary", + "Casandra", + "Casey", + "Casimer", + "Casimir", + "Casper", + "Cassandra", + "Cassandre", + "Cassidy", + "Cassie", + "Catalina", + "Caterina", + "Catharine", + "Catherine", + "Cathrine", + "Cathryn", + "Cathy", + "Cayla", + "Ceasar", + "Cecelia", + "Cecil", + "Cecile", + "Cecilia", + "Cedrick", + "Celestine", + "Celestino", + "Celia", + "Celine", + "Cesar", + "Chad", + "Chadd", + "Chadrick", + "Chaim", + "Chance", + "Chandler", + "Chanel", + "Chanelle", + "Charity", + "Charlene", + "Charles", + "Charley", + "Charlie", + "Charlotte", + "Chase", + "Chasity", + "Chauncey", + "Chaya", + "Chaz", + "Chelsea", + "Chelsey", + "Chelsie", + "Chesley", + "Chester", + "Chet", + "Cheyanne", + "Cheyenne", + "Chloe", + "Chris", + "Christ", + "Christa", + "Christelle", + "Christian", + "Christiana", + "Christina", + "Christine", + "Christop", + "Christophe", + "Christopher", + "Christy", + "Chyna", + "Ciara", + "Cicero", + "Cielo", + "Cierra", + "Cindy", + "Citlalli", + "Clair", + "Claire", + "Clara", + "Clarabelle", + "Clare", + "Clarissa", + "Clark", + "Claud", + "Claude", + "Claudia", + "Claudie", + "Claudine", + "Clay", + "Clemens", + "Clement", + "Clementina", + "Clementine", + "Clemmie", + "Cleo", + "Cleora", + "Cleta", + "Cletus", + "Cleve", + "Cleveland", + "Clifford", + "Clifton", + "Clint", + "Clinton", + "Clotilde", + "Clovis", + "Cloyd", + "Clyde", + "Coby", + "Cody", + "Colby", + "Cole", + "Coleman", + "Colin", + "Colleen", + "Collin", + "Colt", + "Colten", + "Colton", + "Columbus", + "Concepcion", + "Conner", + "Connie", + "Connor", + "Conor", + "Conrad", + "Constance", + "Constantin", + "Consuelo", + "Cooper", + "Cora", + "Coralie", + "Corbin", + "Cordelia", + "Cordell", + "Cordia", + "Cordie", + "Corene", + "Corine", + "Cornelius", + "Cornell", + "Corrine", + "Cortez", + "Cortney", + "Cory", + "Coty", + "Courtney", + "Coy", + "Craig", + "Crawford", + "Creola", + "Cristal", + "Cristian", + "Cristina", + "Cristobal", + "Cristopher", + "Cruz", + "Crystal", + "Crystel", + "Cullen", + "Curt", + "Curtis", + "Cydney", + "Cynthia", + "Cyril", + "Cyrus", + "Dagmar", + "Dahlia", + "Daija", + "Daisha", + "Daisy", + "Dakota", + "Dale", + "Dallas", + "Dallin", + "Dalton", + "Damaris", + "Dameon", + "Damian", + "Damien", + "Damion", + "Damon", + "Dan", + "Dana", + "Dandre", + "Dane", + "D'angelo", + "Dangelo", + "Danial", + "Daniela", + "Daniella", + "Danielle", + "Danika", + "Dannie", + "Danny", + "Dante", + "Danyka", + "Daphne", + "Daphnee", + "Daphney", + "Darby", + "Daren", + "Darian", + "Dariana", + "Darien", + "Dario", + "Darion", + "Darius", + "Darlene", + "Daron", + "Darrel", + "Darrell", + "Darren", + "Darrick", + "Darrin", + "Darrion", + "Darron", + "Darryl", + "Darwin", + "Daryl", + "Dashawn", + "Dasia", + "Dave", + "David", + "Davin", + "Davion", + "Davon", + "Davonte", + "Dawn", + "Dawson", + "Dax", + "Dayana", + "Dayna", + "Dayne", + "Dayton", + "Dean", + "Deangelo", + "Deanna", + "Deborah", + "Declan", + "Dedric", + "Dedrick", + "Dee", + "Deion", + "Deja", + "Dejah", + "Dejon", + "Dejuan", + "Delaney", + "Delbert", + "Delfina", + "Delia", + "Delilah", + "Dell", + "Della", + "Delmer", + "Delores", + "Delpha", + "Delphia", + "Delphine", + "Delta", + "Demarco", + "Demarcus", + "Demario", + "Demetris", + "Demetrius", + "Demond", + "Dena", + "Denis", + "Dennis", + "Deon", + "Deondre", + "Deontae", + "Deonte", + "Dereck", + "Derek", + "Derick", + "Deron", + "Derrick", + "Deshaun", + "Deshawn", + "Desiree", + "Desmond", + "Dessie", + "Destany", + "Destin", + "Destinee", + "Destiney", + "Destini", + "Destiny", + "Devan", + "Devante", + "Deven", + "Devin", + "Devon", + "Devonte", + "Devyn", + "Dewayne", + "Dewitt", + "Dexter", + "Diamond", + "Diana", + "Dianna", + "Diego", + "Dillan", + "Dillon", + "Dimitri", + "Dina", + "Dino", + "Dion", + "Dixie", + "Dock", + "Dolly", + "Dolores", + "Domenic", + "Domenica", + "Domenick", + "Domenico", + "Domingo", + "Dominic", + "Dominique", + "Don", + "Donald", + "Donato", + "Donavon", + "Donna", + "Donnell", + "Donnie", + "Donny", + "Dora", + "Dorcas", + "Dorian", + "Doris", + "Dorothea", + "Dorothy", + "Dorris", + "Dortha", + "Dorthy", + "Doug", + "Douglas", + "Dovie", + "Doyle", + "Drake", + "Drew", + "Duane", + "Dudley", + "Dulce", + "Duncan", + "Durward", + "Dustin", + "Dusty", + "Dwight", + "Dylan", + "Earl", + "Earlene", + "Earline", + "Earnest", + "Earnestine", + "Easter", + "Easton", + "Ebba", + "Ebony", + "Ed", + "Eda", + "Edd", + "Eddie", + "Eden", + "Edgar", + "Edgardo", + "Edison", + "Edmond", + "Edmund", + "Edna", + "Eduardo", + "Edward", + "Edwardo", + "Edwin", + "Edwina", + "Edyth", + "Edythe", + "Effie", + "Efrain", + "Efren", + "Eileen", + "Einar", + "Eino", + "Eladio", + "Elaina", + "Elbert", + "Elda", + "Eldon", + "Eldora", + "Eldred", + "Eldridge", + "Eleanora", + "Eleanore", + "Eleazar", + "Electa", + "Elena", + "Elenor", + "Elenora", + "Eleonore", + "Elfrieda", + "Eli", + "Elian", + "Eliane", + "Elias", + "Eliezer", + "Elijah", + "Elinor", + "Elinore", + "Elisa", + "Elisabeth", + "Elise", + "Eliseo", + "Elisha", + "Elissa", + "Eliza", + "Elizabeth", + "Ella", + "Ellen", + "Ellie", + "Elliot", + "Elliott", + "Ellis", + "Ellsworth", + "Elmer", + "Elmira", + "Elmo", + "Elmore", + "Elna", + "Elnora", + "Elody", + "Eloisa", + "Eloise", + "Elouise", + "Eloy", + "Elroy", + "Elsa", + "Else", + "Elsie", + "Elta", + "Elton", + "Elva", + "Elvera", + "Elvie", + "Elvis", + "Elwin", + "Elwyn", + "Elyse", + "Elyssa", + "Elza", + "Emanuel", + "Emelia", + "Emelie", + "Emely", + "Emerald", + "Emerson", + "Emery", + "Emie", + "Emil", + "Emile", + "Emilia", + "Emiliano", + "Emilie", + "Emilio", + "Emily", + "Emma", + "Emmalee", + "Emmanuel", + "Emmanuelle", + "Emmet", + "Emmett", + "Emmie", + "Emmitt", + "Emmy", + "Emory", + "Ena", + "Enid", + "Enoch", + "Enola", + "Enos", + "Enrico", + "Enrique", + "Ephraim", + "Era", + "Eriberto", + "Eric", + "Erica", + "Erich", + "Erick", + "Ericka", + "Erik", + "Erika", + "Erin", + "Erling", + "Erna", + "Ernest", + "Ernestina", + "Ernestine", + "Ernesto", + "Ernie", + "Ervin", + "Erwin", + "Eryn", + "Esmeralda", + "Esperanza", + "Esta", + "Esteban", + "Estefania", + "Estel", + "Estell", + "Estella", + "Estelle", + "Estevan", + "Esther", + "Estrella", + "Etha", + "Ethan", + "Ethel", + "Ethelyn", + "Ethyl", + "Ettie", + "Eudora", + "Eugene", + "Eugenia", + "Eula", + "Eulah", + "Eulalia", + "Euna", + "Eunice", + "Eusebio", + "Eva", + "Evalyn", + "Evan", + "Evangeline", + "Evans", + "Eve", + "Eveline", + "Evelyn", + "Everardo", + "Everett", + "Everette", + "Evert", + "Evie", + "Ewald", + "Ewell", + "Ezekiel", + "Ezequiel", + "Ezra", + "Fabian", + "Fabiola", + "Fae", + "Fannie", + "Fanny", + "Fatima", + "Faustino", + "Fausto", + "Favian", + "Fay", + "Faye", + "Federico", + "Felicia", + "Felicita", + "Felicity", + "Felipa", + "Felipe", + "Felix", + "Felton", + "Fermin", + "Fern", + "Fernando", + "Ferne", + "Fidel", + "Filiberto", + "Filomena", + "Finn", + "Fiona", + "Flavie", + "Flavio", + "Fleta", + "Fletcher", + "Flo", + "Florence", + "Florencio", + "Florian", + "Florida", + "Florine", + "Flossie", + "Floy", + "Floyd", + "Ford", + "Forest", + "Forrest", + "Foster", + "Frances", + "Francesca", + "Francesco", + "Francis", + "Francisca", + "Francisco", + "Franco", + "Frank", + "Frankie", + "Franz", + "Fred", + "Freda", + "Freddie", + "Freddy", + "Frederic", + "Frederick", + "Frederik", + "Frederique", + "Fredrick", + "Fredy", + "Freeda", + "Freeman", + "Freida", + "Frida", + "Frieda", + "Friedrich", + "Fritz", + "Furman", + "Gabe", + "Gabriel", + "Gabriella", + "Gabrielle", + "Gaetano", + "Gage", + "Gail", + "Gardner", + "Garett", + "Garfield", + "Garland", + "Garnet", + "Garnett", + "Garret", + "Garrett", + "Garrick", + "Garrison", + "Garry", + "Garth", + "Gaston", + "Gavin", + "Gay", + "Gayle", + "Gaylord", + "Gene", + "General", + "Genesis", + "Genevieve", + "Gennaro", + "Genoveva", + "Geo", + "Geoffrey", + "George", + "Georgette", + "Georgiana", + "Georgianna", + "Geovanni", + "Geovanny", + "Geovany", + "Gerald", + "Geraldine", + "Gerard", + "Gerardo", + "Gerda", + "Gerhard", + "Germaine", + "German", + "Gerry", + "Gerson", + "Gertrude", + "Gia", + "Gianni", + "Gideon", + "Gilbert", + "Gilberto", + "Gilda", + "Giles", + "Gillian", + "Gina", + "Gino", + "Giovani", + "Giovanna", + "Giovanni", + "Giovanny", + "Gisselle", + "Giuseppe", + "Gladyce", + "Gladys", + "Glen", + "Glenda", + "Glenna", + "Glennie", + "Gloria", + "Godfrey", + "Golda", + "Golden", + "Gonzalo", + "Gordon", + "Grace", + "Gracie", + "Graciela", + "Grady", + "Graham", + "Grant", + "Granville", + "Grayce", + "Grayson", + "Green", + "Greg", + "Gregg", + "Gregoria", + "Gregorio", + "Gregory", + "Greta", + "Gretchen", + "Greyson", + "Griffin", + "Grover", + "Guadalupe", + "Gudrun", + "Guido", + "Guillermo", + "Guiseppe", + "Gunnar", + "Gunner", + "Gus", + "Gussie", + "Gust", + "Gustave", + "Guy", + "Gwen", + "Gwendolyn", + "Hadley", + "Hailee", + "Hailey", + "Hailie", + "Hal", + "Haleigh", + "Haley", + "Halie", + "Halle", + "Hallie", + "Hank", + "Hanna", + "Hannah", + "Hans", + "Hardy", + "Harley", + "Harmon", + "Harmony", + "Harold", + "Harrison", + "Harry", + "Harvey", + "Haskell", + "Hassan", + "Hassie", + "Hattie", + "Haven", + "Hayden", + "Haylee", + "Hayley", + "Haylie", + "Hazel", + "Hazle", + "Heath", + "Heather", + "Heaven", + "Heber", + "Hector", + "Heidi", + "Helen", + "Helena", + "Helene", + "Helga", + "Hellen", + "Helmer", + "Heloise", + "Henderson", + "Henri", + "Henriette", + "Henry", + "Herbert", + "Herman", + "Hermann", + "Hermina", + "Herminia", + "Herminio", + "Hershel", + "Herta", + "Hertha", + "Hester", + "Hettie", + "Hilario", + "Hilbert", + "Hilda", + "Hildegard", + "Hillard", + "Hillary", + "Hilma", + "Hilton", + "Hipolito", + "Hiram", + "Hobart", + "Holden", + "Hollie", + "Hollis", + "Holly", + "Hope", + "Horace", + "Horacio", + "Hortense", + "Hosea", + "Houston", + "Howard", + "Howell", + "Hoyt", + "Hubert", + "Hudson", + "Hugh", + "Hulda", + "Humberto", + "Hunter", + "Hyman", + "Ian", + "Ibrahim", + "Icie", + "Ida", + "Idell", + "Idella", + "Ignacio", + "Ignatius", + "Ike", + "Ila", + "Ilene", + "Iliana", + "Ima", + "Imani", + "Imelda", + "Immanuel", + "Imogene", + "Ines", + "Irma", + "Irving", + "Irwin", + "Isaac", + "Isabel", + "Isabell", + "Isabella", + "Isabelle", + "Isac", + "Isadore", + "Isai", + "Isaiah", + "Isaias", + "Isidro", + "Ismael", + "Isobel", + "Isom", + "Israel", + "Issac", + "Itzel", + "Iva", + "Ivah", + "Ivory", + "Ivy", + "Izabella", + "Izaiah", + "Jabari", + "Jace", + "Jacey", + "Jacinthe", + "Jacinto", + "Jack", + "Jackeline", + "Jackie", + "Jacklyn", + "Jackson", + "Jacky", + "Jaclyn", + "Jacquelyn", + "Jacques", + "Jacynthe", + "Jada", + "Jade", + "Jaden", + "Jadon", + "Jadyn", + "Jaeden", + "Jaida", + "Jaiden", + "Jailyn", + "Jaime", + "Jairo", + "Jakayla", + "Jake", + "Jakob", + "Jaleel", + "Jalen", + "Jalon", + "Jalyn", + "Jamaal", + "Jamal", + "Jamar", + "Jamarcus", + "Jamel", + "Jameson", + "Jamey", + "Jamie", + "Jamil", + "Jamir", + "Jamison", + "Jammie", + "Jan", + "Jana", + "Janae", + "Jane", + "Janelle", + "Janessa", + "Janet", + "Janice", + "Janick", + "Janie", + "Janis", + "Janiya", + "Jannie", + "Jany", + "Jaquan", + "Jaquelin", + "Jaqueline", + "Jared", + "Jaren", + "Jarod", + "Jaron", + "Jarred", + "Jarrell", + "Jarret", + "Jarrett", + "Jarrod", + "Jarvis", + "Jasen", + "Jasmin", + "Jason", + "Jasper", + "Jaunita", + "Javier", + "Javon", + "Javonte", + "Jay", + "Jayce", + "Jaycee", + "Jayda", + "Jayde", + "Jayden", + "Jaydon", + "Jaylan", + "Jaylen", + "Jaylin", + "Jaylon", + "Jayme", + "Jayne", + "Jayson", + "Jazlyn", + "Jazmin", + "Jazmyn", + "Jazmyne", + "Jean", + "Jeanette", + "Jeanie", + "Jeanne", + "Jed", + "Jedediah", + "Jedidiah", + "Jeff", + "Jefferey", + "Jeffery", + "Jeffrey", + "Jeffry", + "Jena", + "Jenifer", + "Jennie", + "Jennifer", + "Jennings", + "Jennyfer", + "Jensen", + "Jerad", + "Jerald", + "Jeramie", + "Jeramy", + "Jerel", + "Jeremie", + "Jeremy", + "Jermain", + "Jermaine", + "Jermey", + "Jerod", + "Jerome", + "Jeromy", + "Jerrell", + "Jerrod", + "Jerrold", + "Jerry", + "Jess", + "Jesse", + "Jessica", + "Jessie", + "Jessika", + "Jessy", + "Jessyca", + "Jesus", + "Jett", + "Jettie", + "Jevon", + "Jewel", + "Jewell", + "Jillian", + "Jimmie", + "Jimmy", + "Jo", + "Joan", + "Joana", + "Joanie", + "Joanne", + "Joannie", + "Joanny", + "Joany", + "Joaquin", + "Jocelyn", + "Jodie", + "Jody", + "Joe", + "Joel", + "Joelle", + "Joesph", + "Joey", + "Johan", + "Johann", + "Johanna", + "Johathan", + "John", + "Johnathan", + "Johnathon", + "Johnnie", + "Johnny", + "Johnpaul", + "Johnson", + "Jolie", + "Jon", + "Jonas", + "Jonatan", + "Jonathan", + "Jonathon", + "Jordan", + "Jordane", + "Jordi", + "Jordon", + "Jordy", + "Jordyn", + "Jorge", + "Jose", + "Josefa", + "Josefina", + "Joseph", + "Josephine", + "Josh", + "Joshua", + "Joshuah", + "Josiah", + "Josiane", + "Josianne", + "Josie", + "Josue", + "Jovan", + "Jovani", + "Jovanny", + "Jovany", + "Joy", + "Joyce", + "Juana", + "Juanita", + "Judah", + "Judd", + "Jude", + "Judge", + "Judson", + "Judy", + "Jules", + "Julia", + "Julian", + "Juliana", + "Julianne", + "Julie", + "Julien", + "Juliet", + "Julio", + "Julius", + "June", + "Junior", + "Junius", + "Justen", + "Justice", + "Justina", + "Justine", + "Juston", + "Justus", + "Justyn", + "Juvenal", + "Juwan", + "Kacey", + "Kaci", + "Kacie", + "Kade", + "Kaden", + "Kadin", + "Kaela", + "Kaelyn", + "Kaia", + "Kailee", + "Kailey", + "Kailyn", + "Kaitlin", + "Kaitlyn", + "Kale", + "Kaleb", + "Kaleigh", + "Kaley", + "Kali", + "Kallie", + "Kameron", + "Kamille", + "Kamren", + "Kamron", + "Kamryn", + "Kane", + "Kara", + "Kareem", + "Karelle", + "Karen", + "Kari", + "Kariane", + "Karianne", + "Karina", + "Karine", + "Karl", + "Karlee", + "Karley", + "Karli", + "Karlie", + "Karolann", + "Karson", + "Kasandra", + "Kasey", + "Kassandra", + "Katarina", + "Katelin", + "Katelyn", + "Katelynn", + "Katharina", + "Katherine", + "Katheryn", + "Kathleen", + "Kathlyn", + "Kathryn", + "Kathryne", + "Katlyn", + "Katlynn", + "Katrina", + "Katrine", + "Kattie", + "Kavon", + "Kay", + "Kaya", + "Kaycee", + "Kayden", + "Kayla", + "Kaylah", + "Kaylee", + "Kayleigh", + "Kayley", + "Kayli", + "Kaylie", + "Kaylin", + "Keagan", + "Keanu", + "Keara", + "Keaton", + "Keegan", + "Keeley", + "Keely", + "Keenan", + "Keira", + "Keith", + "Kellen", + "Kelley", + "Kelli", + "Kellie", + "Kelly", + "Kelsi", + "Kelsie", + "Kelton", + "Kelvin", + "Ken", + "Kendall", + "Kendra", + "Kendrick", + "Kenna", + "Kennedi", + "Kennedy", + "Kenneth", + "Kennith", + "Kenny", + "Kenton", + "Kenya", + "Kenyatta", + "Kenyon", + "Keon", + "Keshaun", + "Keshawn", + "Keven", + "Kevin", + "Kevon", + "Keyon", + "Keyshawn", + "Khalid", + "Khalil", + "Kian", + "Kiana", + "Kianna", + "Kiara", + "Kiarra", + "Kiel", + "Kiera", + "Kieran", + "Kiley", + "Kim", + "Kimberly", + "King", + "Kip", + "Kira", + "Kirk", + "Kirsten", + "Kirstin", + "Kitty", + "Kobe", + "Koby", + "Kody", + "Kolby", + "Kole", + "Korbin", + "Korey", + "Kory", + "Kraig", + "Kris", + "Krista", + "Kristian", + "Kristin", + "Kristina", + "Kristofer", + "Kristoffer", + "Kristopher", + "Kristy", + "Krystal", + "Krystel", + "Krystina", + "Kurt", + "Kurtis", + "Kyla", + "Kyle", + "Kylee", + "Kyleigh", + "Kyler", + "Kylie", + "Kyra", + "Lacey", + "Lacy", + "Ladarius", + "Lafayette", + "Laila", + "Laisha", + "Lamar", + "Lambert", + "Lamont", + "Lance", + "Landen", + "Lane", + "Laney", + "Larissa", + "Laron", + "Larry", + "Larue", + "Laura", + "Laurel", + "Lauren", + "Laurence", + "Lauretta", + "Lauriane", + "Laurianne", + "Laurie", + "Laurine", + "Laury", + "Lauryn", + "Lavada", + "Lavern", + "Laverna", + "Laverne", + "Lavina", + "Lavinia", + "Lavon", + "Lavonne", + "Lawrence", + "Lawson", + "Layla", + "Layne", + "Lazaro", + "Lea", + "Leann", + "Leanna", + "Leanne", + "Leatha", + "Leda", + "Lee", + "Leif", + "Leila", + "Leilani", + "Lela", + "Lelah", + "Leland", + "Lelia", + "Lempi", + "Lemuel", + "Lenna", + "Lennie", + "Lenny", + "Lenora", + "Lenore", + "Leo", + "Leola", + "Leon", + "Leonard", + "Leonardo", + "Leone", + "Leonel", + "Leonie", + "Leonor", + "Leonora", + "Leopold", + "Leopoldo", + "Leora", + "Lera", + "Lesley", + "Leslie", + "Lesly", + "Lessie", + "Lester", + "Leta", + "Letha", + "Letitia", + "Levi", + "Lew", + "Lewis", + "Lexi", + "Lexie", + "Lexus", + "Lia", + "Liam", + "Liana", + "Libbie", + "Libby", + "Lila", + "Lilian", + "Liliana", + "Liliane", + "Lilla", + "Lillian", + "Lilliana", + "Lillie", + "Lilly", + "Lily", + "Lilyan", + "Lina", + "Lincoln", + "Linda", + "Lindsay", + "Lindsey", + "Linnea", + "Linnie", + "Linwood", + "Lionel", + "Lisa", + "Lisandro", + "Lisette", + "Litzy", + "Liza", + "Lizeth", + "Lizzie", + "Llewellyn", + "Lloyd", + "Logan", + "Lois", + "Lola", + "Lolita", + "Loma", + "Lon", + "London", + "Lonie", + "Lonnie", + "Lonny", + "Lonzo", + "Lora", + "Loraine", + "Loren", + "Lorena", + "Lorenz", + "Lorenza", + "Lorenzo", + "Lori", + "Lorine", + "Lorna", + "Lottie", + "Lou", + "Louie", + "Louisa", + "Lourdes", + "Louvenia", + "Lowell", + "Loy", + "Loyal", + "Loyce", + "Lucas", + "Luciano", + "Lucie", + "Lucienne", + "Lucile", + "Lucinda", + "Lucio", + "Lucious", + "Lucius", + "Lucy", + "Ludie", + "Ludwig", + "Lue", + "Luella", + "Luigi", + "Luis", + "Luisa", + "Lukas", + "Lula", + "Lulu", + "Luna", + "Lupe", + "Lura", + "Lurline", + "Luther", + "Luz", + "Lyda", + "Lydia", + "Lyla", + "Lynn", + "Lyric", + "Lysanne", + "Mabel", + "Mabelle", + "Mable", + "Mac", + "Macey", + "Maci", + "Macie", + "Mack", + "Mackenzie", + "Macy", + "Madaline", + "Madalyn", + "Maddison", + "Madeline", + "Madelyn", + "Madelynn", + "Madge", + "Madie", + "Madilyn", + "Madisen", + "Madison", + "Madisyn", + "Madonna", + "Madyson", + "Mae", + "Maegan", + "Maeve", + "Mafalda", + "Magali", + "Magdalen", + "Magdalena", + "Maggie", + "Magnolia", + "Magnus", + "Maia", + "Maida", + "Maiya", + "Major", + "Makayla", + "Makenna", + "Makenzie", + "Malachi", + "Malcolm", + "Malika", + "Malinda", + "Mallie", + "Mallory", + "Malvina", + "Mandy", + "Manley", + "Manuel", + "Manuela", + "Mara", + "Marc", + "Marcel", + "Marcelina", + "Marcelino", + "Marcella", + "Marcelle", + "Marcellus", + "Marcelo", + "Marcia", + "Marco", + "Marcos", + "Marcus", + "Margaret", + "Margarete", + "Margarett", + "Margaretta", + "Margarette", + "Margarita", + "Marge", + "Margie", + "Margot", + "Margret", + "Marguerite", + "Maria", + "Mariah", + "Mariam", + "Marian", + "Mariana", + "Mariane", + "Marianna", + "Marianne", + "Mariano", + "Maribel", + "Marie", + "Mariela", + "Marielle", + "Marietta", + "Marilie", + "Marilou", + "Marilyne", + "Marina", + "Mario", + "Marion", + "Marisa", + "Marisol", + "Maritza", + "Marjolaine", + "Marjorie", + "Marjory", + "Mark", + "Markus", + "Marlee", + "Marlen", + "Marlene", + "Marley", + "Marlin", + "Marlon", + "Marques", + "Marquis", + "Marquise", + "Marshall", + "Marta", + "Martin", + "Martina", + "Martine", + "Marty", + "Marvin", + "Mary", + "Maryam", + "Maryjane", + "Maryse", + "Mason", + "Mateo", + "Mathew", + "Mathias", + "Mathilde", + "Matilda", + "Matilde", + "Matt", + "Matteo", + "Mattie", + "Maud", + "Maude", + "Maudie", + "Maureen", + "Maurice", + "Mauricio", + "Maurine", + "Maverick", + "Mavis", + "Max", + "Maxie", + "Maxime", + "Maximilian", + "Maximillia", + "Maximillian", + "Maximo", + "Maximus", + "Maxine", + "Maxwell", + "May", + "Maya", + "Maybell", + "Maybelle", + "Maye", + "Maymie", + "Maynard", + "Mayra", + "Mazie", + "Mckayla", + "Mckenna", + "Mckenzie", + "Meagan", + "Meaghan", + "Meda", + "Megane", + "Meggie", + "Meghan", + "Mekhi", + "Melany", + "Melba", + "Melisa", + "Melissa", + "Mellie", + "Melody", + "Melvin", + "Melvina", + "Melyna", + "Melyssa", + "Mercedes", + "Meredith", + "Merl", + "Merle", + "Merlin", + "Merritt", + "Mertie", + "Mervin", + "Meta", + "Mia", + "Micaela", + "Micah", + "Michael", + "Michaela", + "Michale", + "Micheal", + "Michel", + "Michele", + "Michelle", + "Miguel", + "Mikayla", + "Mike", + "Mikel", + "Milan", + "Miles", + "Milford", + "Miller", + "Millie", + "Milo", + "Milton", + "Mina", + "Minerva", + "Minnie", + "Miracle", + "Mireille", + "Mireya", + "Misael", + "Missouri", + "Misty", + "Mitchel", + "Mitchell", + "Mittie", + "Modesta", + "Modesto", + "Mohamed", + "Mohammad", + "Mohammed", + "Moises", + "Mollie", + "Molly", + "Mona", + "Monica", + "Monique", + "Monroe", + "Monserrat", + "Monserrate", + "Montana", + "Monte", + "Monty", + "Morgan", + "Moriah", + "Morris", + "Mortimer", + "Morton", + "Mose", + "Moses", + "Moshe", + "Mossie", + "Mozell", + "Mozelle", + "Muhammad", + "Muriel", + "Murl", + "Murphy", + "Murray", + "Mustafa", + "Mya", + "Myah", + "Mylene", + "Myles", + "Myra", + "Myriam", + "Myrl", + "Myrna", + "Myron", + "Myrtice", + "Myrtie", + "Myrtis", + "Myrtle", + "Nadia", + "Nakia", + "Name", + "Nannie", + "Naomi", + "Naomie", + "Napoleon", + "Narciso", + "Nash", + "Nasir", + "Nat", + "Natalia", + "Natalie", + "Natasha", + "Nathan", + "Nathanael", + "Nathanial", + "Nathaniel", + "Nathen", + "Nayeli", + "Neal", + "Ned", + "Nedra", + "Neha", + "Neil", + "Nelda", + "Nella", + "Nelle", + "Nellie", + "Nels", + "Nelson", + "Neoma", + "Nestor", + "Nettie", + "Neva", + "Newell", + "Newton", + "Nia", + "Nicholas", + "Nicholaus", + "Nichole", + "Nick", + "Nicklaus", + "Nickolas", + "Nico", + "Nicola", + "Nicolas", + "Nicole", + "Nicolette", + "Nigel", + "Nikita", + "Nikki", + "Nikko", + "Niko", + "Nikolas", + "Nils", + "Nina", + "Noah", + "Noble", + "Noe", + "Noel", + "Noelia", + "Noemi", + "Noemie", + "Noemy", + "Nola", + "Nolan", + "Nona", + "Nora", + "Norbert", + "Norberto", + "Norene", + "Norma", + "Norris", + "Norval", + "Norwood", + "Nova", + "Novella", + "Nya", + "Nyah", + "Nyasia", + "Obie", + "Oceane", + "Ocie", + "Octavia", + "Oda", + "Odell", + "Odessa", + "Odie", + "Ofelia", + "Okey", + "Ola", + "Olaf", + "Ole", + "Olen", + "Oleta", + "Olga", + "Olin", + "Oliver", + "Ollie", + "Oma", + "Omari", + "Omer", + "Ona", + "Onie", + "Opal", + "Ophelia", + "Ora", + "Oral", + "Oran", + "Oren", + "Orie", + "Orin", + "Orion", + "Orland", + "Orlando", + "Orlo", + "Orpha", + "Orrin", + "Orval", + "Orville", + "Osbaldo", + "Osborne", + "Oscar", + "Osvaldo", + "Oswald", + "Oswaldo", + "Otha", + "Otho", + "Otilia", + "Otis", + "Ottilie", + "Ottis", + "Otto", + "Ova", + "Owen", + "Ozella", + "Pablo", + "Paige", + "Palma", + "Pamela", + "Pansy", + "Paolo", + "Paris", + "Parker", + "Pascale", + "Pasquale", + "Pat", + "Patience", + "Patricia", + "Patrick", + "Patsy", + "Pattie", + "Paul", + "Paula", + "Pauline", + "Paxton", + "Payton", + "Pearl", + "Pearlie", + "Pearline", + "Pedro", + "Peggie", + "Penelope", + "Percival", + "Percy", + "Perry", + "Pete", + "Peter", + "Petra", + "Peyton", + "Philip", + "Phoebe", + "Phyllis", + "Pierce", + "Pierre", + "Pietro", + "Pink", + "Pinkie", + "Piper", + "Polly", + "Porter", + "Precious", + "Presley", + "Preston", + "Price", + "Prince", + "Princess", + "Priscilla", + "Providenci", + "Prudence", + "Queen", + "Queenie", + "Quentin", + "Quincy", + "Quinn", + "Quinten", + "Quinton", + "Rachael", + "Rachel", + "Rachelle", + "Rae", + "Raegan", + "Rafael", + "Rafaela", + "Raheem", + "Rahsaan", + "Rahul", + "Raina", + "Raleigh", + "Ralph", + "Ramiro", + "Ramon", + "Ramona", + "Randal", + "Randall", + "Randi", + "Randy", + "Ransom", + "Raoul", + "Raphael", + "Raphaelle", + "Raquel", + "Rashad", + "Rashawn", + "Rasheed", + "Raul", + "Raven", + "Ray", + "Raymond", + "Raymundo", + "Reagan", + "Reanna", + "Reba", + "Rebeca", + "Rebecca", + "Rebeka", + "Rebekah", + "Reece", + "Reed", + "Reese", + "Regan", + "Reggie", + "Reginald", + "Reid", + "Reilly", + "Reina", + "Reinhold", + "Remington", + "Rene", + "Renee", + "Ressie", + "Reta", + "Retha", + "Retta", + "Reuben", + "Reva", + "Rex", + "Rey", + "Reyes", + "Reymundo", + "Reyna", + "Reynold", + "Rhea", + "Rhett", + "Rhianna", + "Rhiannon", + "Rhoda", + "Ricardo", + "Richard", + "Richie", + "Richmond", + "Rick", + "Rickey", + "Rickie", + "Ricky", + "Rico", + "Rigoberto", + "Riley", + "Rita", + "River", + "Robb", + "Robbie", + "Robert", + "Roberta", + "Roberto", + "Robin", + "Robyn", + "Rocio", + "Rocky", + "Rod", + "Roderick", + "Rodger", + "Rodolfo", + "Rodrick", + "Rodrigo", + "Roel", + "Rogelio", + "Roger", + "Rogers", + "Rolando", + "Rollin", + "Roma", + "Romaine", + "Roman", + "Ron", + "Ronaldo", + "Ronny", + "Roosevelt", + "Rory", + "Rosa", + "Rosalee", + "Rosalia", + "Rosalind", + "Rosalinda", + "Rosalyn", + "Rosamond", + "Rosanna", + "Rosario", + "Roscoe", + "Rose", + "Rosella", + "Roselyn", + "Rosemarie", + "Rosemary", + "Rosendo", + "Rosetta", + "Rosie", + "Rosina", + "Roslyn", + "Ross", + "Rossie", + "Rowan", + "Rowena", + "Rowland", + "Roxane", + "Roxanne", + "Roy", + "Royal", + "Royce", + "Rozella", + "Ruben", + "Rubie", + "Ruby", + "Rubye", + "Rudolph", + "Rudy", + "Rupert", + "Russ", + "Russel", + "Russell", + "Rusty", + "Ruth", + "Ruthe", + "Ruthie", + "Ryan", + "Ryann", + "Ryder", + "Rylan", + "Rylee", + "Ryleigh", + "Ryley", + "Sabina", + "Sabrina", + "Sabryna", + "Sadie", + "Sadye", + "Sage", + "Saige", + "Sallie", + "Sally", + "Salma", + "Salvador", + "Salvatore", + "Sam", + "Samanta", + "Samantha", + "Samara", + "Samir", + "Sammie", + "Sammy", + "Samson", + "Sandra", + "Sandrine", + "Sandy", + "Sanford", + "Santa", + "Santiago", + "Santina", + "Santino", + "Santos", + "Sarah", + "Sarai", + "Sarina", + "Sasha", + "Saul", + "Savanah", + "Savanna", + "Savannah", + "Savion", + "Scarlett", + "Schuyler", + "Scot", + "Scottie", + "Scotty", + "Seamus", + "Sean", + "Sebastian", + "Sedrick", + "Selena", + "Selina", + "Selmer", + "Serena", + "Serenity", + "Seth", + "Shad", + "Shaina", + "Shakira", + "Shana", + "Shane", + "Shanel", + "Shanelle", + "Shania", + "Shanie", + "Shaniya", + "Shanna", + "Shannon", + "Shanny", + "Shanon", + "Shany", + "Sharon", + "Shaun", + "Shawn", + "Shawna", + "Shaylee", + "Shayna", + "Shayne", + "Shea", + "Sheila", + "Sheldon", + "Shemar", + "Sheridan", + "Sherman", + "Sherwood", + "Shirley", + "Shyann", + "Shyanne", + "Sibyl", + "Sid", + "Sidney", + "Sienna", + "Sierra", + "Sigmund", + "Sigrid", + "Sigurd", + "Silas", + "Sim", + "Simeon", + "Simone", + "Sincere", + "Sister", + "Skye", + "Skyla", + "Skylar", + "Sofia", + "Soledad", + "Solon", + "Sonia", + "Sonny", + "Sonya", + "Sophia", + "Sophie", + "Spencer", + "Stacey", + "Stacy", + "Stan", + "Stanford", + "Stanley", + "Stanton", + "Stefan", + "Stefanie", + "Stella", + "Stephan", + "Stephania", + "Stephanie", + "Stephany", + "Stephen", + "Stephon", + "Sterling", + "Steve", + "Stevie", + "Stewart", + "Stone", + "Stuart", + "Summer", + "Sunny", + "Susan", + "Susana", + "Susanna", + "Susie", + "Suzanne", + "Sven", + "Syble", + "Sydnee", + "Sydney", + "Sydni", + "Sydnie", + "Sylvan", + "Sylvester", + "Sylvia", + "Tabitha", + "Tad", + "Talia", + "Talon", + "Tamara", + "Tamia", + "Tania", + "Tanner", + "Tanya", + "Tara", + "Taryn", + "Tate", + "Tatum", + "Tatyana", + "Taurean", + "Tavares", + "Taya", + "Taylor", + "Teagan", + "Ted", + "Telly", + "Terence", + "Teresa", + "Terrance", + "Terrell", + "Terrence", + "Terrill", + "Terry", + "Tess", + "Tessie", + "Tevin", + "Thad", + "Thaddeus", + "Thalia", + "Thea", + "Thelma", + "Theo", + "Theodora", + "Theodore", + "Theresa", + "Therese", + "Theresia", + "Theron", + "Thomas", + "Thora", + "Thurman", + "Tia", + "Tiana", + "Tianna", + "Tiara", + "Tierra", + "Tiffany", + "Tillman", + "Timmothy", + "Timmy", + "Timothy", + "Tina", + "Tito", + "Titus", + "Tobin", + "Toby", + "Tod", + "Tom", + "Tomas", + "Tomasa", + "Tommie", + "Toney", + "Toni", + "Tony", + "Torey", + "Torrance", + "Torrey", + "Toy", + "Trace", + "Tracey", + "Tracy", + "Travis", + "Travon", + "Tre", + "Tremaine", + "Tremayne", + "Trent", + "Trenton", + "Tressa", + "Tressie", + "Treva", + "Trever", + "Trevion", + "Trevor", + "Trey", + "Trinity", + "Trisha", + "Tristian", + "Tristin", + "Triston", + "Troy", + "Trudie", + "Trycia", + "Trystan", + "Turner", + "Twila", + "Tyler", + "Tyra", + "Tyree", + "Tyreek", + "Tyrel", + "Tyrell", + "Tyrese", + "Tyrique", + "Tyshawn", + "Tyson", + "Ubaldo", + "Ulices", + "Ulises", + "Una", + "Unique", + "Urban", + "Uriah", + "Uriel", + "Ursula", + "Vada", + "Valentin", + "Valentina", + "Valentine", + "Valerie", + "Vallie", + "Van", + "Vance", + "Vanessa", + "Vaughn", + "Veda", + "Velda", + "Vella", + "Velma", + "Velva", + "Vena", + "Verda", + "Verdie", + "Vergie", + "Verla", + "Verlie", + "Vern", + "Verna", + "Verner", + "Vernice", + "Vernie", + "Vernon", + "Verona", + "Veronica", + "Vesta", + "Vicenta", + "Vicente", + "Vickie", + "Vicky", + "Victor", + "Victoria", + "Vida", + "Vidal", + "Vilma", + "Vince", + "Vincent", + "Vincenza", + "Vincenzo", + "Vinnie", + "Viola", + "Violet", + "Violette", + "Virgie", + "Virgil", + "Virginia", + "Virginie", + "Vita", + "Vito", + "Viva", + "Vivian", + "Viviane", + "Vivianne", + "Vivien", + "Vivienne", + "Vladimir", + "Wade", + "Waino", + "Waldo", + "Walker", + "Wallace", + "Walter", + "Walton", + "Wanda", + "Ward", + "Warren", + "Watson", + "Wava", + "Waylon", + "Wayne", + "Webster", + "Weldon", + "Wellington", + "Wendell", + "Wendy", + "Werner", + "Westley", + "Weston", + "Whitney", + "Wilber", + "Wilbert", + "Wilburn", + "Wiley", + "Wilford", + "Wilfred", + "Wilfredo", + "Wilfrid", + "Wilhelm", + "Wilhelmine", + "Will", + "Willa", + "Willard", + "William", + "Willie", + "Willis", + "Willow", + "Willy", + "Wilma", + "Wilmer", + "Wilson", + "Wilton", + "Winfield", + "Winifred", + "Winnifred", + "Winona", + "Winston", + "Woodrow", + "Wyatt", + "Wyman", + "Xander", + "Xavier", + "Xzavier", + "Yadira", + "Yasmeen", + "Yasmin", + "Yasmine", + "Yazmin", + "Yesenia", + "Yessenia", + "Yolanda", + "Yoshiko", + "Yvette", + "Yvonne", + "Zachariah", + "Zachary", + "Zachery", + "Zack", + "Zackary", + "Zackery", + "Zakary", + "Zander", + "Zane", + "Zaria", + "Zechariah", + "Zelda", + "Zella", + "Zelma", + "Zena", + "Zetta", + "Zion", + "Zita", + "Zoe", + "Zoey", + "Zoie", + "Zoila", + "Zola", + "Zora", + "Zula" +]; + +},{}],314:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.title = require("./title"); +name.name = require("./name"); + +},{"./first_name":313,"./last_name":315,"./name":316,"./prefix":317,"./suffix":318,"./title":319}],315:[function(require,module,exports){ +module["exports"] = [ + "Abbott", + "Abernathy", + "Abshire", + "Adams", + "Altenwerth", + "Anderson", + "Ankunding", + "Armstrong", + "Auer", + "Aufderhar", + "Bahringer", + "Bailey", + "Balistreri", + "Barrows", + "Bartell", + "Bartoletti", + "Barton", + "Bashirian", + "Batz", + "Bauch", + "Baumbach", + "Bayer", + "Beahan", + "Beatty", + "Bechtelar", + "Becker", + "Bednar", + "Beer", + "Beier", + "Berge", + "Bergnaum", + "Bergstrom", + "Bernhard", + "Bernier", + "Bins", + "Blanda", + "Blick", + "Block", + "Bode", + "Boehm", + "Bogan", + "Bogisich", + "Borer", + "Bosco", + "Botsford", + "Boyer", + "Boyle", + "Bradtke", + "Brakus", + "Braun", + "Breitenberg", + "Brekke", + "Brown", + "Bruen", + "Buckridge", + "Carroll", + "Carter", + "Cartwright", + "Casper", + "Cassin", + "Champlin", + "Christiansen", + "Cole", + "Collier", + "Collins", + "Conn", + "Connelly", + "Conroy", + "Considine", + "Corkery", + "Cormier", + "Corwin", + "Cremin", + "Crist", + "Crona", + "Cronin", + "Crooks", + "Cruickshank", + "Cummerata", + "Cummings", + "Dach", + "D'Amore", + "Daniel", + "Dare", + "Daugherty", + "Davis", + "Deckow", + "Denesik", + "Dibbert", + "Dickens", + "Dicki", + "Dickinson", + "Dietrich", + "Donnelly", + "Dooley", + "Douglas", + "Doyle", + "DuBuque", + "Durgan", + "Ebert", + "Effertz", + "Eichmann", + "Emard", + "Emmerich", + "Erdman", + "Ernser", + "Fadel", + "Fahey", + "Farrell", + "Fay", + "Feeney", + "Feest", + "Feil", + "Ferry", + "Fisher", + "Flatley", + "Frami", + "Franecki", + "Friesen", + "Fritsch", + "Funk", + "Gaylord", + "Gerhold", + "Gerlach", + "Gibson", + "Gislason", + "Gleason", + "Gleichner", + "Glover", + "Goldner", + "Goodwin", + "Gorczany", + "Gottlieb", + "Goyette", + "Grady", + "Graham", + "Grant", + "Green", + "Greenfelder", + "Greenholt", + "Grimes", + "Gulgowski", + "Gusikowski", + "Gutkowski", + "Gutmann", + "Haag", + "Hackett", + "Hagenes", + "Hahn", + "Haley", + "Halvorson", + "Hamill", + "Hammes", + "Hand", + "Hane", + "Hansen", + "Harber", + "Harris", + "Hartmann", + "Harvey", + "Hauck", + "Hayes", + "Heaney", + "Heathcote", + "Hegmann", + "Heidenreich", + "Heller", + "Herman", + "Hermann", + "Hermiston", + "Herzog", + "Hessel", + "Hettinger", + "Hickle", + "Hilll", + "Hills", + "Hilpert", + "Hintz", + "Hirthe", + "Hodkiewicz", + "Hoeger", + "Homenick", + "Hoppe", + "Howe", + "Howell", + "Hudson", + "Huel", + "Huels", + "Hyatt", + "Jacobi", + "Jacobs", + "Jacobson", + "Jakubowski", + "Jaskolski", + "Jast", + "Jenkins", + "Jerde", + "Johns", + "Johnson", + "Johnston", + "Jones", + "Kassulke", + "Kautzer", + "Keebler", + "Keeling", + "Kemmer", + "Kerluke", + "Kertzmann", + "Kessler", + "Kiehn", + "Kihn", + "Kilback", + "King", + "Kirlin", + "Klein", + "Kling", + "Klocko", + "Koch", + "Koelpin", + "Koepp", + "Kohler", + "Konopelski", + "Koss", + "Kovacek", + "Kozey", + "Krajcik", + "Kreiger", + "Kris", + "Kshlerin", + "Kub", + "Kuhic", + "Kuhlman", + "Kuhn", + "Kulas", + "Kunde", + "Kunze", + "Kuphal", + "Kutch", + "Kuvalis", + "Labadie", + "Lakin", + "Lang", + "Langosh", + "Langworth", + "Larkin", + "Larson", + "Leannon", + "Lebsack", + "Ledner", + "Leffler", + "Legros", + "Lehner", + "Lemke", + "Lesch", + "Leuschke", + "Lind", + "Lindgren", + "Littel", + "Little", + "Lockman", + "Lowe", + "Lubowitz", + "Lueilwitz", + "Luettgen", + "Lynch", + "Macejkovic", + "MacGyver", + "Maggio", + "Mann", + "Mante", + "Marks", + "Marquardt", + "Marvin", + "Mayer", + "Mayert", + "McClure", + "McCullough", + "McDermott", + "McGlynn", + "McKenzie", + "McLaughlin", + "Medhurst", + "Mertz", + "Metz", + "Miller", + "Mills", + "Mitchell", + "Moen", + "Mohr", + "Monahan", + "Moore", + "Morar", + "Morissette", + "Mosciski", + "Mraz", + "Mueller", + "Muller", + "Murazik", + "Murphy", + "Murray", + "Nader", + "Nicolas", + "Nienow", + "Nikolaus", + "Nitzsche", + "Nolan", + "Oberbrunner", + "O'Connell", + "O'Conner", + "O'Hara", + "O'Keefe", + "O'Kon", + "Okuneva", + "Olson", + "Ondricka", + "O'Reilly", + "Orn", + "Ortiz", + "Osinski", + "Pacocha", + "Padberg", + "Pagac", + "Parisian", + "Parker", + "Paucek", + "Pfannerstill", + "Pfeffer", + "Pollich", + "Pouros", + "Powlowski", + "Predovic", + "Price", + "Prohaska", + "Prosacco", + "Purdy", + "Quigley", + "Quitzon", + "Rath", + "Ratke", + "Rau", + "Raynor", + "Reichel", + "Reichert", + "Reilly", + "Reinger", + "Rempel", + "Renner", + "Reynolds", + "Rice", + "Rippin", + "Ritchie", + "Robel", + "Roberts", + "Rodriguez", + "Rogahn", + "Rohan", + "Rolfson", + "Romaguera", + "Roob", + "Rosenbaum", + "Rowe", + "Ruecker", + "Runolfsdottir", + "Runolfsson", + "Runte", + "Russel", + "Rutherford", + "Ryan", + "Sanford", + "Satterfield", + "Sauer", + "Sawayn", + "Schaden", + "Schaefer", + "Schamberger", + "Schiller", + "Schimmel", + "Schinner", + "Schmeler", + "Schmidt", + "Schmitt", + "Schneider", + "Schoen", + "Schowalter", + "Schroeder", + "Schulist", + "Schultz", + "Schumm", + "Schuppe", + "Schuster", + "Senger", + "Shanahan", + "Shields", + "Simonis", + "Sipes", + "Skiles", + "Smith", + "Smitham", + "Spencer", + "Spinka", + "Sporer", + "Stamm", + "Stanton", + "Stark", + "Stehr", + "Steuber", + "Stiedemann", + "Stokes", + "Stoltenberg", + "Stracke", + "Streich", + "Stroman", + "Strosin", + "Swaniawski", + "Swift", + "Terry", + "Thiel", + "Thompson", + "Tillman", + "Torp", + "Torphy", + "Towne", + "Toy", + "Trantow", + "Tremblay", + "Treutel", + "Tromp", + "Turcotte", + "Turner", + "Ullrich", + "Upton", + "Vandervort", + "Veum", + "Volkman", + "Von", + "VonRueden", + "Waelchi", + "Walker", + "Walsh", + "Walter", + "Ward", + "Waters", + "Watsica", + "Weber", + "Wehner", + "Weimann", + "Weissnat", + "Welch", + "West", + "White", + "Wiegand", + "Wilderman", + "Wilkinson", + "Will", + "Williamson", + "Willms", + "Windler", + "Wintheiser", + "Wisoky", + "Wisozk", + "Witting", + "Wiza", + "Wolf", + "Wolff", + "Wuckert", + "Wunsch", + "Wyman", + "Yost", + "Yundt", + "Zboncak", + "Zemlak", + "Ziemann", + "Zieme", + "Zulauf" +]; + +},{}],316:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name}", + "#{first_name} #{last_name} #{suffix}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}" +]; + +},{}],317:[function(require,module,exports){ +module["exports"] = [ + "Mr.", + "Mrs.", + "Ms.", + "Miss", + "Dr." +]; + +},{}],318:[function(require,module,exports){ +module["exports"] = [ + "Jr.", + "Sr.", + "I", + "II", + "III", + "IV", + "V", + "MD", + "DDS", + "PhD", + "DVM" +]; + +},{}],319:[function(require,module,exports){ +module["exports"] = { + "descriptor": [ + "Lead", + "Senior", + "Direct", + "Corporate", + "Dynamic", + "Future", + "Product", + "National", + "Regional", + "District", + "Central", + "Global", + "Customer", + "Investor", + "Dynamic", + "International", + "Legacy", + "Forward", + "Internal", + "Human", + "Chief", + "Principal" + ], + "level": [ + "Solutions", + "Program", + "Brand", + "Security", + "Research", + "Marketing", + "Directives", + "Implementation", + "Integration", + "Functionality", + "Response", + "Paradigm", + "Tactics", + "Identity", + "Markets", + "Group", + "Division", + "Applications", + "Optimization", + "Operations", + "Infrastructure", + "Intranet", + "Communications", + "Web", + "Branding", + "Quality", + "Assurance", + "Mobility", + "Accounts", + "Data", + "Creative", + "Configuration", + "Accountability", + "Interactions", + "Factors", + "Usability", + "Metrics" + ], + "job": [ + "Supervisor", + "Associate", + "Executive", + "Liaison", + "Officer", + "Manager", + "Engineer", + "Specialist", + "Director", + "Coordinator", + "Administrator", + "Architect", + "Analyst", + "Designer", + "Planner", + "Orchestrator", + "Technician", + "Developer", + "Producer", + "Consultant", + "Assistant", + "Facilitator", + "Agent", + "Representative", + "Strategist" + ] +}; + +},{}],320:[function(require,module,exports){ +module["exports"] = [ + "###-###-####", + "(###) ###-####", + "1-###-###-####", + "###.###.####", + "###-###-####", + "(###) ###-####", + "1-###-###-####", + "###.###.####", + "###-###-#### x###", + "(###) ###-#### x###", + "1-###-###-#### x###", + "###.###.#### x###", + "###-###-#### x####", + "(###) ###-#### x####", + "1-###-###-#### x####", + "###.###.#### x####", + "###-###-#### x#####", + "(###) ###-#### x#####", + "1-###-###-#### x#####", + "###.###.#### x#####" +]; + +},{}],321:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":320,"dup":108}],322:[function(require,module,exports){ +var system = {}; +module['exports'] = system; +system.mimeTypes = require("./mimeTypes"); +},{"./mimeTypes":323}],323:[function(require,module,exports){ +/* + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Definitions from mime-db v1.21.0 +For updates check: https://github.com/jshttp/mime-db/blob/master/db.json + +*/ + +module['exports'] = { + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana" + }, + "application/3gpp-ims+xml": { + "source": "iana" + }, + "application/a2l": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana" + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "extensions": ["atomsvc"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana" + }, + "application/bacnet-xdd+zip": { + "source": "iana" + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana" + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana" + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/cbor": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana" + }, + "application/ccxml+xml": { + "source": "iana", + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana" + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana" + }, + "application/cellml+xml": { + "source": "iana" + }, + "application/cfw": { + "source": "iana" + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana" + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana" + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana" + }, + "application/cstadata+xml": { + "source": "iana" + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "extensions": ["mdp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana" + }, + "application/dicom": { + "source": "iana" + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "extensions": ["dbk"] + }, + "application/dskpp+xml": { + "source": "iana" + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["ecma"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/emergencycalldata.comment+xml": { + "source": "iana" + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana" + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana" + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana" + }, + "application/emma+xml": { + "source": "iana", + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana" + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana" + }, + "application/epub+zip": { + "source": "iana", + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana" + }, + "application/fits": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false, + "extensions": ["woff"] + }, + "application/font-woff2": { + "compressible": false, + "extensions": ["woff2"] + }, + "application/framework-attributes+xml": { + "source": "iana" + }, + "application/gml+xml": { + "source": "apache", + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana" + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana" + }, + "application/ibe-pkg-reply+xml": { + "source": "iana" + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana" + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana" + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js"] + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana" + }, + "application/kpml-response+xml": { + "source": "iana" + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana" + }, + "application/lost+xml": { + "source": "iana", + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana" + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "extensions": ["mads"] + }, + "application/manifest+json": { + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana" + }, + "application/mathml-presentation+xml": { + "source": "iana" + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana" + }, + "application/mbms-deregister+xml": { + "source": "iana" + }, + "application/mbms-envelope+xml": { + "source": "iana" + }, + "application/mbms-msk+xml": { + "source": "iana" + }, + "application/mbms-msk-response+xml": { + "source": "iana" + }, + "application/mbms-protection-description+xml": { + "source": "iana" + }, + "application/mbms-reception-report+xml": { + "source": "iana" + }, + "application/mbms-register+xml": { + "source": "iana" + }, + "application/mbms-register-response+xml": { + "source": "iana" + }, + "application/mbms-schedule+xml": { + "source": "iana" + }, + "application/mbms-user-service-description+xml": { + "source": "iana" + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana" + }, + "application/media_control+xml": { + "source": "iana" + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mods+xml": { + "source": "iana", + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana" + }, + "application/mrb-publish+xml": { + "source": "iana" + }, + "application/msc-ivr+xml": { + "source": "iana" + }, + "application/msc-mixer+xml": { + "source": "iana" + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana" + }, + "application/news-groupinfo": { + "source": "iana" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana" + }, + "application/nss": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p2p-overlay+xml": { + "source": "iana" + }, + "application/parityfec": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana" + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana" + }, + "application/pidf-diff+xml": { + "source": "iana" + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana" + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/provenance+xml": { + "source": "iana" + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.hpub+zip": { + "source": "iana" + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana" + }, + "application/pskc+xml": { + "source": "iana", + "extensions": ["pskcxml"] + }, + "application/qsig": { + "source": "iana" + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf"] + }, + "application/reginfo+xml": { + "source": "iana", + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana" + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana" + }, + "application/rls-services+xml": { + "source": "iana", + "extensions": ["rs"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana" + }, + "application/samlmetadata+xml": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana" + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/sep+xml": { + "source": "iana" + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana" + }, + "application/simple-filter+xml": { + "source": "iana" + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "extensions": ["srx"] + }, + "application/spirits-event+xml": { + "source": "iana" + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "extensions": ["ssml"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "extensions": ["tei","teicorpus"] + }, + "application/thraud+xml": { + "source": "iana", + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/ttml+xml": { + "source": "iana" + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana" + }, + "application/urc-ressheet+xml": { + "source": "iana" + }, + "application/urc-targetdesc+xml": { + "source": "iana" + }, + "application/urc-uisocketdesc+xml": { + "source": "iana" + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana" + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana" + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana" + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana" + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana" + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana" + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana" + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana" + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana" + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "extensions": ["mpkg"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avistar+xml": { + "source": "iana" + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana" + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "extensions": ["cdxml"] + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana" + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "extensions": ["wbs"] + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana" + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana" + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume-movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana" + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana" + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana" + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana" + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana" + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana" + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana" + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana" + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana" + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana" + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana" + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana" + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana" + }, + "application/vnd.etsi.cug+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana" + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana" + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana" + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana" + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana" + }, + "application/vnd.etsi.sci+xml": { + "source": "iana" + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana" + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana" + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana" + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana" + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana" + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana" + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana" + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana" + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana" + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana" + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana" + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana" + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana" + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana" + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana" + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las.las+xml": { + "source": "iana", + "extensions": ["lasxml"] + }, + "application/vnd.liberty-request+xml": { + "source": "iana" + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "extensions": ["lbe"] + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana" + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana" + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana" + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana" + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana" + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana" + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana" + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache" + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana" + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana" + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana" + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana" + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana" + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana" + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana" + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana" + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana" + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana" + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana" + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana" + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana" + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana" + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana" + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana" + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana" + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana" + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana" + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana" + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana" + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana" + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana" + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana" + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana" + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana" + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana" + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana" + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana" + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana" + }, + "application/vnd.omads-email+xml": { + "source": "iana" + }, + "application/vnd.omads-file+xml": { + "source": "iana" + }, + "application/vnd.omads-folder+xml": { + "source": "iana" + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana" + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml-template": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "apache", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "apache", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "apache", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana" + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana" + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana" + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos+xml": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "apache" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana" + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana" + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana" + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana" + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana" + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana" + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana" + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana" + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana" + }, + "application/vnd.wv.ssp+xml": { + "source": "iana" + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana" + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "extensions": ["vxml"] + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/watcherinfo+xml": { + "source": "iana" + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-otf": { + "source": "apache", + "compressible": true, + "extensions": ["otf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-ttf": { + "source": "apache", + "compressible": true, + "extensions": ["ttf","ttc"] + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "apache", + "extensions": ["der","crt","pem"] + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana" + }, + "application/xaml+xml": { + "source": "apache", + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana" + }, + "application/xcap-caps+xml": { + "source": "iana" + }, + "application/xcap-diff+xml": { + "source": "iana", + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana" + }, + "application/xcap-error+xml": { + "source": "iana" + }, + "application/xcap-ns+xml": { + "source": "iana" + }, + "application/xcon-conference-info+xml": { + "source": "iana" + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana" + }, + "application/xenc+xml": { + "source": "iana", + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache" + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana" + }, + "application/xmpp+xml": { + "source": "iana" + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "extensions": ["xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yin+xml": { + "source": "iana", + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana" + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana" + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana" + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4a","m4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/opentype": { + "compressible": true, + "extensions": ["otf"] + }, + "image/bmp": { + "source": "apache", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/fits": { + "source": "iana" + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jp2": { + "source": "iana" + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jpm": { + "source": "iana" + }, + "image/jpx": { + "source": "iana" + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana" + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana" + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tiff","tif"] + }, + "image/tiff-fx": { + "source": "iana" + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana" + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana" + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana" + }, + "image/vnd.valve.source.texture": { + "source": "iana" + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana" + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana" + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana" + }, + "message/global-delivery-status": { + "source": "iana" + }, + "message/global-disposition-notification": { + "source": "iana" + }, + "message/global-headers": { + "source": "iana" + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana" + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana" + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana" + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana" + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana" + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana" + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana" + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana" + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana", + "compressible": false + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/css": { + "source": "iana", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/hjson": { + "extensions": ["hjson"] + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana" + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["markdown","md","mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "apache" + }, + "video/3gpp": { + "source": "apache", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "apache" + }, + "video/3gpp2": { + "source": "apache", + "extensions": ["3g2"] + }, + "video/bmpeg": { + "source": "apache" + }, + "video/bt656": { + "source": "apache" + }, + "video/celb": { + "source": "apache" + }, + "video/dv": { + "source": "apache" + }, + "video/h261": { + "source": "apache", + "extensions": ["h261"] + }, + "video/h263": { + "source": "apache", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "apache" + }, + "video/h263-2000": { + "source": "apache" + }, + "video/h264": { + "source": "apache", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "apache" + }, + "video/h264-svc": { + "source": "apache" + }, + "video/jpeg": { + "source": "apache", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "apache" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/mj2": { + "source": "apache", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "apache" + }, + "video/mp2p": { + "source": "apache" + }, + "video/mp2t": { + "source": "apache", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "apache", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "apache" + }, + "video/mpeg": { + "source": "apache", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "apache" + }, + "video/mpv": { + "source": "apache" + }, + "video/nv": { + "source": "apache" + }, + "video/ogg": { + "source": "apache", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "apache" + }, + "video/pointer": { + "source": "apache" + }, + "video/quicktime": { + "source": "apache", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raw": { + "source": "apache" + }, + "video/rtp-enc-aescm128": { + "source": "apache" + }, + "video/rtx": { + "source": "apache" + }, + "video/smpte292m": { + "source": "apache" + }, + "video/ulpfec": { + "source": "apache" + }, + "video/vc1": { + "source": "apache" + }, + "video/vnd.cctv": { + "source": "apache" + }, + "video/vnd.dece.hd": { + "source": "apache", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "apache", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "apache" + }, + "video/vnd.dece.pd": { + "source": "apache", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "apache", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "apache", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "apache" + }, + "video/vnd.directv.mpeg-tts": { + "source": "apache" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "apache" + }, + "video/vnd.dvb.file": { + "source": "apache", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "apache", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "apache" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "apache" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "apache" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "apache" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "apache" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "apache" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "apache" + }, + "video/vnd.motorola.video": { + "source": "apache" + }, + "video/vnd.motorola.videop": { + "source": "apache" + }, + "video/vnd.mpegurl": { + "source": "apache", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "apache", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "apache" + }, + "video/vnd.nokia.videovoip": { + "source": "apache" + }, + "video/vnd.objectvideo": { + "source": "apache" + }, + "video/vnd.sealed.mpeg1": { + "source": "apache" + }, + "video/vnd.sealed.mpeg4": { + "source": "apache" + }, + "video/vnd.sealed.swf": { + "source": "apache" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "apache" + }, + "video/vnd.uvvu.mp4": { + "source": "apache", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "apache", + "extensions": ["viv"] + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} +},{}],324:[function(require,module,exports){ +module["exports"] = [ + "ants", + "bats", + "bears", + "bees", + "birds", + "buffalo", + "cats", + "chickens", + "cattle", + "dogs", + "dolphins", + "ducks", + "elephants", + "fishes", + "foxes", + "frogs", + "geese", + "goats", + "horses", + "kangaroos", + "lions", + "monkeys", + "owls", + "oxen", + "penguins", + "people", + "pigs", + "rabbits", + "sheep", + "tigers", + "whales", + "wolves", + "zebras", + "banshees", + "crows", + "black cats", + "chimeras", + "ghosts", + "conspirators", + "dragons", + "dwarves", + "elves", + "enchanters", + "exorcists", + "sons", + "foes", + "giants", + "gnomes", + "goblins", + "gooses", + "griffins", + "lycanthropes", + "nemesis", + "ogres", + "oracles", + "prophets", + "sorcerors", + "spiders", + "spirits", + "vampires", + "warlocks", + "vixens", + "werewolves", + "witches", + "worshipers", + "zombies", + "druids" +]; + +},{}],325:[function(require,module,exports){ +var team = {}; +module['exports'] = team; +team.creature = require("./creature"); +team.name = require("./name"); + +},{"./creature":324,"./name":326}],326:[function(require,module,exports){ +module["exports"] = [ + "#{Address.state} #{creature}" +]; + +},{}],327:[function(require,module,exports){ +module["exports"] = [ + "####", + "###", + "##" +]; + +},{}],328:[function(require,module,exports){ +module["exports"] = [ + "Australia" +]; + +},{}],329:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.state_abbr = require("./state_abbr"); +address.state = require("./state"); +address.postcode = require("./postcode"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.default_country = require("./default_country"); + +},{"./building_number":327,"./default_country":328,"./postcode":330,"./state":331,"./state_abbr":332,"./street_suffix":333}],330:[function(require,module,exports){ +module["exports"] = [ + "0###", + "2###", + "3###", + "4###", + "5###", + "6###", + "7###" +]; + +},{}],331:[function(require,module,exports){ +module["exports"] = [ + "New South Wales", + "Queensland", + "Northern Territory", + "South Australia", + "Western Australia", + "Tasmania", + "Australian Capital Territory", + "Victoria" +]; + +},{}],332:[function(require,module,exports){ +module["exports"] = [ + "NSW", + "QLD", + "NT", + "SA", + "WA", + "TAS", + "ACT", + "VIC" +]; + +},{}],333:[function(require,module,exports){ +module["exports"] = [ + "Avenue", + "Boulevard", + "Circle", + "Circuit", + "Court", + "Crescent", + "Crest", + "Drive", + "Estate Dr", + "Grove", + "Hill", + "Island", + "Junction", + "Knoll", + "Lane", + "Loop", + "Mall", + "Manor", + "Meadow", + "Mews", + "Parade", + "Parkway", + "Pass", + "Place", + "Plaza", + "Ridge", + "Road", + "Run", + "Square", + "Station St", + "Street", + "Summit", + "Terrace", + "Track", + "Trail", + "View Rd", + "Way" +]; + +},{}],334:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); + +},{"./suffix":335}],335:[function(require,module,exports){ +module["exports"] = [ + "Pty Ltd", + "and Sons", + "Corp", + "Group", + "Brothers", + "Partners" +]; + +},{}],336:[function(require,module,exports){ +var en_AU = {}; +module['exports'] = en_AU; +en_AU.title = "Australia (English)"; +en_AU.name = require("./name"); +en_AU.company = require("./company"); +en_AU.internet = require("./internet"); +en_AU.address = require("./address"); +en_AU.phone_number = require("./phone_number"); + +},{"./address":329,"./company":334,"./internet":338,"./name":340,"./phone_number":343}],337:[function(require,module,exports){ +module["exports"] = [ + "com.au", + "com", + "net.au", + "net", + "org.au", + "org" +]; + +},{}],338:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":337,"dup":226}],339:[function(require,module,exports){ +module["exports"] = [ + "William", + "Jack", + "Oliver", + "Joshua", + "Thomas", + "Lachlan", + "Cooper", + "Noah", + "Ethan", + "Lucas", + "James", + "Samuel", + "Jacob", + "Liam", + "Alexander", + "Benjamin", + "Max", + "Isaac", + "Daniel", + "Riley", + "Ryan", + "Charlie", + "Tyler", + "Jake", + "Matthew", + "Xavier", + "Harry", + "Jayden", + "Nicholas", + "Harrison", + "Levi", + "Luke", + "Adam", + "Henry", + "Aiden", + "Dylan", + "Oscar", + "Michael", + "Jackson", + "Logan", + "Joseph", + "Blake", + "Nathan", + "Connor", + "Elijah", + "Nate", + "Archie", + "Bailey", + "Marcus", + "Cameron", + "Jordan", + "Zachary", + "Caleb", + "Hunter", + "Ashton", + "Toby", + "Aidan", + "Hayden", + "Mason", + "Hamish", + "Edward", + "Angus", + "Eli", + "Sebastian", + "Christian", + "Patrick", + "Andrew", + "Anthony", + "Luca", + "Kai", + "Beau", + "Alex", + "George", + "Callum", + "Finn", + "Zac", + "Mitchell", + "Jett", + "Jesse", + "Gabriel", + "Leo", + "Declan", + "Charles", + "Jasper", + "Jonathan", + "Aaron", + "Hugo", + "David", + "Christopher", + "Chase", + "Owen", + "Justin", + "Ali", + "Darcy", + "Lincoln", + "Cody", + "Phoenix", + "Sam", + "John", + "Joel", + "Isabella", + "Ruby", + "Chloe", + "Olivia", + "Charlotte", + "Mia", + "Lily", + "Emily", + "Ella", + "Sienna", + "Sophie", + "Amelia", + "Grace", + "Ava", + "Zoe", + "Emma", + "Sophia", + "Matilda", + "Hannah", + "Jessica", + "Lucy", + "Georgia", + "Sarah", + "Abigail", + "Zara", + "Eva", + "Scarlett", + "Jasmine", + "Chelsea", + "Lilly", + "Ivy", + "Isla", + "Evie", + "Isabelle", + "Maddison", + "Layla", + "Summer", + "Annabelle", + "Alexis", + "Elizabeth", + "Bella", + "Holly", + "Lara", + "Madison", + "Alyssa", + "Maya", + "Tahlia", + "Claire", + "Hayley", + "Imogen", + "Jade", + "Ellie", + "Sofia", + "Addison", + "Molly", + "Phoebe", + "Alice", + "Savannah", + "Gabriella", + "Kayla", + "Mikayla", + "Abbey", + "Eliza", + "Willow", + "Alexandra", + "Poppy", + "Samantha", + "Stella", + "Amy", + "Amelie", + "Anna", + "Piper", + "Gemma", + "Isabel", + "Victoria", + "Stephanie", + "Caitlin", + "Heidi", + "Paige", + "Rose", + "Amber", + "Audrey", + "Claudia", + "Taylor", + "Madeline", + "Angelina", + "Natalie", + "Charli", + "Lauren", + "Ashley", + "Violet", + "Mackenzie", + "Abby", + "Skye", + "Lillian", + "Alana", + "Lola", + "Leah", + "Eve", + "Kiara" +]; + +},{}],340:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); + +},{"./first_name":339,"./last_name":341}],341:[function(require,module,exports){ +module["exports"] = [ + "Smith", + "Jones", + "Williams", + "Brown", + "Wilson", + "Taylor", + "Johnson", + "White", + "Martin", + "Anderson", + "Thompson", + "Nguyen", + "Thomas", + "Walker", + "Harris", + "Lee", + "Ryan", + "Robinson", + "Kelly", + "King", + "Davis", + "Wright", + "Evans", + "Roberts", + "Green", + "Hall", + "Wood", + "Jackson", + "Clarke", + "Patel", + "Khan", + "Lewis", + "James", + "Phillips", + "Mason", + "Mitchell", + "Rose", + "Davies", + "Rodriguez", + "Cox", + "Alexander", + "Garden", + "Campbell", + "Johnston", + "Moore", + "Smyth", + "O'neill", + "Doherty", + "Stewart", + "Quinn", + "Murphy", + "Graham", + "Mclaughlin", + "Hamilton", + "Murray", + "Hughes", + "Robertson", + "Thomson", + "Scott", + "Macdonald", + "Reid", + "Clark", + "Ross", + "Young", + "Watson", + "Paterson", + "Morrison", + "Morgan", + "Griffiths", + "Edwards", + "Rees", + "Jenkins", + "Owen", + "Price", + "Moss", + "Richards", + "Abbott", + "Adams", + "Armstrong", + "Bahringer", + "Bailey", + "Barrows", + "Bartell", + "Bartoletti", + "Barton", + "Bauch", + "Baumbach", + "Bayer", + "Beahan", + "Beatty", + "Becker", + "Beier", + "Berge", + "Bergstrom", + "Bode", + "Bogan", + "Borer", + "Bosco", + "Botsford", + "Boyer", + "Boyle", + "Braun", + "Bruen", + "Carroll", + "Carter", + "Cartwright", + "Casper", + "Cassin", + "Champlin", + "Christiansen", + "Cole", + "Collier", + "Collins", + "Connelly", + "Conroy", + "Corkery", + "Cormier", + "Corwin", + "Cronin", + "Crooks", + "Cruickshank", + "Cummings", + "D'amore", + "Daniel", + "Dare", + "Daugherty", + "Dickens", + "Dickinson", + "Dietrich", + "Donnelly", + "Dooley", + "Douglas", + "Doyle", + "Durgan", + "Ebert", + "Emard", + "Emmerich", + "Erdman", + "Ernser", + "Fadel", + "Fahey", + "Farrell", + "Fay", + "Feeney", + "Feil", + "Ferry", + "Fisher", + "Flatley", + "Gibson", + "Gleason", + "Glover", + "Goldner", + "Goodwin", + "Grady", + "Grant", + "Greenfelder", + "Greenholt", + "Grimes", + "Gutmann", + "Hackett", + "Hahn", + "Haley", + "Hammes", + "Hand", + "Hane", + "Hansen", + "Harber", + "Hartmann", + "Harvey", + "Hayes", + "Heaney", + "Heathcote", + "Heller", + "Hermann", + "Hermiston", + "Hessel", + "Hettinger", + "Hickle", + "Hill", + "Hills", + "Hoppe", + "Howe", + "Howell", + "Hudson", + "Huel", + "Hyatt", + "Jacobi", + "Jacobs", + "Jacobson", + "Jerde", + "Johns", + "Keeling", + "Kemmer", + "Kessler", + "Kiehn", + "Kirlin", + "Klein", + "Koch", + "Koelpin", + "Kohler", + "Koss", + "Kovacek", + "Kreiger", + "Kris", + "Kuhlman", + "Kuhn", + "Kulas", + "Kunde", + "Kutch", + "Lakin", + "Lang", + "Langworth", + "Larkin", + "Larson", + "Leannon", + "Leffler", + "Little", + "Lockman", + "Lowe", + "Lynch", + "Mann", + "Marks", + "Marvin", + "Mayer", + "Mccullough", + "Mcdermott", + "Mckenzie", + "Miller", + "Mills", + "Monahan", + "Morissette", + "Mueller", + "Muller", + "Nader", + "Nicolas", + "Nolan", + "O'connell", + "O'conner", + "O'hara", + "O'keefe", + "Olson", + "O'reilly", + "Parisian", + "Parker", + "Quigley", + "Reilly", + "Reynolds", + "Rice", + "Ritchie", + "Rohan", + "Rolfson", + "Rowe", + "Russel", + "Rutherford", + "Sanford", + "Sauer", + "Schmidt", + "Schmitt", + "Schneider", + "Schroeder", + "Schultz", + "Shields", + "Smitham", + "Spencer", + "Stanton", + "Stark", + "Stokes", + "Swift", + "Tillman", + "Towne", + "Tremblay", + "Tromp", + "Turcotte", + "Turner", + "Walsh", + "Walter", + "Ward", + "Waters", + "Weber", + "Welch", + "West", + "Wilderman", + "Wilkinson", + "Williamson", + "Windler", + "Wolf" +]; + +},{}],342:[function(require,module,exports){ +module["exports"] = [ + "0# #### ####", + "+61 # #### ####", + "04## ### ###", + "+61 4## ### ###" +]; + +},{}],343:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":342,"dup":108}],344:[function(require,module,exports){ +var en_BORK = {}; +module['exports'] = en_BORK; +en_BORK.title = "Bork (English)"; +en_BORK.lorem = require("./lorem"); + +},{"./lorem":345}],345:[function(require,module,exports){ +arguments[4][176][0].apply(exports,arguments) +},{"./words":346,"dup":176}],346:[function(require,module,exports){ +module["exports"] = [ + "Boot", + "I", + "Nu", + "Nur", + "Tu", + "Um", + "a", + "becoose-a", + "boot", + "bork", + "burn", + "chuuses", + "cumplete-a", + "cun", + "cunseqooences", + "curcoomstunces", + "dee", + "deeslikes", + "denuoonceeng", + "desures", + "du", + "eccuoont", + "ectooel", + "edfuntege-a", + "efueeds", + "egeeen", + "ell", + "ere-a", + "feend", + "foolt", + "frum", + "geefe-a", + "gesh", + "greet", + "heem", + "heppeeness", + "hes", + "hoo", + "hoomun", + "idea", + "ifer", + "in", + "incuoonter", + "injuy", + "itselff", + "ixcept", + "ixemple-a", + "ixerceese-a", + "ixpleeen", + "ixplurer", + "ixpuoond", + "ixtremely", + "knoo", + "lebureeuoos", + "lufes", + "meestekee", + "mester-booeelder", + "moost", + "mun", + "nu", + "nut", + "oobteeen", + "oocceseeunelly", + "ooccoor", + "ooff", + "oone-a", + "oor", + "peeen", + "peeenffool", + "physeecel", + "pleesoore-a", + "poorsooe-a", + "poorsooes", + "preeesing", + "prucoore-a", + "prudooces", + "reeght", + "reshunelly", + "resooltunt", + "sume-a", + "teecheengs", + "teke-a", + "thees", + "thet", + "thuse-a", + "treefiel", + "troot", + "tu", + "tueel", + "und", + "undertekes", + "unnuyeeng", + "uny", + "unyune-a", + "us", + "veell", + "veet", + "ves", + "vheech", + "vhu", + "yuoo", + "zee", + "zeere-a" +]; + +},{}],347:[function(require,module,exports){ +module["exports"] = [ + "Canada" +]; + +},{}],348:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.default_country = require("./default_country"); +address.postcode = require('./postcode.js'); + +},{"./default_country":347,"./postcode.js":349,"./state":350,"./state_abbr":351}],349:[function(require,module,exports){ +module["exports"] = [ + "?#? #?#" +]; + +},{}],350:[function(require,module,exports){ +module["exports"] = [ + "Alberta", + "British Columbia", + "Manitoba", + "New Brunswick", + "Newfoundland and Labrador", + "Nova Scotia", + "Northwest Territories", + "Nunavut", + "Ontario", + "Prince Edward Island", + "Quebec", + "Saskatchewan", + "Yukon" +]; + +},{}],351:[function(require,module,exports){ +module["exports"] = [ + "AB", + "BC", + "MB", + "NB", + "NL", + "NS", + "NU", + "NT", + "ON", + "PE", + "QC", + "SK", + "YT" +]; + +},{}],352:[function(require,module,exports){ +var en_CA = {}; +module['exports'] = en_CA; +en_CA.title = "Canada (English)"; +en_CA.address = require("./address"); +en_CA.internet = require("./internet"); +en_CA.phone_number = require("./phone_number"); + +},{"./address":348,"./internet":355,"./phone_number":357}],353:[function(require,module,exports){ +module["exports"] = [ + "ca", + "com", + "biz", + "info", + "name", + "net", + "org" +]; + +},{}],354:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.ca", + "hotmail.com" +]; + +},{}],355:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":353,"./free_email":354,"dup":98}],356:[function(require,module,exports){ +module["exports"] = [ + "###-###-####", + "(###)###-####", + "###.###.####", + "1-###-###-####", + "###-###-#### x###", + "(###)###-#### x###", + "1-###-###-#### x###", + "###.###.#### x###", + "###-###-#### x####", + "(###)###-#### x####", + "1-###-###-#### x####", + "###.###.#### x####", + "###-###-#### x#####", + "(###)###-#### x#####", + "1-###-###-#### x#####", + "###.###.#### x#####" +]; + +},{}],357:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":356,"dup":108}],358:[function(require,module,exports){ +module["exports"] = [ + "Avon", + "Bedfordshire", + "Berkshire", + "Borders", + "Buckinghamshire", + "Cambridgeshire", + "Central", + "Cheshire", + "Cleveland", + "Clwyd", + "Cornwall", + "County Antrim", + "County Armagh", + "County Down", + "County Fermanagh", + "County Londonderry", + "County Tyrone", + "Cumbria", + "Derbyshire", + "Devon", + "Dorset", + "Dumfries and Galloway", + "Durham", + "Dyfed", + "East Sussex", + "Essex", + "Fife", + "Gloucestershire", + "Grampian", + "Greater Manchester", + "Gwent", + "Gwynedd County", + "Hampshire", + "Herefordshire", + "Hertfordshire", + "Highlands and Islands", + "Humberside", + "Isle of Wight", + "Kent", + "Lancashire", + "Leicestershire", + "Lincolnshire", + "Lothian", + "Merseyside", + "Mid Glamorgan", + "Norfolk", + "North Yorkshire", + "Northamptonshire", + "Northumberland", + "Nottinghamshire", + "Oxfordshire", + "Powys", + "Rutland", + "Shropshire", + "Somerset", + "South Glamorgan", + "South Yorkshire", + "Staffordshire", + "Strathclyde", + "Suffolk", + "Surrey", + "Tayside", + "Tyne and Wear", + "Warwickshire", + "West Glamorgan", + "West Midlands", + "West Sussex", + "West Yorkshire", + "Wiltshire", + "Worcestershire" +]; + +},{}],359:[function(require,module,exports){ +module["exports"] = [ + "England", + "Scotland", + "Wales", + "Northern Ireland" +]; + +},{}],360:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.county = require("./county"); +address.uk_country = require("./uk_country"); +address.default_country = require("./default_country"); +address.postcode = require("./postcode"); + +},{"./county":358,"./default_country":359,"./postcode":361,"./uk_country":362}],361:[function(require,module,exports){ +module["exports"] = [ + "??# #??", + "??## #??", +]; + +},{}],362:[function(require,module,exports){ +arguments[4][359][0].apply(exports,arguments) +},{"dup":359}],363:[function(require,module,exports){ +module["exports"] = [ + "074## ######", + "075## ######", + "076## ######", + "077## ######", + "078## ######", + "079## ######" +]; + +},{}],364:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":363,"dup":167}],365:[function(require,module,exports){ +var en_GB = {}; +module['exports'] = en_GB; +en_GB.title = "Great Britain (English)"; +en_GB.address = require("./address"); +en_GB.internet = require("./internet"); +en_GB.phone_number = require("./phone_number"); +en_GB.cell_phone = require("./cell_phone"); + +},{"./address":360,"./cell_phone":364,"./internet":367,"./phone_number":369}],366:[function(require,module,exports){ +module["exports"] = [ + "co.uk", + "com", + "biz", + "info", + "name" +]; + +},{}],367:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":366,"dup":226}],368:[function(require,module,exports){ +module["exports"] = [ + "01#### #####", + "01### ######", + "01#1 ### ####", + "011# ### ####", + "02# #### ####", + "03## ### ####", + "055 #### ####", + "056 #### ####", + "0800 ### ####", + "08## ### ####", + "09## ### ####", + "016977 ####", + "01### #####", + "0500 ######", + "0800 ######" +]; + +},{}],369:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":368,"dup":108}],370:[function(require,module,exports){ +module["exports"] = [ + "Carlow", + "Cavan", + "Clare", + "Cork", + "Donegal", + "Dublin", + "Galway", + "Kerry", + "Kildare", + "Kilkenny", + "Laois", + "Leitrim", + "Limerick", + "Longford", + "Louth", + "Mayo", + "Meath", + "Monaghan", + "Offaly", + "Roscommon", + "Sligo", + "Tipperary", + "Waterford", + "Westmeath", + "Wexford", + "Wicklow" +]; + +},{}],371:[function(require,module,exports){ +module["exports"] = [ + "Ireland" +]; + +},{}],372:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.county = require("./county"); +address.default_country = require("./default_country"); + +},{"./county":370,"./default_country":371}],373:[function(require,module,exports){ +module["exports"] = [ + "082 ### ####", + "083 ### ####", + "085 ### ####", + "086 ### ####", + "087 ### ####", + "089 ### ####" +]; + +},{}],374:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":373,"dup":167}],375:[function(require,module,exports){ +var en_IE = {}; +module['exports'] = en_IE; +en_IE.title = "Ireland (English)"; +en_IE.address = require("./address"); +en_IE.internet = require("./internet"); +en_IE.phone_number = require("./phone_number"); +en_IE.cell_phone = require("./cell_phone"); + +},{"./address":372,"./cell_phone":374,"./internet":377,"./phone_number":379}],376:[function(require,module,exports){ +module["exports"] = [ + "ie", + "com", + "net", + "info", + "eu" +]; + +},{}],377:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":376,"dup":226}],378:[function(require,module,exports){ +module["exports"] = [ + "01 #######", + "021 #######", + "022 #######", + "023 #######", + "024 #######", + "025 #######", + "026 #######", + "027 #######", + "028 #######", + "029 #######", + "0402 #######", + "0404 #######", + "041 #######", + "042 #######", + "043 #######", + "044 #######", + "045 #######", + "046 #######", + "047 #######", + "049 #######", + "0504 #######", + "0505 #######", + "051 #######", + "052 #######", + "053 #######", + "056 #######", + "057 #######", + "058 #######", + "059 #######", + "061 #######", + "062 #######", + "063 #######", + "064 #######", + "065 #######", + "066 #######", + "067 #######", + "068 #######", + "069 #######", + "071 #######", + "074 #######", + "090 #######", + "091 #######", + "093 #######", + "094 #######", + "095 #######", + "096 #######", + "097 #######", + "098 #######", + "099 #######" +]; + +},{}],379:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":378,"dup":108}],380:[function(require,module,exports){ +module["exports"] = [ + "India", + "Indian Republic", + "Bharat", + "Hindustan" +]; + +},{}],381:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.default_country = require("./default_country"); + +},{"./default_country":380,"./postcode":382,"./state":383,"./state_abbr":384}],382:[function(require,module,exports){ +arguments[4][349][0].apply(exports,arguments) +},{"dup":349}],383:[function(require,module,exports){ +module["exports"] = [ + "Andra Pradesh", + "Arunachal Pradesh", + "Assam", + "Bihar", + "Chhattisgarh", + "Goa", + "Gujarat", + "Haryana", + "Himachal Pradesh", + "Jammu and Kashmir", + "Jharkhand", + "Karnataka", + "Kerala", + "Madya Pradesh", + "Maharashtra", + "Manipur", + "Meghalaya", + "Mizoram", + "Nagaland", + "Orissa", + "Punjab", + "Rajasthan", + "Sikkim", + "Tamil Nadu", + "Tripura", + "Uttaranchal", + "Uttar Pradesh", + "West Bengal", + "Andaman and Nicobar Islands", + "Chandigarh", + "Dadar and Nagar Haveli", + "Daman and Diu", + "Delhi", + "Lakshadweep", + "Pondicherry" +]; + +},{}],384:[function(require,module,exports){ +module["exports"] = [ + "AP", + "AR", + "AS", + "BR", + "CG", + "DL", + "GA", + "GJ", + "HR", + "HP", + "JK", + "JS", + "KA", + "KL", + "MP", + "MH", + "MN", + "ML", + "MZ", + "NL", + "OR", + "PB", + "RJ", + "SK", + "TN", + "TR", + "UK", + "UP", + "WB", + "AN", + "CH", + "DN", + "DD", + "LD", + "PY" +]; + +},{}],385:[function(require,module,exports){ +arguments[4][334][0].apply(exports,arguments) +},{"./suffix":386,"dup":334}],386:[function(require,module,exports){ +module["exports"] = [ + "Pvt Ltd", + "Limited", + "Ltd", + "and Sons", + "Corp", + "Group", + "Brothers" +]; + +},{}],387:[function(require,module,exports){ +var en_IND = {}; +module['exports'] = en_IND; +en_IND.title = "India (English)"; +en_IND.name = require("./name"); +en_IND.address = require("./address"); +en_IND.internet = require("./internet"); +en_IND.company = require("./company"); +en_IND.phone_number = require("./phone_number"); + +},{"./address":381,"./company":385,"./internet":390,"./name":392,"./phone_number":395}],388:[function(require,module,exports){ +module["exports"] = [ + "in", + "com", + "biz", + "info", + "name", + "net", + "org", + "co.in" +]; + +},{}],389:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.co.in", + "hotmail.com" +]; + +},{}],390:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":388,"./free_email":389,"dup":98}],391:[function(require,module,exports){ +module["exports"] = [ + "Aadrika", + "Aanandinii", + "Aaratrika", + "Aarya", + "Arya", + "Aashritha", + "Aatmaja", + "Atmaja", + "Abhaya", + "Adwitiya", + "Agrata", + "Ahilya", + "Ahalya", + "Aishani", + "Akshainie", + "Akshata", + "Akshita", + "Akula", + "Ambar", + "Amodini", + "Amrita", + "Amritambu", + "Anala", + "Anamika", + "Ananda", + "Anandamayi", + "Ananta", + "Anila", + "Anjali", + "Anjushri", + "Anjushree", + "Annapurna", + "Anshula", + "Anuja", + "Anusuya", + "Anasuya", + "Anasooya", + "Anwesha", + "Apsara", + "Aruna", + "Asha", + "Aasa", + "Aasha", + "Aslesha", + "Atreyi", + "Atreyee", + "Avani", + "Abani", + "Avantika", + "Ayushmati", + "Baidehi", + "Vaidehi", + "Bala", + "Baala", + "Balamani", + "Basanti", + "Vasanti", + "Bela", + "Bhadra", + "Bhagirathi", + "Bhagwanti", + "Bhagwati", + "Bhamini", + "Bhanumati", + "Bhaanumati", + "Bhargavi", + "Bhavani", + "Bhilangana", + "Bilwa", + "Bilva", + "Buddhana", + "Chakrika", + "Chanda", + "Chandi", + "Chandni", + "Chandini", + "Chandani", + "Chandra", + "Chandira", + "Chandrabhaga", + "Chandrakala", + "Chandrakin", + "Chandramani", + "Chandrani", + "Chandraprabha", + "Chandraswaroopa", + "Chandravati", + "Chapala", + "Charumati", + "Charvi", + "Chatura", + "Chitrali", + "Chitramala", + "Chitrangada", + "Daksha", + "Dakshayani", + "Damayanti", + "Darshwana", + "Deepali", + "Dipali", + "Deeptimoyee", + "Deeptimayee", + "Devangana", + "Devani", + "Devasree", + "Devi", + "Daevi", + "Devika", + "Daevika", + "Dhaanyalakshmi", + "Dhanalakshmi", + "Dhana", + "Dhanadeepa", + "Dhara", + "Dharani", + "Dharitri", + "Dhatri", + "Diksha", + "Deeksha", + "Divya", + "Draupadi", + "Dulari", + "Durga", + "Durgeshwari", + "Ekaparnika", + "Elakshi", + "Enakshi", + "Esha", + "Eshana", + "Eshita", + "Gautami", + "Gayatri", + "Geeta", + "Geetanjali", + "Gitanjali", + "Gemine", + "Gemini", + "Girja", + "Girija", + "Gita", + "Hamsini", + "Harinakshi", + "Harita", + "Heema", + "Himadri", + "Himani", + "Hiranya", + "Indira", + "Jaimini", + "Jaya", + "Jyoti", + "Jyotsana", + "Kali", + "Kalinda", + "Kalpana", + "Kalyani", + "Kama", + "Kamala", + "Kamla", + "Kanchan", + "Kanishka", + "Kanti", + "Kashyapi", + "Kumari", + "Kumuda", + "Lakshmi", + "Laxmi", + "Lalita", + "Lavanya", + "Leela", + "Lila", + "Leela", + "Madhuri", + "Malti", + "Malati", + "Mandakini", + "Mandaakin", + "Mangala", + "Mangalya", + "Mani", + "Manisha", + "Manjusha", + "Meena", + "Mina", + "Meenakshi", + "Minakshi", + "Menka", + "Menaka", + "Mohana", + "Mohini", + "Nalini", + "Nikita", + "Ojaswini", + "Omana", + "Oormila", + "Urmila", + "Opalina", + "Opaline", + "Padma", + "Parvati", + "Poornima", + "Purnima", + "Pramila", + "Prasanna", + "Preity", + "Prema", + "Priya", + "Priyala", + "Pushti", + "Radha", + "Rageswari", + "Rageshwari", + "Rajinder", + "Ramaa", + "Rati", + "Rita", + "Rohana", + "Rukhmani", + "Rukmin", + "Rupinder", + "Sanya", + "Sarada", + "Sharda", + "Sarala", + "Sarla", + "Saraswati", + "Sarisha", + "Saroja", + "Shakti", + "Shakuntala", + "Shanti", + "Sharmila", + "Shashi", + "Shashikala", + "Sheela", + "Shivakari", + "Shobhana", + "Shresth", + "Shresthi", + "Shreya", + "Shreyashi", + "Shridevi", + "Shrishti", + "Shubha", + "Shubhaprada", + "Siddhi", + "Sitara", + "Sloka", + "Smita", + "Smriti", + "Soma", + "Subhashini", + "Subhasini", + "Sucheta", + "Sudeva", + "Sujata", + "Sukanya", + "Suma", + "Suma", + "Sumitra", + "Sunita", + "Suryakantam", + "Sushma", + "Swara", + "Swarnalata", + "Sweta", + "Shwet", + "Tanirika", + "Tanushree", + "Tanushri", + "Tanushri", + "Tanya", + "Tara", + "Trisha", + "Uma", + "Usha", + "Vaijayanti", + "Vaijayanthi", + "Baijayanti", + "Vaishvi", + "Vaishnavi", + "Vaishno", + "Varalakshmi", + "Vasudha", + "Vasundhara", + "Veda", + "Vedanshi", + "Vidya", + "Vimala", + "Vrinda", + "Vrund", + "Aadi", + "Aadidev", + "Aadinath", + "Aaditya", + "Aagam", + "Aagney", + "Aamod", + "Aanandaswarup", + "Anand Swarup", + "Aanjaneya", + "Anjaneya", + "Aaryan", + "Aryan", + "Aatmaj", + "Aatreya", + "Aayushmaan", + "Aayushman", + "Abhaidev", + "Abhaya", + "Abhirath", + "Abhisyanta", + "Acaryatanaya", + "Achalesvara", + "Acharyanandana", + "Acharyasuta", + "Achintya", + "Achyut", + "Adheesh", + "Adhiraj", + "Adhrit", + "Adikavi", + "Adinath", + "Aditeya", + "Aditya", + "Adityanandan", + "Adityanandana", + "Adripathi", + "Advaya", + "Agasti", + "Agastya", + "Agneya", + "Aagneya", + "Agnimitra", + "Agniprava", + "Agnivesh", + "Agrata", + "Ajit", + "Ajeet", + "Akroor", + "Akshaj", + "Akshat", + "Akshayakeerti", + "Alok", + "Aalok", + "Amaranaath", + "Amarnath", + "Amaresh", + "Ambar", + "Ameyatma", + "Amish", + "Amogh", + "Amrit", + "Anaadi", + "Anagh", + "Anal", + "Anand", + "Aanand", + "Anang", + "Anil", + "Anilaabh", + "Anilabh", + "Anish", + "Ankal", + "Anunay", + "Anurag", + "Anuraag", + "Archan", + "Arindam", + "Arjun", + "Arnesh", + "Arun", + "Ashlesh", + "Ashok", + "Atmanand", + "Atmananda", + "Avadhesh", + "Baalaaditya", + "Baladitya", + "Baalagopaal", + "Balgopal", + "Balagopal", + "Bahula", + "Bakula", + "Bala", + "Balaaditya", + "Balachandra", + "Balagovind", + "Bandhu", + "Bandhul", + "Bankim", + "Bankimchandra", + "Bhadrak", + "Bhadraksh", + "Bhadran", + "Bhagavaan", + "Bhagvan", + "Bharadwaj", + "Bhardwaj", + "Bharat", + "Bhargava", + "Bhasvan", + "Bhaasvan", + "Bhaswar", + "Bhaaswar", + "Bhaumik", + "Bhaves", + "Bheeshma", + "Bhisham", + "Bhishma", + "Bhima", + "Bhoj", + "Bhramar", + "Bhudev", + "Bhudeva", + "Bhupati", + "Bhoopati", + "Bhoopat", + "Bhupen", + "Bhushan", + "Bhooshan", + "Bhushit", + "Bhooshit", + "Bhuvanesh", + "Bhuvaneshwar", + "Bilva", + "Bodhan", + "Brahma", + "Brahmabrata", + "Brahmanandam", + "Brahmaanand", + "Brahmdev", + "Brajendra", + "Brajesh", + "Brijesh", + "Birjesh", + "Budhil", + "Chakor", + "Chakradhar", + "Chakravartee", + "Chakravarti", + "Chanakya", + "Chaanakya", + "Chandak", + "Chandan", + "Chandra", + "Chandraayan", + "Chandrabhan", + "Chandradev", + "Chandraketu", + "Chandramauli", + "Chandramohan", + "Chandran", + "Chandranath", + "Chapal", + "Charak", + "Charuchandra", + "Chaaruchandra", + "Charuvrat", + "Chatur", + "Chaturaanan", + "Chaturbhuj", + "Chetan", + "Chaten", + "Chaitan", + "Chetanaanand", + "Chidaakaash", + "Chidaatma", + "Chidambar", + "Chidambaram", + "Chidananda", + "Chinmayanand", + "Chinmayananda", + "Chiranjeev", + "Chiranjeeve", + "Chitraksh", + "Daiwik", + "Daksha", + "Damodara", + "Dandak", + "Dandapaani", + "Darshan", + "Datta", + "Dayaamay", + "Dayamayee", + "Dayaananda", + "Dayaanidhi", + "Kin", + "Deenabandhu", + "Deepan", + "Deepankar", + "Dipankar", + "Deependra", + "Dipendra", + "Deepesh", + "Dipesh", + "Deeptanshu", + "Deeptendu", + "Diptendu", + "Deeptiman", + "Deeptimoy", + "Deeptimay", + "Dev", + "Deb", + "Devadatt", + "Devagya", + "Devajyoti", + "Devak", + "Devdan", + "Deven", + "Devesh", + "Deveshwar", + "Devi", + "Devvrat", + "Dhananjay", + "Dhanapati", + "Dhanpati", + "Dhanesh", + "Dhanu", + "Dhanvin", + "Dharmaketu", + "Dhruv", + "Dhyanesh", + "Dhyaneshwar", + "Digambar", + "Digambara", + "Dinakar", + "Dinkar", + "Dinesh", + "Divaakar", + "Divakar", + "Deevakar", + "Divjot", + "Dron", + "Drona", + "Dwaipayan", + "Dwaipayana", + "Eekalabya", + "Ekalavya", + "Ekaksh", + "Ekaaksh", + "Ekaling", + "Ekdant", + "Ekadant", + "Gajaadhar", + "Gajadhar", + "Gajbaahu", + "Gajabahu", + "Ganak", + "Ganaka", + "Ganapati", + "Gandharv", + "Gandharva", + "Ganesh", + "Gangesh", + "Garud", + "Garuda", + "Gati", + "Gatik", + "Gaurang", + "Gauraang", + "Gauranga", + "Gouranga", + "Gautam", + "Gautama", + "Goutam", + "Ghanaanand", + "Ghanshyam", + "Ghanashyam", + "Giri", + "Girik", + "Girika", + "Girindra", + "Giriraaj", + "Giriraj", + "Girish", + "Gopal", + "Gopaal", + "Gopi", + "Gopee", + "Gorakhnath", + "Gorakhanatha", + "Goswamee", + "Goswami", + "Gotum", + "Gautam", + "Govinda", + "Gobinda", + "Gudakesha", + "Gudakesa", + "Gurdev", + "Guru", + "Hari", + "Harinarayan", + "Harit", + "Himadri", + "Hiranmay", + "Hiranmaya", + "Hiranya", + "Inder", + "Indra", + "Indra", + "Jagadish", + "Jagadisha", + "Jagathi", + "Jagdeep", + "Jagdish", + "Jagmeet", + "Jahnu", + "Jai", + "Javas", + "Jay", + "Jitendra", + "Jitender", + "Jyotis", + "Kailash", + "Kama", + "Kamalesh", + "Kamlesh", + "Kanak", + "Kanaka", + "Kannan", + "Kannen", + "Karan", + "Karthik", + "Kartik", + "Karunanidhi", + "Kashyap", + "Kiran", + "Kirti", + "Keerti", + "Krishna", + "Krishnadas", + "Krishnadasa", + "Kumar", + "Lai", + "Lakshman", + "Laxman", + "Lakshmidhar", + "Lakshminath", + "Lal", + "Laal", + "Mahendra", + "Mohinder", + "Mahesh", + "Maheswar", + "Mani", + "Manik", + "Manikya", + "Manoj", + "Marut", + "Mayoor", + "Meghnad", + "Meghnath", + "Mohan", + "Mukesh", + "Mukul", + "Nagabhushanam", + "Nanda", + "Narayan", + "Narendra", + "Narinder", + "Naveen", + "Navin", + "Nawal", + "Naval", + "Nimit", + "Niranjan", + "Nirbhay", + "Niro", + "Param", + "Paramartha", + "Pran", + "Pranay", + "Prasad", + "Prathamesh", + "Prayag", + "Prem", + "Puneet", + "Purushottam", + "Rahul", + "Raj", + "Rajan", + "Rajendra", + "Rajinder", + "Rajiv", + "Rakesh", + "Ramesh", + "Rameshwar", + "Ranjit", + "Ranjeet", + "Ravi", + "Ritesh", + "Rohan", + "Rohit", + "Rudra", + "Sachin", + "Sameer", + "Samir", + "Sanjay", + "Sanka", + "Sarvin", + "Satish", + "Satyen", + "Shankar", + "Shantanu", + "Shashi", + "Sher", + "Shiv", + "Siddarth", + "Siddhran", + "Som", + "Somu", + "Somnath", + "Subhash", + "Subodh", + "Suman", + "Suresh", + "Surya", + "Suryakant", + "Suryakanta", + "Sushil", + "Susheel", + "Swami", + "Swapnil", + "Tapan", + "Tara", + "Tarun", + "Tej", + "Tejas", + "Trilochan", + "Trilochana", + "Trilok", + "Trilokesh", + "Triloki", + "Triloki Nath", + "Trilokanath", + "Tushar", + "Udai", + "Udit", + "Ujjawal", + "Ujjwal", + "Umang", + "Upendra", + "Uttam", + "Vasudev", + "Vasudeva", + "Vedang", + "Vedanga", + "Vidhya", + "Vidur", + "Vidhur", + "Vijay", + "Vimal", + "Vinay", + "Vishnu", + "Bishnu", + "Vishwamitra", + "Vyas", + "Yogendra", + "Yoginder", + "Yogesh" +]; + +},{}],392:[function(require,module,exports){ +arguments[4][340][0].apply(exports,arguments) +},{"./first_name":391,"./last_name":393,"dup":340}],393:[function(require,module,exports){ +module["exports"] = [ + "Abbott", + "Achari", + "Acharya", + "Adiga", + "Agarwal", + "Ahluwalia", + "Ahuja", + "Arora", + "Asan", + "Bandopadhyay", + "Banerjee", + "Bharadwaj", + "Bhat", + "Butt", + "Bhattacharya", + "Bhattathiri", + "Chaturvedi", + "Chattopadhyay", + "Chopra", + "Desai", + "Deshpande", + "Devar", + "Dhawan", + "Dubashi", + "Dutta", + "Dwivedi", + "Embranthiri", + "Ganaka", + "Gandhi", + "Gill", + "Gowda", + "Guha", + "Guneta", + "Gupta", + "Iyer", + "Iyengar", + "Jain", + "Jha", + "Johar", + "Joshi", + "Kakkar", + "Kaniyar", + "Kapoor", + "Kaul", + "Kaur", + "Khan", + "Khanna", + "Khatri", + "Kocchar", + "Mahajan", + "Malik", + "Marar", + "Menon", + "Mehra", + "Mehrotra", + "Mishra", + "Mukhopadhyay", + "Nayar", + "Naik", + "Nair", + "Nambeesan", + "Namboothiri", + "Nehru", + "Pandey", + "Panicker", + "Patel", + "Patil", + "Pilla", + "Pillai", + "Pothuvaal", + "Prajapat", + "Rana", + "Reddy", + "Saini", + "Sethi", + "Shah", + "Sharma", + "Shukla", + "Singh", + "Sinha", + "Somayaji", + "Tagore", + "Talwar", + "Tandon", + "Trivedi", + "Varrier", + "Varma", + "Varman", + "Verma" +]; + +},{}],394:[function(require,module,exports){ +module["exports"] = [ + "+91###-###-####", + "+91##########", + "+91-###-#######" +]; + +},{}],395:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":394,"dup":108}],396:[function(require,module,exports){ +module["exports"] = [ + "United States", + "United States of America", + "USA" +]; + +},{}],397:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.default_country = require("./default_country"); +address.postcode_by_state = require("./postcode_by_state"); + +},{"./default_country":396,"./postcode_by_state":398}],398:[function(require,module,exports){ +module["exports"] = { + "AL": "350##", + "AK": "995##", + "AS": "967##", + "AZ": "850##", + "AR": "717##", + "CA": "900##", + "CO": "800##", + "CT": "061##", + "DC": "204##", + "DE": "198##", + "FL": "322##", + "GA": "301##", + "HI": "967##", + "ID": "832##", + "IL": "600##", + "IN": "463##", + "IA": "510##", + "KS": "666##", + "KY": "404##", + "LA": "701##", + "ME": "042##", + "MD": "210##", + "MA": "026##", + "MI": "480##", + "MN": "555##", + "MS": "387##", + "MO": "650##", + "MT": "590##", + "NE": "688##", + "NV": "898##", + "NH": "036##", + "NJ": "076##", + "NM": "880##", + "NY": "122##", + "NC": "288##", + "ND": "586##", + "OH": "444##", + "OK": "730##", + "OR": "979##", + "PA": "186##", + "RI": "029##", + "SC": "299##", + "SD": "577##", + "TN": "383##", + "TX": "798##", + "UT": "847##", + "VT": "050##", + "VA": "222##", + "WA": "990##", + "WV": "247##", + "WI": "549##", + "WY": "831##" +}; + +},{}],399:[function(require,module,exports){ +var en_US = {}; +module['exports'] = en_US; +en_US.title = "United States (English)"; +en_US.internet = require("./internet"); +en_US.address = require("./address"); +en_US.phone_number = require("./phone_number"); + +},{"./address":397,"./internet":401,"./phone_number":404}],400:[function(require,module,exports){ +module["exports"] = [ + "com", + "us", + "biz", + "info", + "name", + "net", + "org" +]; + +},{}],401:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":400,"dup":226}],402:[function(require,module,exports){ +module["exports"] = [ + "201", + "202", + "203", + "205", + "206", + "207", + "208", + "209", + "210", + "212", + "213", + "214", + "215", + "216", + "217", + "218", + "219", + "224", + "225", + "227", + "228", + "229", + "231", + "234", + "239", + "240", + "248", + "251", + "252", + "253", + "254", + "256", + "260", + "262", + "267", + "269", + "270", + "276", + "281", + "283", + "301", + "302", + "303", + "304", + "305", + "307", + "308", + "309", + "310", + "312", + "313", + "314", + "315", + "316", + "317", + "318", + "319", + "320", + "321", + "323", + "330", + "331", + "334", + "336", + "337", + "339", + "347", + "351", + "352", + "360", + "361", + "386", + "401", + "402", + "404", + "405", + "406", + "407", + "408", + "409", + "410", + "412", + "413", + "414", + "415", + "417", + "419", + "423", + "424", + "425", + "434", + "435", + "440", + "443", + "445", + "464", + "469", + "470", + "475", + "478", + "479", + "480", + "484", + "501", + "502", + "503", + "504", + "505", + "507", + "508", + "509", + "510", + "512", + "513", + "515", + "516", + "517", + "518", + "520", + "530", + "540", + "541", + "551", + "557", + "559", + "561", + "562", + "563", + "564", + "567", + "570", + "571", + "573", + "574", + "580", + "585", + "586", + "601", + "602", + "603", + "605", + "606", + "607", + "608", + "609", + "610", + "612", + "614", + "615", + "616", + "617", + "618", + "619", + "620", + "623", + "626", + "630", + "631", + "636", + "641", + "646", + "650", + "651", + "660", + "661", + "662", + "667", + "678", + "682", + "701", + "702", + "703", + "704", + "706", + "707", + "708", + "712", + "713", + "714", + "715", + "716", + "717", + "718", + "719", + "720", + "724", + "727", + "731", + "732", + "734", + "737", + "740", + "754", + "757", + "760", + "763", + "765", + "770", + "772", + "773", + "774", + "775", + "781", + "785", + "786", + "801", + "802", + "803", + "804", + "805", + "806", + "808", + "810", + "812", + "813", + "814", + "815", + "816", + "817", + "818", + "828", + "830", + "831", + "832", + "835", + "843", + "845", + "847", + "848", + "850", + "856", + "857", + "858", + "859", + "860", + "862", + "863", + "864", + "865", + "870", + "872", + "878", + "901", + "903", + "904", + "906", + "907", + "908", + "909", + "910", + "912", + "913", + "914", + "915", + "916", + "917", + "918", + "919", + "920", + "925", + "928", + "931", + "936", + "937", + "940", + "941", + "947", + "949", + "952", + "954", + "956", + "959", + "970", + "971", + "972", + "973", + "975", + "978", + "979", + "980", + "984", + "985", + "989" +]; + +},{}],403:[function(require,module,exports){ +arguments[4][402][0].apply(exports,arguments) +},{"dup":402}],404:[function(require,module,exports){ +var phone_number = {}; +module['exports'] = phone_number; +phone_number.area_code = require("./area_code"); +phone_number.exchange_code = require("./exchange_code"); + +},{"./area_code":402,"./exchange_code":403}],405:[function(require,module,exports){ +arguments[4][327][0].apply(exports,arguments) +},{"dup":327}],406:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix}" +]; + +},{}],407:[function(require,module,exports){ +module["exports"] = [ + "Bondi", + "Burleigh Heads", + "Carlton", + "Fitzroy", + "Fremantle", + "Glenelg", + "Manly", + "Noosa", + "Stones Corner", + "St Kilda", + "Surry Hills", + "Yarra Valley" +]; + +},{}],408:[function(require,module,exports){ +arguments[4][328][0].apply(exports,arguments) +},{"dup":328}],409:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.street_root = require("./street_root"); +address.street_name = require("./street_name"); +address.city_prefix = require("./city_prefix"); +address.city = require("./city"); +address.state_abbr = require("./state_abbr"); +address.region = require("./region"); +address.state = require("./state"); +address.postcode = require("./postcode"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.default_country = require("./default_country"); + +},{"./building_number":405,"./city":406,"./city_prefix":407,"./default_country":408,"./postcode":410,"./region":411,"./state":412,"./state_abbr":413,"./street_name":414,"./street_root":415,"./street_suffix":416}],410:[function(require,module,exports){ +arguments[4][330][0].apply(exports,arguments) +},{"dup":330}],411:[function(require,module,exports){ +module["exports"] = [ + "South East Queensland", + "Wide Bay Burnett", + "Margaret River", + "Port Pirie", + "Gippsland", + "Elizabeth", + "Barossa" +]; + +},{}],412:[function(require,module,exports){ +arguments[4][331][0].apply(exports,arguments) +},{"dup":331}],413:[function(require,module,exports){ +arguments[4][332][0].apply(exports,arguments) +},{"dup":332}],414:[function(require,module,exports){ +arguments[4][164][0].apply(exports,arguments) +},{"dup":164}],415:[function(require,module,exports){ +module["exports"] = [ + "Ramsay Street", + "Bonnie Doon", + "Cavill Avenue", + "Queen Street" +]; + +},{}],416:[function(require,module,exports){ +arguments[4][333][0].apply(exports,arguments) +},{"dup":333}],417:[function(require,module,exports){ +arguments[4][334][0].apply(exports,arguments) +},{"./suffix":418,"dup":334}],418:[function(require,module,exports){ +arguments[4][335][0].apply(exports,arguments) +},{"dup":335}],419:[function(require,module,exports){ +var en_au_ocker = {}; +module['exports'] = en_au_ocker; +en_au_ocker.title = "Australia Ocker (English)"; +en_au_ocker.name = require("./name"); +en_au_ocker.company = require("./company"); +en_au_ocker.internet = require("./internet"); +en_au_ocker.address = require("./address"); +en_au_ocker.phone_number = require("./phone_number"); + +},{"./address":409,"./company":417,"./internet":421,"./name":423,"./phone_number":427}],420:[function(require,module,exports){ +arguments[4][337][0].apply(exports,arguments) +},{"dup":337}],421:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":420,"dup":226}],422:[function(require,module,exports){ +module["exports"] = [ + "Charlotte", + "Ava", + "Chloe", + "Emily", + "Olivia", + "Zoe", + "Lily", + "Sophie", + "Amelia", + "Sofia", + "Ella", + "Isabella", + "Ruby", + "Sienna", + "Mia+3", + "Grace", + "Emma", + "Ivy", + "Layla", + "Abigail", + "Isla", + "Hannah", + "Zara", + "Lucy", + "Evie", + "Annabelle", + "Madison", + "Alice", + "Georgia", + "Maya", + "Madeline", + "Audrey", + "Scarlett", + "Isabelle", + "Chelsea", + "Mila", + "Holly", + "Indiana", + "Poppy", + "Harper", + "Sarah", + "Alyssa", + "Jasmine", + "Imogen", + "Hayley", + "Pheobe", + "Eva", + "Evelyn", + "Mackenzie", + "Ayla", + "Oliver", + "Jack", + "Jackson", + "William", + "Ethan", + "Charlie", + "Lucas", + "Cooper", + "Lachlan", + "Noah", + "Liam", + "Alexander", + "Max", + "Isaac", + "Thomas", + "Xavier", + "Oscar", + "Benjamin", + "Aiden", + "Mason", + "Samuel", + "James", + "Levi", + "Riley", + "Harrison", + "Ryan", + "Henry", + "Jacob", + "Joshua", + "Leo", + "Zach", + "Harry", + "Hunter", + "Flynn", + "Archie", + "Tyler", + "Elijah", + "Hayden", + "Jayden", + "Blake", + "Archer", + "Ashton", + "Sebastian", + "Zachery", + "Lincoln", + "Mitchell", + "Luca", + "Nathan", + "Kai", + "Connor", + "Tom", + "Nigel", + "Matt", + "Sean" +]; + +},{}],423:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.ocker_first_name = require("./ocker_first_name"); + +},{"./first_name":422,"./last_name":424,"./ocker_first_name":425}],424:[function(require,module,exports){ +module["exports"] = [ + "Smith", + "Jones", + "Williams", + "Brown", + "Wilson", + "Taylor", + "Morton", + "White", + "Martin", + "Anderson", + "Thompson", + "Nguyen", + "Thomas", + "Walker", + "Harris", + "Lee", + "Ryan", + "Robinson", + "Kelly", + "King", + "Rausch", + "Ridge", + "Connolly", + "LeQuesne" +]; + +},{}],425:[function(require,module,exports){ +module["exports"] = [ + "Bazza", + "Bluey", + "Davo", + "Johno", + "Shano", + "Shazza" +]; + +},{}],426:[function(require,module,exports){ +arguments[4][342][0].apply(exports,arguments) +},{"dup":342}],427:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":426,"dup":108}],428:[function(require,module,exports){ +module["exports"] = [ + " s/n.", + ", #", + ", ##", + " #", + " ##" +]; + +},{}],429:[function(require,module,exports){ +arguments[4][406][0].apply(exports,arguments) +},{"dup":406}],430:[function(require,module,exports){ +module["exports"] = [ + "Parla", + "Telde", + "Baracaldo", + "San Fernando", + "Torrevieja", + "Lugo", + "Santiago de Compostela", + "Gerona", + "Cáceres", + "Lorca", + "Coslada", + "Talavera de la Reina", + "El Puerto de Santa María", + "Cornellá de Llobregat", + "Avilés", + "Palencia", + "Gecho", + "Orihuela", + "Pontevedra", + "Pozuelo de Alarcón", + "Toledo", + "El Ejido", + "Guadalajara", + "Gandía", + "Ceuta", + "Ferrol", + "Chiclana de la Frontera", + "Manresa", + "Roquetas de Mar", + "Ciudad Real", + "Rubí", + "Benidorm", + "San Sebastían de los Reyes", + "Ponferrada", + "Zamora", + "Alcalá de Guadaira", + "Fuengirola", + "Mijas", + "Sanlúcar de Barrameda", + "La Línea de la Concepción", + "Majadahonda", + "Sagunto", + "El Prat de LLobregat", + "Viladecans", + "Linares", + "Alcoy", + "Irún", + "Estepona", + "Torremolinos", + "Rivas-Vaciamadrid", + "Molina de Segura", + "Paterna", + "Granollers", + "Santa Lucía de Tirajana", + "Motril", + "Cerdañola del Vallés", + "Arrecife", + "Segovia", + "Torrelavega", + "Elda", + "Mérida", + "Ávila", + "Valdemoro", + "Cuenta", + "Collado Villalba", + "Benalmádena", + "Mollet del Vallés", + "Puertollano", + "Madrid", + "Barcelona", + "Valencia", + "Sevilla", + "Zaragoza", + "Málaga", + "Murcia", + "Palma de Mallorca", + "Las Palmas de Gran Canaria", + "Bilbao", + "Córdoba", + "Alicante", + "Valladolid", + "Vigo", + "Gijón", + "Hospitalet de LLobregat", + "La Coruña", + "Granada", + "Vitoria", + "Elche", + "Santa Cruz de Tenerife", + "Oviedo", + "Badalona", + "Cartagena", + "Móstoles", + "Jerez de la Frontera", + "Tarrasa", + "Sabadell", + "Alcalá de Henares", + "Pamplona", + "Fuenlabrada", + "Almería", + "San Sebastián", + "Leganés", + "Santander", + "Burgos", + "Castellón de la Plana", + "Alcorcón", + "Albacete", + "Getafe", + "Salamanca", + "Huelva", + "Logroño", + "Badajoz", + "San Cristróbal de la Laguna", + "León", + "Tarragona", + "Cádiz", + "Lérida", + "Marbella", + "Mataró", + "Dos Hermanas", + "Santa Coloma de Gramanet", + "Jaén", + "Algeciras", + "Torrejón de Ardoz", + "Orense", + "Alcobendas", + "Reus", + "Calahorra", + "Inca" +]; + +},{}],431:[function(require,module,exports){ +module["exports"] = [ + "Afganistán", + "Albania", + "Argelia", + "Andorra", + "Angola", + "Argentina", + "Armenia", + "Aruba", + "Australia", + "Austria", + "Azerbayán", + "Bahamas", + "Barein", + "Bangladesh", + "Barbados", + "Bielorusia", + "Bélgica", + "Belice", + "Bermuda", + "Bután", + "Bolivia", + "Bosnia Herzegovina", + "Botswana", + "Brasil", + "Bulgaria", + "Burkina Faso", + "Burundi", + "Camboya", + "Camerún", + "Canada", + "Cabo Verde", + "Islas Caimán", + "Chad", + "Chile", + "China", + "Isla de Navidad", + "Colombia", + "Comodos", + "Congo", + "Costa Rica", + "Costa de Marfil", + "Croacia", + "Cuba", + "Chipre", + "República Checa", + "Dinamarca", + "Dominica", + "República Dominicana", + "Ecuador", + "Egipto", + "El Salvador", + "Guinea Ecuatorial", + "Eritrea", + "Estonia", + "Etiopía", + "Islas Faro", + "Fiji", + "Finlandia", + "Francia", + "Gabón", + "Gambia", + "Georgia", + "Alemania", + "Ghana", + "Grecia", + "Groenlandia", + "Granada", + "Guadalupe", + "Guam", + "Guatemala", + "Guinea", + "Guinea-Bisau", + "Guayana", + "Haiti", + "Honduras", + "Hong Kong", + "Hungria", + "Islandia", + "India", + "Indonesia", + "Iran", + "Irak", + "Irlanda", + "Italia", + "Jamaica", + "Japón", + "Jordania", + "Kazajistan", + "Kenia", + "Kiribati", + "Corea", + "Kuwait", + "Letonia", + "Líbano", + "Liberia", + "Liechtenstein", + "Lituania", + "Luxemburgo", + "Macao", + "Macedonia", + "Madagascar", + "Malawi", + "Malasia", + "Maldivas", + "Mali", + "Malta", + "Martinica", + "Mauritania", + "Méjico", + "Micronesia", + "Moldavia", + "Mónaco", + "Mongolia", + "Montenegro", + "Montserrat", + "Marruecos", + "Mozambique", + "Namibia", + "Nauru", + "Nepal", + "Holanda", + "Nueva Zelanda", + "Nicaragua", + "Niger", + "Nigeria", + "Noruega", + "Omán", + "Pakistan", + "Panamá", + "Papúa Nueva Guinea", + "Paraguay", + "Perú", + "Filipinas", + "Poland", + "Portugal", + "Puerto Rico", + "Rusia", + "Ruanda", + "Samoa", + "San Marino", + "Santo Tomé y Principe", + "Arabia Saudí", + "Senegal", + "Serbia", + "Seychelles", + "Sierra Leona", + "Singapur", + "Eslovaquia", + "Eslovenia", + "Somalia", + "España", + "Sri Lanka", + "Sudán", + "Suriname", + "Suecia", + "Suiza", + "Siria", + "Taiwan", + "Tajikistan", + "Tanzania", + "Tailandia", + "Timor-Leste", + "Togo", + "Tonga", + "Trinidad y Tobago", + "Tunez", + "Turquia", + "Uganda", + "Ucrania", + "Emiratos Árabes Unidos", + "Reino Unido", + "Estados Unidos de América", + "Uruguay", + "Uzbekistan", + "Vanuatu", + "Venezuela", + "Vietnam", + "Yemen", + "Zambia", + "Zimbabwe" +]; + +},{}],432:[function(require,module,exports){ +module["exports"] = [ + "España" +]; + +},{}],433:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.province = require("./province"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.time_zone = require("./time_zone"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":428,"./city":429,"./city_prefix":430,"./country":431,"./default_country":432,"./postcode":434,"./province":435,"./secondary_address":436,"./state":437,"./state_abbr":438,"./street_address":439,"./street_name":440,"./street_suffix":441,"./time_zone":442}],434:[function(require,module,exports){ +module["exports"] = [ + "#####" +]; + +},{}],435:[function(require,module,exports){ +module["exports"] = [ + "Álava", + "Albacete", + "Alicante", + "Almería", + "Asturias", + "Ávila", + "Badajoz", + "Barcelona", + "Burgos", + "Cantabria", + "Castellón", + "Ciudad Real", + "Cuenca", + "Cáceres", + "Cádiz", + "Córdoba", + "Gerona", + "Granada", + "Guadalajara", + "Guipúzcoa", + "Huelva", + "Huesca", + "Islas Baleares", + "Jaén", + "La Coruña", + "La Rioja", + "Las Palmas", + "León", + "Lugo", + "lérida", + "Madrid", + "Murcia", + "Málaga", + "Navarra", + "Orense", + "Palencia", + "Pontevedra", + "Salamanca", + "Santa Cruz de Tenerife", + "Segovia", + "Sevilla", + "Soria", + "Tarragona", + "Teruel", + "Toledo", + "Valencia", + "Valladolid", + "Vizcaya", + "Zamora", + "Zaragoza" +]; + +},{}],436:[function(require,module,exports){ +module["exports"] = [ + "Esc. ###", + "Puerta ###" +]; + +},{}],437:[function(require,module,exports){ +module["exports"] = [ + "Andalucía", + "Aragón", + "Principado de Asturias", + "Baleares", + "Canarias", + "Cantabria", + "Castilla-La Mancha", + "Castilla y León", + "Cataluña", + "Comunidad Valenciana", + "Extremadura", + "Galicia", + "La Rioja", + "Comunidad de Madrid", + "Navarra", + "País Vasco", + "Región de Murcia" +]; + +},{}],438:[function(require,module,exports){ +module["exports"] = [ + "And", + "Ara", + "Ast", + "Bal", + "Can", + "Cbr", + "Man", + "Leo", + "Cat", + "Com", + "Ext", + "Gal", + "Rio", + "Mad", + "Nav", + "Vas", + "Mur" +]; + +},{}],439:[function(require,module,exports){ +module["exports"] = [ + "#{street_name}#{building_number}", + "#{street_name}#{building_number} #{secondary_address}" +]; + +},{}],440:[function(require,module,exports){ +module["exports"] = [ + "#{street_suffix} #{Name.first_name}", + "#{street_suffix} #{Name.first_name} #{Name.last_name}" +]; + +},{}],441:[function(require,module,exports){ +module["exports"] = [ + "Aldea", + "Apartamento", + "Arrabal", + "Arroyo", + "Avenida", + "Bajada", + "Barranco", + "Barrio", + "Bloque", + "Calle", + "Calleja", + "Camino", + "Carretera", + "Caserio", + "Colegio", + "Colonia", + "Conjunto", + "Cuesta", + "Chalet", + "Edificio", + "Entrada", + "Escalinata", + "Explanada", + "Extramuros", + "Extrarradio", + "Ferrocarril", + "Glorieta", + "Gran Subida", + "Grupo", + "Huerta", + "Jardines", + "Lado", + "Lugar", + "Manzana", + "Masía", + "Mercado", + "Monte", + "Muelle", + "Municipio", + "Parcela", + "Parque", + "Partida", + "Pasaje", + "Paseo", + "Plaza", + "Poblado", + "Polígono", + "Prolongación", + "Puente", + "Puerta", + "Quinta", + "Ramal", + "Rambla", + "Rampa", + "Riera", + "Rincón", + "Ronda", + "Rua", + "Salida", + "Sector", + "Sección", + "Senda", + "Solar", + "Subida", + "Terrenos", + "Torrente", + "Travesía", + "Urbanización", + "Vía", + "Vía Pública" +]; + +},{}],442:[function(require,module,exports){ +module["exports"] = [ + "Pacífico/Midway", + "Pacífico/Pago_Pago", + "Pacífico/Honolulu", + "America/Juneau", + "America/Los_Angeles", + "America/Tijuana", + "America/Denver", + "America/Phoenix", + "America/Chihuahua", + "America/Mazatlan", + "America/Chicago", + "America/Regina", + "America/Mexico_City", + "America/Mexico_City", + "America/Monterrey", + "America/Guatemala", + "America/New_York", + "America/Indiana/Indianapolis", + "America/Bogota", + "America/Lima", + "America/Lima", + "America/Halifax", + "America/Caracas", + "America/La_Paz", + "America/Santiago", + "America/St_Johns", + "America/Sao_Paulo", + "America/Argentina/Buenos_Aires", + "America/Guyana", + "America/Godthab", + "Atlantic/South_Georgia", + "Atlantic/Azores", + "Atlantic/Cape_Verde", + "Europa/Dublin", + "Europa/London", + "Europa/Lisbon", + "Europa/London", + "Africa/Casablanca", + "Africa/Monrovia", + "Etc/UTC", + "Europa/Belgrade", + "Europa/Bratislava", + "Europa/Budapest", + "Europa/Ljubljana", + "Europa/Prague", + "Europa/Sarajevo", + "Europa/Skopje", + "Europa/Warsaw", + "Europa/Zagreb", + "Europa/Brussels", + "Europa/Copenhagen", + "Europa/Madrid", + "Europa/Paris", + "Europa/Amsterdam", + "Europa/Berlin", + "Europa/Berlin", + "Europa/Rome", + "Europa/Stockholm", + "Europa/Vienna", + "Africa/Algiers", + "Europa/Bucharest", + "Africa/Cairo", + "Europa/Helsinki", + "Europa/Kiev", + "Europa/Riga", + "Europa/Sofia", + "Europa/Tallinn", + "Europa/Vilnius", + "Europa/Athens", + "Europa/Istanbul", + "Europa/Minsk", + "Asia/Jerusalen", + "Africa/Harare", + "Africa/Johannesburg", + "Europa/Moscú", + "Europa/Moscú", + "Europa/Moscú", + "Asia/Kuwait", + "Asia/Riyadh", + "Africa/Nairobi", + "Asia/Baghdad", + "Asia/Tehran", + "Asia/Muscat", + "Asia/Muscat", + "Asia/Baku", + "Asia/Tbilisi", + "Asia/Yerevan", + "Asia/Kabul", + "Asia/Yekaterinburg", + "Asia/Karachi", + "Asia/Karachi", + "Asia/Tashkent", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kathmandu", + "Asia/Dhaka", + "Asia/Dhaka", + "Asia/Colombo", + "Asia/Almaty", + "Asia/Novosibirsk", + "Asia/Rangoon", + "Asia/Bangkok", + "Asia/Bangkok", + "Asia/Jakarta", + "Asia/Krasnoyarsk", + "Asia/Shanghai", + "Asia/Chongqing", + "Asia/Hong_Kong", + "Asia/Urumqi", + "Asia/Kuala_Lumpur", + "Asia/Singapore", + "Asia/Taipei", + "Australia/Perth", + "Asia/Irkutsk", + "Asia/Ulaanbaatar", + "Asia/Seoul", + "Asia/Tokyo", + "Asia/Tokyo", + "Asia/Tokyo", + "Asia/Yakutsk", + "Australia/Darwin", + "Australia/Adelaide", + "Australia/Melbourne", + "Australia/Melbourne", + "Australia/Sydney", + "Australia/Brisbane", + "Australia/Hobart", + "Asia/Vladivostok", + "Pacífico/Guam", + "Pacífico/Port_Moresby", + "Asia/Magadan", + "Asia/Magadan", + "Pacífico/Noumea", + "Pacífico/Fiji", + "Asia/Kamchatka", + "Pacífico/Majuro", + "Pacífico/Auckland", + "Pacífico/Auckland", + "Pacífico/Tongatapu", + "Pacífico/Fakaofo", + "Pacífico/Apia" +]; + +},{}],443:[function(require,module,exports){ +module["exports"] = [ + "6##-###-###", + "6##.###.###", + "6## ### ###", + "6########" +]; + +},{}],444:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":443,"dup":167}],445:[function(require,module,exports){ +module["exports"] = [ + "Adaptativo", + "Avanzado", + "Asimilado", + "Automatizado", + "Equilibrado", + "Centrado en el negocio", + "Centralizado", + "Clonado", + "Compatible", + "Configurable", + "Multi grupo", + "Multi plataforma", + "Centrado en el usuario", + "Configurable", + "Descentralizado", + "Digitalizado", + "Distribuido", + "Diverso", + "Reducido", + "Mejorado", + "Para toda la empresa", + "Ergonomico", + "Exclusivo", + "Expandido", + "Extendido", + "Cara a cara", + "Enfocado", + "Totalmente configurable", + "Fundamental", + "Orígenes", + "Horizontal", + "Implementado", + "Innovador", + "Integrado", + "Intuitivo", + "Inverso", + "Gestionado", + "Obligatorio", + "Monitorizado", + "Multi canal", + "Multi lateral", + "Multi capa", + "En red", + "Orientado a objetos", + "Open-source", + "Operativo", + "Optimizado", + "Opcional", + "Organico", + "Organizado", + "Perseverando", + "Persistente", + "en fases", + "Polarizado", + "Pre-emptivo", + "Proactivo", + "Enfocado a benficios", + "Profundo", + "Programable", + "Progresivo", + "Public-key", + "Enfocado en la calidad", + "Reactivo", + "Realineado", + "Re-contextualizado", + "Re-implementado", + "Reducido", + "Ingenieria inversa", + "Robusto", + "Fácil", + "Seguro", + "Auto proporciona", + "Compartible", + "Intercambiable", + "Sincronizado", + "Orientado a equipos", + "Total", + "Universal", + "Mejorado", + "Actualizable", + "Centrado en el usuario", + "Amigable", + "Versatil", + "Virtual", + "Visionario" +]; + +},{}],446:[function(require,module,exports){ +module["exports"] = [ + "24 horas", + "24/7", + "3rd generación", + "4th generación", + "5th generación", + "6th generación", + "analizada", + "asimétrica", + "asíncrona", + "monitorizada por red", + "bidireccional", + "bifurcada", + "generada por el cliente", + "cliente servidor", + "coherente", + "cohesiva", + "compuesto", + "sensible al contexto", + "basado en el contexto", + "basado en contenido", + "dedicada", + "generado por la demanda", + "didactica", + "direccional", + "discreta", + "dinámica", + "potenciada", + "acompasada", + "ejecutiva", + "explícita", + "tolerante a fallos", + "innovadora", + "amplio ábanico", + "global", + "heurística", + "alto nivel", + "holística", + "homogénea", + "hibrida", + "incremental", + "intangible", + "interactiva", + "intermedia", + "local", + "logística", + "maximizada", + "metódica", + "misión crítica", + "móbil", + "modular", + "motivadora", + "multimedia", + "multiestado", + "multitarea", + "nacional", + "basado en necesidades", + "neutral", + "nueva generación", + "no-volátil", + "orientado a objetos", + "óptima", + "optimizada", + "radical", + "tiempo real", + "recíproca", + "regional", + "escalable", + "secundaria", + "orientada a soluciones", + "estable", + "estatica", + "sistemática", + "sistémica", + "tangible", + "terciaria", + "transicional", + "uniforme", + "valor añadido", + "vía web", + "defectos cero", + "tolerancia cero" +]; + +},{}],447:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.noun = require("./noun"); +company.descriptor = require("./descriptor"); +company.adjective = require("./adjective"); +company.name = require("./name"); + +},{"./adjective":445,"./descriptor":446,"./name":448,"./noun":449,"./suffix":450}],448:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name} y #{Name.last_name}", + "#{Name.last_name} #{Name.last_name} #{suffix}", + "#{Name.last_name}, #{Name.last_name} y #{Name.last_name} Asociados" +]; + +},{}],449:[function(require,module,exports){ +module["exports"] = [ + "habilidad", + "acceso", + "adaptador", + "algoritmo", + "alianza", + "analista", + "aplicación", + "enfoque", + "arquitectura", + "archivo", + "inteligencia artificial", + "array", + "actitud", + "medición", + "gestión presupuestaria", + "capacidad", + "desafío", + "circuito", + "colaboración", + "complejidad", + "concepto", + "conglomeración", + "contingencia", + "núcleo", + "fidelidad", + "base de datos", + "data-warehouse", + "definición", + "emulación", + "codificar", + "encriptar", + "extranet", + "firmware", + "flexibilidad", + "focus group", + "previsión", + "base de trabajo", + "función", + "funcionalidad", + "Interfaz Gráfica", + "groupware", + "Interfaz gráfico de usuario", + "hardware", + "Soporte", + "jerarquía", + "conjunto", + "implementación", + "infraestructura", + "iniciativa", + "instalación", + "conjunto de instrucciones", + "interfaz", + "intranet", + "base del conocimiento", + "red de area local", + "aprovechar", + "matrices", + "metodologías", + "middleware", + "migración", + "modelo", + "moderador", + "monitorizar", + "arquitectura abierta", + "sistema abierto", + "orquestar", + "paradigma", + "paralelismo", + "política", + "portal", + "estructura de precios", + "proceso de mejora", + "producto", + "productividad", + "proyecto", + "proyección", + "protocolo", + "línea segura", + "software", + "solución", + "estandardización", + "estrategia", + "estructura", + "éxito", + "superestructura", + "soporte", + "sinergia", + "mediante", + "marco de tiempo", + "caja de herramientas", + "utilización", + "website", + "fuerza de trabajo" +]; + +},{}],450:[function(require,module,exports){ +module["exports"] = [ + "S.L.", + "e Hijos", + "S.A.", + "Hermanos" +]; + +},{}],451:[function(require,module,exports){ +var es = {}; +module['exports'] = es; +es.title = "Spanish"; +es.address = require("./address"); +es.company = require("./company"); +es.internet = require("./internet"); +es.name = require("./name"); +es.phone_number = require("./phone_number"); +es.cell_phone = require("./cell_phone"); + +},{"./address":433,"./cell_phone":444,"./company":447,"./internet":454,"./name":456,"./phone_number":463}],452:[function(require,module,exports){ +module["exports"] = [ + "com", + "es", + "info", + "com.es", + "org" +]; + +},{}],453:[function(require,module,exports){ +arguments[4][174][0].apply(exports,arguments) +},{"dup":174}],454:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":452,"./free_email":453,"dup":98}],455:[function(require,module,exports){ +module["exports"] = [ + "Adán", + "Agustín", + "Alberto", + "Alejandro", + "Alfonso", + "Alfredo", + "Andrés", + "Antonio", + "Armando", + "Arturo", + "Benito", + "Benjamín", + "Bernardo", + "Carlos", + "César", + "Claudio", + "Clemente", + "Cristian", + "Cristobal", + "Daniel", + "David", + "Diego", + "Eduardo", + "Emilio", + "Enrique", + "Ernesto", + "Esteban", + "Federico", + "Felipe", + "Fernando", + "Francisco", + "Gabriel", + "Gerardo", + "Germán", + "Gilberto", + "Gonzalo", + "Gregorio", + "Guillermo", + "Gustavo", + "Hernán", + "Homero", + "Horacio", + "Hugo", + "Ignacio", + "Jacobo", + "Jaime", + "Javier", + "Jerónimo", + "Jesús", + "Joaquín", + "Jorge", + "Jorge Luis", + "José", + "José Eduardo", + "José Emilio", + "José Luis", + "José María", + "Juan", + "Juan Carlos", + "Julio", + "Julio César", + "Lorenzo", + "Lucas", + "Luis", + "Luis Miguel", + "Manuel", + "Marco Antonio", + "Marcos", + "Mariano", + "Mario", + "Martín", + "Mateo", + "Miguel", + "Miguel Ángel", + "Nicolás", + "Octavio", + "Óscar", + "Pablo", + "Patricio", + "Pedro", + "Rafael", + "Ramiro", + "Ramón", + "Raúl", + "Ricardo", + "Roberto", + "Rodrigo", + "Rubén", + "Salvador", + "Samuel", + "Sancho", + "Santiago", + "Sergio", + "Teodoro", + "Timoteo", + "Tomás", + "Vicente", + "Víctor", + "Adela", + "Adriana", + "Alejandra", + "Alicia", + "Amalia", + "Ana", + "Ana Luisa", + "Ana María", + "Andrea", + "Anita", + "Ángela", + "Antonia", + "Ariadna", + "Barbara", + "Beatriz", + "Berta", + "Blanca", + "Caridad", + "Carla", + "Carlota", + "Carmen", + "Carolina", + "Catalina", + "Cecilia", + "Clara", + "Claudia", + "Concepción", + "Conchita", + "Cristina", + "Daniela", + "Débora", + "Diana", + "Dolores", + "Lola", + "Dorotea", + "Elena", + "Elisa", + "Eloisa", + "Elsa", + "Elvira", + "Emilia", + "Esperanza", + "Estela", + "Ester", + "Eva", + "Florencia", + "Francisca", + "Gabriela", + "Gloria", + "Graciela", + "Guadalupe", + "Guillermina", + "Inés", + "Irene", + "Isabel", + "Isabela", + "Josefina", + "Juana", + "Julia", + "Laura", + "Leonor", + "Leticia", + "Lilia", + "Lorena", + "Lourdes", + "Lucia", + "Luisa", + "Luz", + "Magdalena", + "Manuela", + "Marcela", + "Margarita", + "María", + "María del Carmen", + "María Cristina", + "María Elena", + "María Eugenia", + "María José", + "María Luisa", + "María Soledad", + "María Teresa", + "Mariana", + "Maricarmen", + "Marilu", + "Marisol", + "Marta", + "Mayte", + "Mercedes", + "Micaela", + "Mónica", + "Natalia", + "Norma", + "Olivia", + "Patricia", + "Pilar", + "Ramona", + "Raquel", + "Rebeca", + "Reina", + "Rocio", + "Rosa", + "Rosalia", + "Rosario", + "Sara", + "Silvia", + "Sofia", + "Soledad", + "Sonia", + "Susana", + "Teresa", + "Verónica", + "Victoria", + "Virginia", + "Yolanda" +]; + +},{}],456:[function(require,module,exports){ +arguments[4][314][0].apply(exports,arguments) +},{"./first_name":455,"./last_name":457,"./name":458,"./prefix":459,"./suffix":460,"./title":461,"dup":314}],457:[function(require,module,exports){ +module["exports"] = [ + "Abeyta", + "Abrego", + "Abreu", + "Acevedo", + "Acosta", + "Acuña", + "Adame", + "Adorno", + "Agosto", + "Aguayo", + "Águilar", + "Aguilera", + "Aguirre", + "Alanis", + "Alaniz", + "Alarcón", + "Alba", + "Alcala", + "Alcántar", + "Alcaraz", + "Alejandro", + "Alemán", + "Alfaro", + "Alicea", + "Almanza", + "Almaraz", + "Almonte", + "Alonso", + "Alonzo", + "Altamirano", + "Alva", + "Alvarado", + "Alvarez", + "Amador", + "Amaya", + "Anaya", + "Anguiano", + "Angulo", + "Aparicio", + "Apodaca", + "Aponte", + "Aragón", + "Araña", + "Aranda", + "Arce", + "Archuleta", + "Arellano", + "Arenas", + "Arevalo", + "Arguello", + "Arias", + "Armas", + "Armendáriz", + "Armenta", + "Armijo", + "Arredondo", + "Arreola", + "Arriaga", + "Arroyo", + "Arteaga", + "Atencio", + "Ávalos", + "Ávila", + "Avilés", + "Ayala", + "Baca", + "Badillo", + "Báez", + "Baeza", + "Bahena", + "Balderas", + "Ballesteros", + "Banda", + "Bañuelos", + "Barajas", + "Barela", + "Barragán", + "Barraza", + "Barrera", + "Barreto", + "Barrientos", + "Barrios", + "Batista", + "Becerra", + "Beltrán", + "Benavides", + "Benavídez", + "Benítez", + "Bermúdez", + "Bernal", + "Berríos", + "Bétancourt", + "Blanco", + "Bonilla", + "Borrego", + "Botello", + "Bravo", + "Briones", + "Briseño", + "Brito", + "Bueno", + "Burgos", + "Bustamante", + "Bustos", + "Caballero", + "Cabán", + "Cabrera", + "Cadena", + "Caldera", + "Calderón", + "Calvillo", + "Camacho", + "Camarillo", + "Campos", + "Canales", + "Candelaria", + "Cano", + "Cantú", + "Caraballo", + "Carbajal", + "Cardenas", + "Cardona", + "Carmona", + "Carranza", + "Carrasco", + "Carrasquillo", + "Carreón", + "Carrera", + "Carrero", + "Carrillo", + "Carrion", + "Carvajal", + "Casanova", + "Casares", + "Casárez", + "Casas", + "Casillas", + "Castañeda", + "Castellanos", + "Castillo", + "Castro", + "Cavazos", + "Cazares", + "Ceballos", + "Cedillo", + "Ceja", + "Centeno", + "Cepeda", + "Cerda", + "Cervantes", + "Cervántez", + "Chacón", + "Chapa", + "Chavarría", + "Chávez", + "Cintrón", + "Cisneros", + "Collado", + "Collazo", + "Colón", + "Colunga", + "Concepción", + "Contreras", + "Cordero", + "Córdova", + "Cornejo", + "Corona", + "Coronado", + "Corral", + "Corrales", + "Correa", + "Cortés", + "Cortez", + "Cotto", + "Covarrubias", + "Crespo", + "Cruz", + "Cuellar", + "Curiel", + "Dávila", + "de Anda", + "de Jesús", + "Delacrúz", + "Delafuente", + "Delagarza", + "Delao", + "Delapaz", + "Delarosa", + "Delatorre", + "Deleón", + "Delgadillo", + "Delgado", + "Delrío", + "Delvalle", + "Díaz", + "Domínguez", + "Domínquez", + "Duarte", + "Dueñas", + "Duran", + "Echevarría", + "Elizondo", + "Enríquez", + "Escalante", + "Escamilla", + "Escobar", + "Escobedo", + "Esparza", + "Espinal", + "Espino", + "Espinosa", + "Espinoza", + "Esquibel", + "Esquivel", + "Estévez", + "Estrada", + "Fajardo", + "Farías", + "Feliciano", + "Fernández", + "Ferrer", + "Fierro", + "Figueroa", + "Flores", + "Flórez", + "Fonseca", + "Franco", + "Frías", + "Fuentes", + "Gaitán", + "Galarza", + "Galindo", + "Gallardo", + "Gallegos", + "Galván", + "Gálvez", + "Gamboa", + "Gamez", + "Gaona", + "Garay", + "García", + "Garibay", + "Garica", + "Garrido", + "Garza", + "Gastélum", + "Gaytán", + "Gil", + "Girón", + "Godínez", + "Godoy", + "Gómez", + "Gonzales", + "González", + "Gollum", + "Gracia", + "Granado", + "Granados", + "Griego", + "Grijalva", + "Guajardo", + "Guardado", + "Guerra", + "Guerrero", + "Guevara", + "Guillen", + "Gurule", + "Gutiérrez", + "Guzmán", + "Haro", + "Henríquez", + "Heredia", + "Hernádez", + "Hernandes", + "Hernández", + "Herrera", + "Hidalgo", + "Hinojosa", + "Holguín", + "Huerta", + "Hurtado", + "Ibarra", + "Iglesias", + "Irizarry", + "Jaime", + "Jaimes", + "Jáquez", + "Jaramillo", + "Jasso", + "Jiménez", + "Jimínez", + "Juárez", + "Jurado", + "Laboy", + "Lara", + "Laureano", + "Leal", + "Lebrón", + "Ledesma", + "Leiva", + "Lemus", + "León", + "Lerma", + "Leyva", + "Limón", + "Linares", + "Lira", + "Llamas", + "Loera", + "Lomeli", + "Longoria", + "López", + "Lovato", + "Loya", + "Lozada", + "Lozano", + "Lucero", + "Lucio", + "Luevano", + "Lugo", + "Luna", + "Macías", + "Madera", + "Madrid", + "Madrigal", + "Maestas", + "Magaña", + "Malave", + "Maldonado", + "Manzanares", + "Mares", + "Marín", + "Márquez", + "Marrero", + "Marroquín", + "Martínez", + "Mascareñas", + "Mata", + "Mateo", + "Matías", + "Matos", + "Maya", + "Mayorga", + "Medina", + "Medrano", + "Mejía", + "Meléndez", + "Melgar", + "Mena", + "Menchaca", + "Méndez", + "Mendoza", + "Menéndez", + "Meraz", + "Mercado", + "Merino", + "Mesa", + "Meza", + "Miramontes", + "Miranda", + "Mireles", + "Mojica", + "Molina", + "Mondragón", + "Monroy", + "Montalvo", + "Montañez", + "Montaño", + "Montemayor", + "Montenegro", + "Montero", + "Montes", + "Montez", + "Montoya", + "Mora", + "Morales", + "Moreno", + "Mota", + "Moya", + "Munguía", + "Muñiz", + "Muñoz", + "Murillo", + "Muro", + "Nájera", + "Naranjo", + "Narváez", + "Nava", + "Navarrete", + "Navarro", + "Nazario", + "Negrete", + "Negrón", + "Nevárez", + "Nieto", + "Nieves", + "Niño", + "Noriega", + "Núñez", + "Ocampo", + "Ocasio", + "Ochoa", + "Ojeda", + "Olivares", + "Olivárez", + "Olivas", + "Olivera", + "Olivo", + "Olmos", + "Olvera", + "Ontiveros", + "Oquendo", + "Ordóñez", + "Orellana", + "Ornelas", + "Orosco", + "Orozco", + "Orta", + "Ortega", + "Ortiz", + "Osorio", + "Otero", + "Ozuna", + "Pabón", + "Pacheco", + "Padilla", + "Padrón", + "Páez", + "Pagan", + "Palacios", + "Palomino", + "Palomo", + "Pantoja", + "Paredes", + "Parra", + "Partida", + "Patiño", + "Paz", + "Pedraza", + "Pedroza", + "Pelayo", + "Peña", + "Perales", + "Peralta", + "Perea", + "Peres", + "Pérez", + "Pichardo", + "Piña", + "Pineda", + "Pizarro", + "Polanco", + "Ponce", + "Porras", + "Portillo", + "Posada", + "Prado", + "Preciado", + "Prieto", + "Puente", + "Puga", + "Pulido", + "Quesada", + "Quezada", + "Quiñones", + "Quiñónez", + "Quintana", + "Quintanilla", + "Quintero", + "Quiroz", + "Rael", + "Ramírez", + "Ramón", + "Ramos", + "Rangel", + "Rascón", + "Raya", + "Razo", + "Regalado", + "Rendón", + "Rentería", + "Reséndez", + "Reyes", + "Reyna", + "Reynoso", + "Rico", + "Rincón", + "Riojas", + "Ríos", + "Rivas", + "Rivera", + "Rivero", + "Robledo", + "Robles", + "Rocha", + "Rodarte", + "Rodrígez", + "Rodríguez", + "Rodríquez", + "Rojas", + "Rojo", + "Roldán", + "Rolón", + "Romero", + "Romo", + "Roque", + "Rosado", + "Rosales", + "Rosario", + "Rosas", + "Roybal", + "Rubio", + "Ruelas", + "Ruiz", + "Saavedra", + "Sáenz", + "Saiz", + "Salas", + "Salazar", + "Salcedo", + "Salcido", + "Saldaña", + "Saldivar", + "Salgado", + "Salinas", + "Samaniego", + "Sanabria", + "Sanches", + "Sánchez", + "Sandoval", + "Santacruz", + "Santana", + "Santiago", + "Santillán", + "Sarabia", + "Sauceda", + "Saucedo", + "Sedillo", + "Segovia", + "Segura", + "Sepúlveda", + "Serna", + "Serrano", + "Serrato", + "Sevilla", + "Sierra", + "Sisneros", + "Solano", + "Solís", + "Soliz", + "Solorio", + "Solorzano", + "Soria", + "Sosa", + "Sotelo", + "Soto", + "Suárez", + "Tafoya", + "Tamayo", + "Tamez", + "Tapia", + "Tejada", + "Tejeda", + "Téllez", + "Tello", + "Terán", + "Terrazas", + "Tijerina", + "Tirado", + "Toledo", + "Toro", + "Torres", + "Tórrez", + "Tovar", + "Trejo", + "Treviño", + "Trujillo", + "Ulibarri", + "Ulloa", + "Urbina", + "Ureña", + "Urías", + "Uribe", + "Urrutia", + "Vaca", + "Valadez", + "Valdés", + "Valdez", + "Valdivia", + "Valencia", + "Valentín", + "Valenzuela", + "Valladares", + "Valle", + "Vallejo", + "Valles", + "Valverde", + "Vanegas", + "Varela", + "Vargas", + "Vásquez", + "Vázquez", + "Vega", + "Vela", + "Velasco", + "Velásquez", + "Velázquez", + "Vélez", + "Véliz", + "Venegas", + "Vera", + "Verdugo", + "Verduzco", + "Vergara", + "Viera", + "Vigil", + "Villa", + "Villagómez", + "Villalobos", + "Villalpando", + "Villanueva", + "Villareal", + "Villarreal", + "Villaseñor", + "Villegas", + "Yáñez", + "Ybarra", + "Zambrano", + "Zamora", + "Zamudio", + "Zapata", + "Zaragoza", + "Zarate", + "Zavala", + "Zayas", + "Zelaya", + "Zepeda", + "Zúñiga" +]; + +},{}],458:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}" +]; + +},{}],459:[function(require,module,exports){ +module["exports"] = [ + "Sr.", + "Sra.", + "Sta." +]; + +},{}],460:[function(require,module,exports){ +arguments[4][318][0].apply(exports,arguments) +},{"dup":318}],461:[function(require,module,exports){ +module["exports"] = { + "descriptor": [ + "Jefe", + "Senior", + "Directo", + "Corporativo", + "Dinánmico", + "Futuro", + "Producto", + "Nacional", + "Regional", + "Distrito", + "Central", + "Global", + "Cliente", + "Inversor", + "International", + "Heredado", + "Adelante", + "Interno", + "Humano", + "Gerente", + "Director" + ], + "level": [ + "Soluciones", + "Programa", + "Marca", + "Seguridada", + "Investigación", + "Marketing", + "Normas", + "Implementación", + "Integración", + "Funcionalidad", + "Respuesta", + "Paradigma", + "Tácticas", + "Identidad", + "Mercados", + "Grupo", + "División", + "Aplicaciones", + "Optimización", + "Operaciones", + "Infraestructura", + "Intranet", + "Comunicaciones", + "Web", + "Calidad", + "Seguro", + "Mobilidad", + "Cuentas", + "Datos", + "Creativo", + "Configuración", + "Contabilidad", + "Interacciones", + "Factores", + "Usabilidad", + "Métricas" + ], + "job": [ + "Supervisor", + "Asociado", + "Ejecutivo", + "Relacciones", + "Oficial", + "Gerente", + "Ingeniero", + "Especialista", + "Director", + "Coordinador", + "Administrador", + "Arquitecto", + "Analista", + "Diseñador", + "Planificador", + "Técnico", + "Funcionario", + "Desarrollador", + "Productor", + "Consultor", + "Asistente", + "Facilitador", + "Agente", + "Representante", + "Estratega" + ] +}; + +},{}],462:[function(require,module,exports){ +module["exports"] = [ + "9##-###-###", + "9##.###.###", + "9## ### ###", + "9########" +]; + +},{}],463:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":462,"dup":108}],464:[function(require,module,exports){ +module["exports"] = [ + " s/n.", + ", #", + ", ##", + " #", + " ##", + " ###", + " ####" +]; + +},{}],465:[function(require,module,exports){ +arguments[4][406][0].apply(exports,arguments) +},{"dup":406}],466:[function(require,module,exports){ +module["exports"] = [ + "Aguascalientes", + "Apodaca", + "Buenavista", + "Campeche", + "Cancún", + "Cárdenas", + "Celaya", + "Chalco", + "Chetumal", + "Chicoloapan", + "Chignahuapan", + "Chihuahua", + "Chilpancingo", + "Chimalhuacán", + "Ciudad Acuña", + "Ciudad de México", + "Ciudad del Carmen", + "Ciudad López Mateos", + "Ciudad Madero", + "Ciudad Obregón", + "Ciudad Valles", + "Ciudad Victoria", + "Coatzacoalcos", + "Colima-Villa de Álvarez", + "Comitán de Dominguez", + "Córdoba", + "Cuautitlán Izcalli", + "Cuautla", + "Cuernavaca", + "Culiacán", + "Delicias", + "Durango", + "Ensenada", + "Fresnillo", + "General Escobedo", + "Gómez Palacio", + "Guadalajara", + "Guadalupe", + "Guanajuato", + "Guaymas", + "Hermosillo", + "Hidalgo del Parral", + "Iguala", + "Irapuato", + "Ixtapaluca", + "Jiutepec", + "Juárez", + "La Laguna", + "La Paz", + "La Piedad-Pénjamo", + "León", + "Los Cabos", + "Los Mochis", + "Manzanillo", + "Matamoros", + "Mazatlán", + "Mérida", + "Mexicali", + "Minatitlán", + "Miramar", + "Monclova", + "Monclova-Frontera", + "Monterrey", + "Morelia", + "Naucalpan de Juárez", + "Navojoa", + "Nezahualcóyotl", + "Nogales", + "Nuevo Laredo", + "Oaxaca", + "Ocotlán", + "Ojo de agua", + "Orizaba", + "Pachuca", + "Piedras Negras", + "Poza Rica", + "Puebla", + "Puerto Vallarta", + "Querétaro", + "Reynosa-Río Bravo", + "Rioverde-Ciudad Fernández", + "Salamanca", + "Saltillo", + "San Cristobal de las Casas", + "San Francisco Coacalco", + "San Francisco del Rincón", + "San Juan Bautista Tuxtepec", + "San Juan del Río", + "San Luis Potosí-Soledad", + "San Luis Río Colorado", + "San Nicolás de los Garza", + "San Pablo de las Salinas", + "San Pedro Garza García", + "Santa Catarina", + "Soledad de Graciano Sánchez", + "Tampico-Pánuco", + "Tapachula", + "Tecomán", + "Tehuacán", + "Tehuacán", + "Tehuantepec-Salina Cruz", + "Tepexpan", + "Tepic", + "Tetela de Ocampo", + "Texcoco de Mora", + "Tijuana", + "Tlalnepantla", + "Tlaquepaque", + "Tlaxcala-Apizaco", + "Toluca", + "Tonalá", + "Torreón", + "Tula", + "Tulancingo", + "Tulancingo de Bravo", + "Tuxtla Gutiérrez", + "Uruapan", + "Uruapan del Progreso", + "Valle de México", + "Veracruz", + "Villa de Álvarez", + "Villa Nicolás Romero", + "Villahermosa", + "Xalapa", + "Zacatecas-Guadalupe", + "Zacatlan", + "Zacatzingo", + "Zamora-Jacona", + "Zapopan", + "Zitacuaro" +]; + +},{}],467:[function(require,module,exports){ +arguments[4][237][0].apply(exports,arguments) +},{"dup":237}],468:[function(require,module,exports){ +module["exports"] = [ + "Afganistán", + "Albania", + "Argelia", + "Andorra", + "Angola", + "Argentina", + "Armenia", + "Aruba", + "Australia", + "Austria", + "Azerbayán", + "Bahamas", + "Barein", + "Bangladesh", + "Barbados", + "Bielorusia", + "Bélgica", + "Belice", + "Bermuda", + "Bután", + "Bolivia", + "Bosnia Herzegovina", + "Botswana", + "Brasil", + "Bulgaria", + "Burkina Faso", + "Burundi", + "Camboya", + "Camerún", + "Canada", + "Cabo Verde", + "Islas Caimán", + "Chad", + "Chile", + "China", + "Isla de Navidad", + "Colombia", + "Comodos", + "Congo", + "Costa Rica", + "Costa de Marfil", + "Croacia", + "Cuba", + "Chipre", + "República Checa", + "Dinamarca", + "Dominica", + "República Dominicana", + "Ecuador", + "Egipto", + "El Salvador", + "Guinea Ecuatorial", + "Eritrea", + "Estonia", + "Etiopía", + "Islas Faro", + "Fiji", + "Finlandia", + "Francia", + "Gabón", + "Gambia", + "Georgia", + "Alemania", + "Ghana", + "Grecia", + "Groenlandia", + "Granada", + "Guadalupe", + "Guam", + "Guatemala", + "Guinea", + "Guinea-Bisau", + "Guayana", + "Haiti", + "Honduras", + "Hong Kong", + "Hungria", + "Islandia", + "India", + "Indonesia", + "Iran", + "Irak", + "Irlanda", + "Italia", + "Jamaica", + "Japón", + "Jordania", + "Kazajistan", + "Kenia", + "Kiribati", + "Corea", + "Kuwait", + "Letonia", + "Líbano", + "Liberia", + "Liechtenstein", + "Lituania", + "Luxemburgo", + "Macao", + "Macedonia", + "Madagascar", + "Malawi", + "Malasia", + "Maldivas", + "Mali", + "Malta", + "Martinica", + "Mauritania", + "México", + "Micronesia", + "Moldavia", + "Mónaco", + "Mongolia", + "Montenegro", + "Montserrat", + "Marruecos", + "Mozambique", + "Namibia", + "Nauru", + "Nepal", + "Holanda", + "Nueva Zelanda", + "Nicaragua", + "Niger", + "Nigeria", + "Noruega", + "Omán", + "Pakistan", + "Panamá", + "Papúa Nueva Guinea", + "Paraguay", + "Perú", + "Filipinas", + "Poland", + "Portugal", + "Puerto Rico", + "Rusia", + "Ruanda", + "Samoa", + "San Marino", + "Santo Tomé y Principe", + "Arabia Saudí", + "Senegal", + "Serbia", + "Seychelles", + "Sierra Leona", + "Singapur", + "Eslovaquia", + "Eslovenia", + "Somalia", + "España", + "Sri Lanka", + "Sudán", + "Suriname", + "Suecia", + "Suiza", + "Siria", + "Taiwan", + "Tajikistan", + "Tanzania", + "Tailandia", + "Timor-Leste", + "Togo", + "Tonga", + "Trinidad y Tobago", + "Tunez", + "Turquia", + "Uganda", + "Ucrania", + "Emiratos Árabes Unidos", + "Reino Unido", + "Estados Unidos de América", + "Uruguay", + "Uzbekistan", + "Vanuatu", + "Venezuela", + "Vietnam", + "Yemen", + "Zambia", + "Zimbabwe" +]; + +},{}],469:[function(require,module,exports){ +module["exports"] = [ + "México" +]; + +},{}],470:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.time_zone = require("./time_zone"); +address.city = require("./city"); +address.street = require("./street"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); +},{"./building_number":464,"./city":465,"./city_prefix":466,"./city_suffix":467,"./country":468,"./default_country":469,"./postcode":471,"./secondary_address":472,"./state":473,"./state_abbr":474,"./street":475,"./street_address":476,"./street_name":477,"./street_suffix":478,"./time_zone":479}],471:[function(require,module,exports){ +arguments[4][434][0].apply(exports,arguments) +},{"dup":434}],472:[function(require,module,exports){ +module["exports"] = [ + "Esc. ###", + "Puerta ###", + "Edificio #" +]; + +},{}],473:[function(require,module,exports){ +module["exports"] = [ + "Aguascalientes", + "Baja California Norte", + "Baja California Sur", + 'Estado de México', + "Campeche", + "Chiapas", + "Chihuahua", + "Coahuila", + "Colima", + "Durango", + "Guanajuato", + "Guerrero", + "Hidalgo", + "Jalisco", + "Michoacan", + "Morelos", + "Nayarit", + 'Nuevo León', + "Oaxaca", + "Puebla", + "Querétaro", + "Quintana Roo", + "San Luis Potosí", + "Sinaloa", + "Sonora", + "Tabasco", + "Tamaulipas", + "Tlaxcala", + "Veracruz", + "Yucatán", + "Zacatecas" +]; + +},{}],474:[function(require,module,exports){ +module["exports"] = [ + "AS", + "BC", + "BS", + "CC", + "CS", + "CH", + "CL", + "CM", + "DF", + "DG", + "GT", + "GR", + "HG", + "JC", + "MC", + "MN", + "MS", + "NT", + "NL", + "OC", + "PL", + "QT", + "QR", + "SP", + "SL", + "SR", + "TC", + "TS", + "TL", + "VZ", + "YN", + "ZS" +]; + +},{}],475:[function(require,module,exports){ +module["exports"] = [ + "20 de Noviembre", + "Cinco de Mayo", + "Cuahutemoc", + "Manzanares", + "Donceles", + "Francisco I. Madero", + "Juárez", + "Repúplica de Cuba", + "Repúplica de Chile", + "Repúplica de Argentina", + "Repúplica de Uruguay", + "Isabel la Católica", + "Izazaga", + "Eje Central", + "Eje 6", + "Eje 5", + "La viga", + "Aniceto Ortega", + "Miguel Ángel de Quevedo", + "Amores", + "Coyoacán", + "Coruña", + "Batalla de Naco", + "La otra banda", + "Piedra del Comal", + "Balcón de los edecanes", + "Barrio la Lonja", + "Jicolapa", + "Zacatlán", + "Zapata", + "Polotitlan", + "Calimaya", + "Flor Marina", + "Flor Solvestre", + "San Miguel", + "Naranjo", + "Cedro", + "Jalisco", + "Avena" +]; +},{}],476:[function(require,module,exports){ +arguments[4][439][0].apply(exports,arguments) +},{"dup":439}],477:[function(require,module,exports){ +module["exports"] = [ + "#{street_suffix} #{Name.first_name}", + "#{street_suffix} #{Name.first_name} #{Name.last_name}", + "#{street_suffix} #{street}", + "#{street_suffix} #{street}", + "#{street_suffix} #{street}", + "#{street_suffix} #{street}" + +]; + +},{}],478:[function(require,module,exports){ +arguments[4][441][0].apply(exports,arguments) +},{"dup":441}],479:[function(require,module,exports){ +module["exports"] = [ + "Pacífico/Midway", + "Pacífico/Pago_Pago", + "Pacífico/Honolulu", + "America/Juneau", + "America/Los_Angeles", + "America/Tijuana", + "America/Denver", + "America/Phoenix", + "America/Chihuahua", + "America/Mazatlan", + "America/Chicago", + "America/Regina", + "America/Mexico_City", + "America/Monterrey", + "America/Guatemala", + "America/New_York", + "America/Indiana/Indianapolis", + "America/Bogota", + "America/Lima", + "America/Lima", + "America/Halifax", + "America/Caracas", + "America/La_Paz", + "America/Santiago", + "America/St_Johns", + "America/Sao_Paulo", + "America/Argentina/Buenos_Aires", + "America/Guyana", + "America/Godthab", + "Atlantic/South_Georgia", + "Atlantic/Azores", + "Atlantic/Cape_Verde", + "Europa/Dublin", + "Europa/London", + "Europa/Lisbon", + "Europa/London", + "Africa/Casablanca", + "Africa/Monrovia", + "Etc/UTC", + "Europa/Belgrade", + "Europa/Bratislava", + "Europa/Budapest", + "Europa/Ljubljana", + "Europa/Prague", + "Europa/Sarajevo", + "Europa/Skopje", + "Europa/Warsaw", + "Europa/Zagreb", + "Europa/Brussels", + "Europa/Copenhagen", + "Europa/Madrid", + "Europa/Paris", + "Europa/Amsterdam", + "Europa/Berlin", + "Europa/Berlin", + "Europa/Rome", + "Europa/Stockholm", + "Europa/Vienna", + "Africa/Algiers", + "Europa/Bucharest", + "Africa/Cairo", + "Europa/Helsinki", + "Europa/Kiev", + "Europa/Riga", + "Europa/Sofia", + "Europa/Tallinn", + "Europa/Vilnius", + "Europa/Athens", + "Europa/Istanbul", + "Europa/Minsk", + "Asia/Jerusalen", + "Africa/Harare", + "Africa/Johannesburg", + "Europa/Moscú", + "Europa/Moscú", + "Europa/Moscú", + "Asia/Kuwait", + "Asia/Riyadh", + "Africa/Nairobi", + "Asia/Baghdad", + "Asia/Tehran", + "Asia/Muscat", + "Asia/Muscat", + "Asia/Baku", + "Asia/Tbilisi", + "Asia/Yerevan", + "Asia/Kabul", + "Asia/Yekaterinburg", + "Asia/Karachi", + "Asia/Karachi", + "Asia/Tashkent", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kolkata", + "Asia/Kathmandu", + "Asia/Dhaka", + "Asia/Dhaka", + "Asia/Colombo", + "Asia/Almaty", + "Asia/Novosibirsk", + "Asia/Rangoon", + "Asia/Bangkok", + "Asia/Bangkok", + "Asia/Jakarta", + "Asia/Krasnoyarsk", + "Asia/Shanghai", + "Asia/Chongqing", + "Asia/Hong_Kong", + "Asia/Urumqi", + "Asia/Kuala_Lumpur", + "Asia/Singapore", + "Asia/Taipei", + "Australia/Perth", + "Asia/Irkutsk", + "Asia/Ulaanbaatar", + "Asia/Seoul", + "Asia/Tokyo", + "Asia/Tokyo", + "Asia/Tokyo", + "Asia/Yakutsk", + "Australia/Darwin", + "Australia/Adelaide", + "Australia/Melbourne", + "Australia/Melbourne", + "Australia/Sydney", + "Australia/Brisbane", + "Australia/Hobart", + "Asia/Vladivostok", + "Pacífico/Guam", + "Pacífico/Port_Moresby", + "Asia/Magadan", + "Asia/Magadan", + "Pacífico/Noumea", + "Pacífico/Fiji", + "Asia/Kamchatka", + "Pacífico/Majuro", + "Pacífico/Auckland", + "Pacífico/Auckland", + "Pacífico/Tongatapu", + "Pacífico/Fakaofo", + "Pacífico/Apia" +]; + +},{}],480:[function(require,module,exports){ +module["exports"] = [ + "5##-###-###", + "5##.###.###", + "5## ### ###", + "5########" +]; + +},{}],481:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":480,"dup":167}],482:[function(require,module,exports){ +module["exports"] = [ + "rojo", + "verde", + "azul", + "amarillo", + "morado", + "Menta verde", + "teal", + "blanco", + "negro", + "Naranja", + "Rosa", + "gris", + "marrón", + "violeta", + "turquesa", + "tan", + "cielo azul", + "salmón", + "ciruela", + "orquídea", + "aceituna", + "magenta", + "Lima", + "marfil", + "índigo", + "oro", + "fucsia", + "cian", + "azul", + "lavanda", + "plata" +]; + +},{}],483:[function(require,module,exports){ +module["exports"] = [ + "Libros", + "Películas", + "Música", + "Juegos", + "Electrónica", + "Ordenadores", + "Hogar", + "Jardín", + "Herramientas", + "Ultramarinos", + "Salud", + "Belleza", + "Juguetes", + "Kids", + "Baby", + "Ropa", + "Zapatos", + "Joyería", + "Deportes", + "Aire libre", + "Automoción", + "Industrial" +]; + +},{}],484:[function(require,module,exports){ +arguments[4][86][0].apply(exports,arguments) +},{"./color":482,"./department":483,"./product_name":485,"dup":86}],485:[function(require,module,exports){ +module["exports"] = { +"adjective": [ + "Pequeño", + "Ergonómico", + "Rústico", + "Inteligente", + "Gorgeous", + "Increíble", + "Fantástico", + "Práctica", + "Elegante", + "Increíble", + "Genérica", + "Artesanal", + "Hecho a mano", + "Licencia", + "Refinado", + "Sin marca", + "Sabrosa" + ], +"material": [ + "Acero", + "Madera", + "Hormigón", + "Plástico", + "Cotton", + "Granito", + "Caucho", + "Metal", + "Soft", + "Fresco", + "Frozen" + ], +"product": [ + "Presidente", + "Auto", + "Computadora", + "Teclado", + "Ratón", + "Bike", + "Pelota", + "Guantes", + "Pantalones", + "Camisa", + "Mesa", + "Zapatos", + "Sombrero", + "Toallas", + "Jabón", + "Tuna", + "Pollo", + "Pescado", + "Queso", + "Tocino", + "Pizza", + "Ensalada", + "Embutidos" + ] +}; + +},{}],486:[function(require,module,exports){ +arguments[4][445][0].apply(exports,arguments) +},{"dup":445}],487:[function(require,module,exports){ +module["exports"] = [ + "Clics y mortero", + "Valor añadido", + "Vertical", + "Proactivo", + "Robusto", + "Revolucionario", + "Escalable", + "De vanguardia", + "Innovador", + "Intuitivo", + "Estratégico", + "E-business", + "Misión crítica", + "Pegajosa", + "Doce y cincuenta y nueve de la noche", + "24/7", + "De extremo a extremo", + "Global", + "B2B", + "B2C", + "Granular", + "Fricción", + "Virtual", + "Viral", + "Dinámico", + "24/365", + "Mejor de su clase", + "Asesino", + "Magnética", + "Filo sangriento", + "Habilitado web", + "Interactiva", + "Punto com", + "Sexy", + "Back-end", + "Tiempo real", + "Eficiente", + "Frontal", + "Distribuida", + "Sin costura", + "Extensible", + "Llave en mano", + "Clase mundial", + "Código abierto", + "Multiplataforma", + "Cross-media", + "Sinérgico", + "ladrillos y clics", + "Fuera de la caja", + "Empresa", + "Integrado", + "Impactante", + "Inalámbrico", + "Transparente", + "Próxima generación", + "Innovador", + "User-centric", + "Visionario", + "A medida", + "Ubicua", + "Enchufa y juega", + "Colaboración", + "Convincente", + "Holístico", + "Ricos" +]; + +},{}],488:[function(require,module,exports){ +module["exports"] = [ + "sinergias", + "web-readiness", + "paradigmas", + "mercados", + "asociaciones", + "infraestructuras", + "plataformas", + "iniciativas", + "canales", + "ojos", + "comunidades", + "ROI", + "soluciones", + "minoristas electrónicos", + "e-servicios", + "elementos de acción", + "portales", + "nichos", + "tecnologías", + "contenido", + "vortales", + "cadenas de suministro", + "convergencia", + "relaciones", + "arquitecturas", + "interfaces", + "mercados electrónicos", + "e-commerce", + "sistemas", + "ancho de banda", + "infomediarios", + "modelos", + "Mindshare", + "entregables", + "usuarios", + "esquemas", + "redes", + "aplicaciones", + "métricas", + "e-business", + "funcionalidades", + "experiencias", + "servicios web", + "metodologías" +]; + +},{}],489:[function(require,module,exports){ +module["exports"] = [ + "poner en práctica", + "utilizar", + "integrar", + "racionalizar", + "optimizar", + "evolucionar", + "transformar", + "abrazar", + "habilitar", + "orquestar", + "apalancamiento", + "reinventar", + "agregado", + "arquitecto", + "mejorar", + "incentivar", + "transformarse", + "empoderar", + "Envisioneer", + "monetizar", + "arnés", + "facilitar", + "aprovechar", + "desintermediar", + "sinergia", + "estrategias", + "desplegar", + "marca", + "crecer", + "objetivo", + "sindicato", + "sintetizar", + "entregue", + "malla", + "incubar", + "enganchar", + "maximizar", + "punto de referencia", + "acelerar", + "reintermediate", + "pizarra", + "visualizar", + "reutilizar", + "innovar", + "escala", + "desatar", + "conducir", + "extender", + "ingeniero", + "revolucionar", + "generar", + "explotar", + "transición", + "e-enable", + "repetir", + "cultivar", + "matriz", + "productize", + "redefinir", + "recontextualizar" +] + +},{}],490:[function(require,module,exports){ +arguments[4][446][0].apply(exports,arguments) +},{"dup":446}],491:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.adjective = require("./adjective"); +company.descriptor = require("./descriptor"); +company.noun = require("./noun"); +company.bs_verb = require("./bs_verb"); +company.name = require("./name"); +company.bs_adjective = require("./bs_adjective"); +company.bs_noun = require("./bs_noun"); + +},{"./adjective":486,"./bs_adjective":487,"./bs_noun":488,"./bs_verb":489,"./descriptor":490,"./name":492,"./noun":493,"./suffix":494}],492:[function(require,module,exports){ +arguments[4][448][0].apply(exports,arguments) +},{"dup":448}],493:[function(require,module,exports){ +arguments[4][449][0].apply(exports,arguments) +},{"dup":449}],494:[function(require,module,exports){ +arguments[4][450][0].apply(exports,arguments) +},{"dup":450}],495:[function(require,module,exports){ +var es_MX = {}; +module['exports'] = es_MX; +es_MX.title = "Spanish Mexico"; +es_MX.separator = " & "; +es_MX.name = require("./name"); +es_MX.address = require("./address"); +es_MX.company = require("./company"); +es_MX.internet = require("./internet"); +es_MX.phone_number = require("./phone_number"); +es_MX.cell_phone = require("./cell_phone"); +es_MX.lorem = require("./lorem"); +es_MX.commerce = require("./commerce"); +es_MX.team = require("./team"); +},{"./address":470,"./cell_phone":481,"./commerce":484,"./company":491,"./internet":498,"./lorem":499,"./name":503,"./phone_number":510,"./team":512}],496:[function(require,module,exports){ +module["exports"] = [ + "com", + "mx", + "info", + "com.mx", + "org", + "gob.mx" +]; + +},{}],497:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.com", + "hotmail.com", + "nearbpo.com", + "corpfolder.com" +]; + +},{}],498:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":496,"./free_email":497,"dup":98}],499:[function(require,module,exports){ +arguments[4][138][0].apply(exports,arguments) +},{"./supplemental":500,"./words":501,"dup":138}],500:[function(require,module,exports){ +arguments[4][139][0].apply(exports,arguments) +},{"dup":139}],501:[function(require,module,exports){ +module["exports"] = [ +"Abacalero", +"Abacería", +"Abacero", +"Abacial", +"Abaco", +"Abacora", +"Abacorar", +"Abad", +"Abada", +"Abadejo", +"Abadengo", +"Abadernar", +"Abadesa", +"Abadí", +"Abadía", +"Abadiado", +"Abadiato", +"Abajadero", +"Abajamiento", +"Abajar", +"Abajeño", +"Abajera", +"Abajo", +"Abalada", +"Abalanzar", +"Abalar", +"Abalaustrado", +"Abaldonadamente", +"Abaldonamiento", +"Bastonada", +"Bastonazo", +"Bastoncillo", +"Bastonear", +"Bastonero", +"Bástulo", +"Basura", +"Basural", +"Basurear", +"Basurero", +"Bata", +"Batacazo", +"Batahola", +"Batalán", +"Batalla", +"Batallador", +"Batallar", +"Batallaroso", +"Batallola", +"Batallón", +"Batallona", +"Batalloso", +"Batán", +"Batanar", +"Batanear", +"Batanero", +"Batanga", +"Bataola", +"Batata", +"Batatazo", +"Batato", +"Batavia", +"Bátavo", +"Batayola", +"Batazo", +"Bate", +"Batea", +"Bateador", +"Bateaguas", +"Cenagar", +"Cenagoso", +"Cenal", +"Cenaoscuras", +"Ceñar", +"Cenata", +"Cenca", +"Cencapa", +"Cencellada", +"Cenceñada", +"Cenceño", +"Cencero", +"Cencerra", +"Cencerrada", +"Cencerrado", +"Cencerrear", +"Cencerreo", +"Cencerril", +"Cencerrillas", +"Cencerro", +"Cencerrón", +"Cencha", +"Cencido", +"Cencío", +"Cencivera", +"Cenco", +"Cencuate", +"Cendal", +"Cendalí", +"Céndea", +"Cendolilla", +"Cendra", +"Cendrada", +"Cendradilla", +"Cendrado", +"Cendrar", +"Cendrazo", +"Cenefa", +"Cenegar", +"Ceneque", +"Cenero", +"Cenestesia", +"Desceñir", +"Descensión", +"Descenso", +"Descentrado", +"Descentralización", +"Descentralizador", +"Descentralizar", +"Descentrar", +"Descepar", +"Descerar", +"Descercado", +"Descercador", +"Descercar", +"Descerco", +"Descerebración", +"Descerebrado", +"Descerebrar", +"Descerezar", +"Descerrajado", +"Descerrajadura", +"Descerrajar", +"Descerrar", +"Descerrumarse", +"Descervigamiento", +"Descervigar", +"Deschapar", +"Descharchar", +"Deschavetado", +"Deschavetarse", +"Deschuponar", +"Descifrable", +"Descifrador", +"Desciframiento", +"Descifrar", +"Descifre", +"Descimbramiento", +"Descimbrar", +"Engarbarse", +"Engarberar", +"Engarbullar", +"Engarce", +"Engarfiar", +"Engargantadura", +"Engargantar", +"Engargante", +"Engargolado", +"Engargolar", +"Engaritar", +"Engarmarse", +"Engarnio", +"Engarrafador", +"Engarrafar", +"Engarrar", +"Engarro", +"Engarronar", +"Engarrotar", +"Engarzador", +"Engarzadura", +"Engarzar", +"Engasgarse", +"Engastador", +"Engastadura", +"Engastar", +"Engaste", +"Ficción", +"Fice", +"Ficha", +"Fichaje", +"Fichar", +"Fichero", +"Ficoideo", +"Ficticio", +"Fidalgo", +"Fidecomiso", +"Fidedigno", +"Fideero", +"Fideicomisario", +"Fideicomiso", +"Fideicomitente", +"Fideísmo", +"Fidelidad", +"Fidelísimo", +"Fideo", +"Fido", +"Fiducia", +"Geminación", +"Geminado", +"Geminar", +"Géminis", +"Gémino", +"Gemíparo", +"Gemiquear", +"Gemiqueo", +"Gemir", +"Gemología", +"Gemológico", +"Gemólogo", +"Gemonias", +"Gemoso", +"Gemoterapia", +"Gen", +"Genciana", +"Gencianáceo", +"Gencianeo", +"Gendarme", +"Gendarmería", +"Genealogía", +"Genealógico", +"Genealogista", +"Genearca", +"Geneático", +"Generable", +"Generación", +"Generacional", +"Generador", +"General", +"Generala", +"Generalato", +"Generalidad", +"Generalísimo", +"Incordio", +"Incorporación", +"Incorporal", +"Incorporalmente", +"Incorporar", +"Incorporeidad", +"Incorpóreo", +"Incorporo", +"Incorrección", +"Incorrectamente", +"Incorrecto", +"Incorregibilidad", +"Incorregible", +"Incorregiblemente", +"Incorrupción", +"Incorruptamente", +"Incorruptibilidad", +"Incorruptible", +"Incorrupto", +"Incrasar", +"Increado", +"Incredibilidad", +"Incrédulamente", +"Incredulidad", +"Incrédulo", +"Increíble", +"Increíblemente", +"Incrementar", +"Incremento", +"Increpación", +"Increpador", +"Increpar", +"Incriminación", +"Incriminar", +"Incristalizable", +"Incruentamente", +"Incruento", +"Incrustación" +]; + +},{}],502:[function(require,module,exports){ +module["exports"] = [ +"Aarón", +"Abraham", +"Adán", +"Agustín", +"Alan", +"Alberto", +"Alejandro", +"Alexander", +"Alexis", +"Alfonso", +"Alfredo", +"Andrés", +"Ángel Daniel", +"Ángel Gabriel", +"Antonio", +"Armando", +"Arturo", +"Axel", +"Benito", +"Benjamín", +"Bernardo", +"Brandon", +"Brayan", +"Carlos", +"César", +"Claudio", +"Clemente", +"Cristian", +"Cristobal", +"Damián", +"Daniel", +"David", +"Diego", +"Eduardo", +"Elías", +"Emiliano", +"Emilio", +"Emilio", +"Emmanuel", +"Enrique", +"Erick", +"Ernesto", +"Esteban", +"Federico", +"Felipe", +"Fernando", +"Fernando Javier", +"Francisco", +"Francisco Javier", +"Gabriel", +"Gael", +"Gerardo", +"Germán", +"Gilberto", +"Gonzalo", +"Gregorio", +"Guillermo", +"Gustavo", +"Hernán", +"Homero", +"Horacio", +"Hugo", +"Ignacio", +"Iker", +"Isaac", +"Isaias", +"Israel", +"Ivan", +"Jacobo", +"Jaime", +"Javier", +"Jerónimo", +"Jesús", +"Joaquín", +"Jorge", +"Jorge Luis", +"José", +"José Antonio", +"Jose Daniel", +"José Eduardo", +"José Emilio", +"José Luis", +"José María", +"José Miguel", +"Juan", +"Juan Carlos", +"Juan Manuel", +"Juan Pablo", +"Julio", +"Julio César", +"Kevin", +"Leonardo", +"Lorenzo", +"Lucas", +"Luis", +"Luis Ángel", +"Luis Fernando", +"Luis Gabino", +"Luis Miguel", +"Manuel", +"Marco Antonio", +"Marcos", +"Mariano", +"Mario", +"Martín", +"Mateo", +"Matías", +"Mauricio", +"Maximiliano", +"Miguel", +"Miguel Ángel", +"Nicolás", +"Octavio", +"Óscar", +"Pablo", +"Patricio", +"Pedro", +"Rafael", +"Ramiro", +"Ramón", +"Raúl", +"Ricardo", +"Roberto", +"Rodrigo", +"Rubén", +"Salvador", +"Samuel", +"Sancho", +"Santiago", +"Saúl", +"Sebastian", +"Sergio", +"Tadeo", +"Teodoro", +"Timoteo", +"Tomás", +"Uriel", +"Vicente", +"Víctor", +"Victor Manuel", +"Adriana", +"Alejandra", +"Alicia", +"Amalia", +"Ana", +"Ana Luisa", +"Ana María", +"Andrea", +"Ángela", +"Anita", +"Antonia", +"Araceli", +"Ariadna", +"Barbara", +"Beatriz", +"Berta", +"Blanca", +"Caridad", +"Carla", +"Carlota", +"Carmen", +"Carolina", +"Catalina", +"Cecilia", +"Clara", +"Claudia", +"Concepción", +"Conchita", +"Cristina", +"Daniela", +"Débora", +"Diana", +"Dolores", +"Dorotea", +"Elena", +"Elisa", +"Elizabeth", +"Eloisa", +"Elsa", +"Elvira", +"Emilia", +"Esperanza", +"Estela", +"Ester", +"Eva", +"Florencia", +"Francisca", +"Gabriela", +"Gloria", +"Graciela", +"Guadalupe", +"Guillermina", +"Inés", +"Irene", +"Isabel", +"Isabela", +"Josefina", +"Juana", +"Julia", +"Laura", +"Leonor", +"Leticia", +"Lilia", +"Lola", +"Lorena", +"Lourdes", +"Lucia", +"Luisa", +"Luz", +"Magdalena", +"Manuela", +"Marcela", +"Margarita", +"María", +"María Cristina", +"María de Jesús", +"María de los Ángeles", +"María del Carmen", +"María Elena", +"María Eugenia", +"María Guadalupe", +"María José", +"María Luisa", +"María Soledad", +"María Teresa", +"Mariana", +"Maricarmen", +"Marilu", +"Marisol", +"Marta", +"Mayte", +"Mercedes", +"Micaela", +"Mónica", +"Natalia", +"Norma", +"Olivia", +"Patricia", +"Pilar", +"Ramona", +"Raquel", +"Rebeca", +"Reina", +"Rocio", +"Rosa", +"Rosa María", +"Rosalia", +"Rosario", +"Sara", +"Silvia", +"Sofia", +"Soledad", +"Sonia", +"Susana", +"Teresa", +"Verónica", +"Victoria", +"Virginia", +"Xochitl", +"Yolanda", +"Abigail", +"Abril", +"Adela", +"Alexa", +"Alondra Romina", +"Ana Sofía", +"Ana Victoria", +"Camila", +"Carolina", +"Daniela", +"Dulce María", +"Emily", +"Esmeralda", +"Estefanía", +"Evelyn", +"Fatima", +"Ivanna", +"Jazmin", +"Jennifer", +"Jimena", +"Julieta", +"Kimberly", +"Liliana", +"Lizbeth", +"María Fernanda", +"Melany", +"Melissa", +"Miranda", +"Monserrat", +"Naomi", +"Natalia", +"Nicole", +"Paola", +"Paulina", +"Regina", +"Renata", +"Valentina", +"Valeria", +"Vanessa", +"Ximena", +"Ximena Guadalupe", +"Yamileth", +"Yaretzi", +"Zoe" +] +},{}],503:[function(require,module,exports){ +arguments[4][314][0].apply(exports,arguments) +},{"./first_name":502,"./last_name":504,"./name":505,"./prefix":506,"./suffix":507,"./title":508,"dup":314}],504:[function(require,module,exports){ +module["exports"] = [ + "Abeyta", +"Abrego", +"Abreu", +"Acevedo", +"Acosta", +"Acuña", +"Adame", +"Adorno", +"Agosto", +"Aguayo", +"Águilar", +"Aguilera", +"Aguirre", +"Alanis", +"Alaniz", +"Alarcón", +"Alba", +"Alcala", +"Alcántar", +"Alcaraz", +"Alejandro", +"Alemán", +"Alfaro", +"Alicea", +"Almanza", +"Almaraz", +"Almonte", +"Alonso", +"Alonzo", +"Altamirano", +"Alva", +"Alvarado", +"Alvarez", +"Amador", +"Amaya", +"Anaya", +"Anguiano", +"Angulo", +"Aparicio", +"Apodaca", +"Aponte", +"Aragón", +"Aranda", +"Araña", +"Arce", +"Archuleta", +"Arellano", +"Arenas", +"Arevalo", +"Arguello", +"Arias", +"Armas", +"Armendáriz", +"Armenta", +"Armijo", +"Arredondo", +"Arreola", +"Arriaga", +"Arroyo", +"Arteaga", +"Atencio", +"Ávalos", +"Ávila", +"Avilés", +"Ayala", +"Baca", +"Badillo", +"Báez", +"Baeza", +"Bahena", +"Balderas", +"Ballesteros", +"Banda", +"Bañuelos", +"Barajas", +"Barela", +"Barragán", +"Barraza", +"Barrera", +"Barreto", +"Barrientos", +"Barrios", +"Batista", +"Becerra", +"Beltrán", +"Benavides", +"Benavídez", +"Benítez", +"Bermúdez", +"Bernal", +"Berríos", +"Bétancourt", +"Blanco", +"Bonilla", +"Borrego", +"Botello", +"Bravo", +"Briones", +"Briseño", +"Brito", +"Bueno", +"Burgos", +"Bustamante", +"Bustos", +"Caballero", +"Cabán", +"Cabrera", +"Cadena", +"Caldera", +"Calderón", +"Calvillo", +"Camacho", +"Camarillo", +"Campos", +"Canales", +"Candelaria", +"Cano", +"Cantú", +"Caraballo", +"Carbajal", +"Cardenas", +"Cardona", +"Carmona", +"Carranza", +"Carrasco", +"Carrasquillo", +"Carreón", +"Carrera", +"Carrero", +"Carrillo", +"Carrion", +"Carvajal", +"Casanova", +"Casares", +"Casárez", +"Casas", +"Casillas", +"Castañeda", +"Castellanos", +"Castillo", +"Castro", +"Cavazos", +"Cazares", +"Ceballos", +"Cedillo", +"Ceja", +"Centeno", +"Cepeda", +"Cerda", +"Cervantes", +"Cervántez", +"Chacón", +"Chapa", +"Chavarría", +"Chávez", +"Cintrón", +"Cisneros", +"Collado", +"Collazo", +"Colón", +"Colunga", +"Concepción", +"Contreras", +"Cordero", +"Córdova", +"Cornejo", +"Corona", +"Coronado", +"Corral", +"Corrales", +"Correa", +"Cortés", +"Cortez", +"Cotto", +"Covarrubias", +"Crespo", +"Cruz", +"Cuellar", +"Curiel", +"Dávila", +"de Anda", +"de Jesús", +"Delacrúz", +"Delafuente", +"Delagarza", +"Delao", +"Delapaz", +"Delarosa", +"Delatorre", +"Deleón", +"Delgadillo", +"Delgado", +"Delrío", +"Delvalle", +"Díaz", +"Domínguez", +"Domínquez", +"Duarte", +"Dueñas", +"Duran", +"Echevarría", +"Elizondo", +"Enríquez", +"Escalante", +"Escamilla", +"Escobar", +"Escobedo", +"Esparza", +"Espinal", +"Espino", +"Espinosa", +"Espinoza", +"Esquibel", +"Esquivel", +"Estévez", +"Estrada", +"Fajardo", +"Farías", +"Feliciano", +"Fernández", +"Ferrer", +"Fierro", +"Figueroa", +"Flores", +"Flórez", +"Fonseca", +"Franco", +"Frías", +"Fuentes", +"Gaitán", +"Galarza", +"Galindo", +"Gallardo", +"Gallegos", +"Galván", +"Gálvez", +"Gamboa", +"Gamez", +"Gaona", +"Garay", +"García", +"Garibay", +"Garica", +"Garrido", +"Garza", +"Gastélum", +"Gaytán", +"Gil", +"Girón", +"Godínez", +"Godoy", +"Gollum", +"Gómez", +"Gonzales", +"González", +"Gracia", +"Granado", +"Granados", +"Griego", +"Grijalva", +"Guajardo", +"Guardado", +"Guerra", +"Guerrero", +"Guevara", +"Guillen", +"Gurule", +"Gutiérrez", +"Guzmán", +"Haro", +"Henríquez", +"Heredia", +"Hernádez", +"Hernandes", +"Hernández", +"Herrera", +"Hidalgo", +"Hinojosa", +"Holguín", +"Huerta", +"Huixtlacatl", +"Hurtado", +"Ibarra", +"Iglesias", +"Irizarry", +"Jaime", +"Jaimes", +"Jáquez", +"Jaramillo", +"Jasso", +"Jiménez", +"Jimínez", +"Juárez", +"Jurado", +"Kadar rodriguez", +"Kamal", +"Kamat", +"Kanaria", +"Kanea", +"Kanimal", +"Kano", +"Kanzaki", +"Kaplan", +"Kara", +"Karam", +"Karan", +"Kardache soto", +"Karem", +"Karen", +"Khalid", +"Kindelan", +"Koenig", +"Korta", +"Korta hernandez", +"Kortajarena", +"Kranz sans", +"Krasnova", +"Krauel natera", +"Kuzmina", +"Kyra", +"Laboy", +"Lara", +"Laureano", +"Leal", +"Lebrón", +"Ledesma", +"Leiva", +"Lemus", +"León", +"Lerma", +"Leyva", +"Limón", +"Linares", +"Lira", +"Llamas", +"Loera", +"Lomeli", +"Longoria", +"López", +"Lovato", +"Loya", +"Lozada", +"Lozano", +"Lucero", +"Lucio", +"Luevano", +"Lugo", +"Luna", +"Macías", +"Madera", +"Madrid", +"Madrigal", +"Maestas", +"Magaña", +"Malave", +"Maldonado", +"Manzanares", +"Mares", +"Marín", +"Márquez", +"Marrero", +"Marroquín", +"Martínez", +"Mascareñas", +"Mata", +"Mateo", +"Matías", +"Matos", +"Maya", +"Mayorga", +"Medina", +"Medrano", +"Mejía", +"Meléndez", +"Melgar", +"Mena", +"Menchaca", +"Méndez", +"Mendoza", +"Menéndez", +"Meraz", +"Mercado", +"Merino", +"Mesa", +"Meza", +"Miramontes", +"Miranda", +"Mireles", +"Mojica", +"Molina", +"Mondragón", +"Monroy", +"Montalvo", +"Montañez", +"Montaño", +"Montemayor", +"Montenegro", +"Montero", +"Montes", +"Montez", +"Montoya", +"Mora", +"Morales", +"Moreno", +"Mota", +"Moya", +"Munguía", +"Muñiz", +"Muñoz", +"Murillo", +"Muro", +"Nájera", +"Naranjo", +"Narváez", +"Nava", +"Navarrete", +"Navarro", +"Nazario", +"Negrete", +"Negrón", +"Nevárez", +"Nieto", +"Nieves", +"Niño", +"Noriega", +"Núñez", +"Ñañez", +"Ocampo", +"Ocasio", +"Ochoa", +"Ojeda", +"Olivares", +"Olivárez", +"Olivas", +"Olivera", +"Olivo", +"Olmos", +"Olvera", +"Ontiveros", +"Oquendo", +"Ordóñez", +"Orellana", +"Ornelas", +"Orosco", +"Orozco", +"Orta", +"Ortega", +"Ortiz", +"Osorio", +"Otero", +"Ozuna", +"Pabón", +"Pacheco", +"Padilla", +"Padrón", +"Páez", +"Pagan", +"Palacios", +"Palomino", +"Palomo", +"Pantoja", +"Paredes", +"Parra", +"Partida", +"Patiño", +"Paz", +"Pedraza", +"Pedroza", +"Pelayo", +"Peña", +"Perales", +"Peralta", +"Perea", +"Peres", +"Pérez", +"Pichardo", +"Pineda", +"Piña", +"Pizarro", +"Polanco", +"Ponce", +"Porras", +"Portillo", +"Posada", +"Prado", +"Preciado", +"Prieto", +"Puente", +"Puga", +"Pulido", +"Quesada", +"Quevedo", +"Quezada", +"Quinta", +"Quintairos", +"Quintana", +"Quintanilla", +"Quintero", +"Quintero cruz", +"Quintero de la cruz", +"Quiñones", +"Quiñónez", +"Quiros", +"Quiroz", +"Rael", +"Ramírez", +"Ramón", +"Ramos", +"Rangel", +"Rascón", +"Raya", +"Razo", +"Regalado", +"Rendón", +"Rentería", +"Reséndez", +"Reyes", +"Reyna", +"Reynoso", +"Rico", +"Rincón", +"Riojas", +"Ríos", +"Rivas", +"Rivera", +"Rivero", +"Robledo", +"Robles", +"Rocha", +"Rodarte", +"Rodrígez", +"Rodríguez", +"Rodríquez", +"Rojas", +"Rojo", +"Roldán", +"Rolón", +"Romero", +"Romo", +"Roque", +"Rosado", +"Rosales", +"Rosario", +"Rosas", +"Roybal", +"Rubio", +"Ruelas", +"Ruiz", +"Saavedra", +"Sáenz", +"Saiz", +"Salas", +"Salazar", +"Salcedo", +"Salcido", +"Saldaña", +"Saldivar", +"Salgado", +"Salinas", +"Samaniego", +"Sanabria", +"Sanches", +"Sánchez", +"Sandoval", +"Santacruz", +"Santana", +"Santiago", +"Santillán", +"Sarabia", +"Sauceda", +"Saucedo", +"Sedillo", +"Segovia", +"Segura", +"Sepúlveda", +"Serna", +"Serrano", +"Serrato", +"Sevilla", +"Sierra", +"Sisneros", +"Solano", +"Solís", +"Soliz", +"Solorio", +"Solorzano", +"Soria", +"Sosa", +"Sotelo", +"Soto", +"Suárez", +"Tafoya", +"Tamayo", +"Tamez", +"Tapia", +"Tejada", +"Tejeda", +"Téllez", +"Tello", +"Terán", +"Terrazas", +"Tijerina", +"Tirado", +"Toledo", +"Toro", +"Torres", +"Tórrez", +"Tovar", +"Trejo", +"Treviño", +"Trujillo", +"Ulibarri", +"Ulloa", +"Urbina", +"Ureña", +"Urías", +"Uribe", +"Urrutia", +"Vaca", +"Valadez", +"Valdés", +"Valdez", +"Valdivia", +"Valencia", +"Valentín", +"Valenzuela", +"Valladares", +"Valle", +"Vallejo", +"Valles", +"Valverde", +"Vanegas", +"Varela", +"Vargas", +"Vásquez", +"Vázquez", +"Vega", +"Vela", +"Velasco", +"Velásquez", +"Velázquez", +"Vélez", +"Véliz", +"Venegas", +"Vera", +"Verdugo", +"Verduzco", +"Vergara", +"Viera", +"Vigil", +"Villa", +"Villagómez", +"Villalobos", +"Villalpando", +"Villanueva", +"Villareal", +"Villarreal", +"Villaseñor", +"Villegas", +"Xacon", +"Xairo Belmonte", +"Xana", +"Xenia", +"Xiana", +"Xicoy", +"Yago", +"Yami", +"Yanes", +"Yáñez", +"Ybarra", +"Yebra", +"Yunta", +"Zabaleta", +"Zamarreno", +"Zamarripa", +"Zambrana", +"Zambrano", +"Zamora", +"Zamudio", +"Zapata", +"Zaragoza", +"Zarate", +"Zavala", +"Zayas", +"Zelaya", +"Zepeda", +"Zúñiga" +]; + +},{}],505:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} de #{last_name}", + "#{suffix} #{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}" +]; + +},{}],506:[function(require,module,exports){ +arguments[4][459][0].apply(exports,arguments) +},{"dup":459}],507:[function(require,module,exports){ +module["exports"] = [ + "Jr.", + "Sr.", + "I", + "II", + "III", + "IV", + "V", + "MD", + "DDS", + "PhD", + "DVM", + "Ing.", + "Lic.", + "Dr.", + "Mtro." +]; + +},{}],508:[function(require,module,exports){ + module["exports"] = { + "descriptor": [ + "Jefe", + "Senior", + "Directo", + "Corporativo", + "Dinánmico", + "Futuro", + "Producto", + "Nacional", + "Regional", + "Distrito", + "Central", + "Global", + "Cliente", + "Inversor", + "International", + "Heredado", + "Adelante", + "Interno", + "Humano", + "Gerente", + "SubGerente", + "Director" + ], + "level": [ + "Soluciones", + "Programa", + "Marca", + "Seguridad", + "Investigación", + "Marketing", + "Normas", + "Implementación", + "Integración", + "Funcionalidad", + "Respuesta", + "Paradigma", + "Tácticas", + "Identidad", + "Mercados", + "Grupo", + "División", + "Aplicaciones", + "Optimización", + "Operaciones", + "Infraestructura", + "Intranet", + "Comunicaciones", + "Web", + "Calidad", + "Seguro", + "Mobilidad", + "Cuentas", + "Datos", + "Creativo", + "Configuración", + "Contabilidad", + "Interacciones", + "Factores", + "Usabilidad", + "Métricas", + ], + "job": [ + "Supervisor", + "Asociado", + "Ejecutivo", + "Relacciones", + "Oficial", + "Gerente", + "Ingeniero", + "Especialista", + "Director", + "Coordinador", + "Administrador", + "Arquitecto", + "Analista", + "Diseñador", + "Planificador", + "Técnico", + "Funcionario", + "Desarrollador", + "Productor", + "Consultor", + "Asistente", + "Facilitador", + "Agente", + "Representante", + "Estratega", + "Scrum Master", + "Scrum Owner", + "Product Owner", + "Scrum Developer" + ] +}; + +},{}],509:[function(require,module,exports){ +module["exports"] = [ + "5###-###-###", + "5##.###.###", + "5## ### ###", + "5########" +]; + +},{}],510:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":509,"dup":108}],511:[function(require,module,exports){ +module["exports"] = [ + "hormigas", + "murciélagos", + "osos", + "abejas", + "pájaros", + "búfalo", + "gatos", + "pollos", + "ganado", + "perros", + "delfines", + "patos", + "elefantes", + "peces", + "zorros", + "ranas", + "gansos", + "cabras", + "caballos", + "canguros", + "leones", + "monos", + "búhos", + "bueyes", + "pingüinos", + "pueblo", + "cerdos", + "conejos", + "ovejas", + "tigres", + "ballenas", + "lobos", + "cebras", + "almas en pena", + "cuervos", + "gatos negros", + "quimeras", + "fantasmas", + "conspiradores", + "dragones", + "enanos", + "duendes", + "encantadores", + "exorcistas", + "hijos", + "enemigos", + "gigantes", + "gnomos", + "duendes", + "gansos", + "grifos", + "licántropos", + "némesis", + "ogros", + "oráculos", + "profetas", + "hechiceros", + "arañas", + "espíritus", + "vampiros", + "brujos", + "zorras", + "hombres lobo", + "brujas", + "adoradores", + "zombies", + "druidas" +]; + +},{}],512:[function(require,module,exports){ +arguments[4][325][0].apply(exports,arguments) +},{"./creature":511,"./name":513,"dup":325}],513:[function(require,module,exports){ +arguments[4][326][0].apply(exports,arguments) +},{"dup":326}],514:[function(require,module,exports){ +var fa = {}; +module['exports'] = fa; +fa.title = "Farsi"; +fa.name = require("./name"); + +},{"./name":516}],515:[function(require,module,exports){ +module["exports"] = [ + "آبان دخت", + "آبتین", + "آتوسا", + "آفر", + "آفره دخت", + "آذرنوش‌", + "آذین", + "آراه", + "آرزو", + "آرش", + "آرتین", + "آرتام", + "آرتمن", + "آرشام", + "آرمان", + "آرمین", + "آرمیتا", + "آریا فر", + "آریا", + "آریا مهر", + "آرین", + "آزاده", + "آزرم", + "آزرمدخت", + "آزیتا", + "آناهیتا", + "آونگ", + "آهو", + "آیدا", + "اتسز", + "اختر", + "ارد", + "ارد شیر", + "اردوان", + "ارژن", + "ارژنگ", + "ارسلان", + "ارغوان", + "ارمغان", + "ارنواز", + "اروانه", + "استر", + "اسفندیار", + "اشکان", + "اشکبوس", + "افسانه", + "افسون", + "افشین", + "امید", + "انوش (‌ آنوشا )", + "انوشروان", + "اورنگ", + "اوژن", + "اوستا", + "اهورا", + "ایاز", + "ایران", + "ایراندخت", + "ایرج", + "ایزدیار", + "بابک", + "باپوک", + "باربد", + "بارمان", + "بامداد", + "بامشاد", + "بانو", + "بختیار", + "برانوش", + "بردیا", + "برزو", + "برزویه", + "برزین", + "برمک", + "بزرگمهر", + "بنفشه", + "بوژان", + "بویان", + "بهار", + "بهارک", + "بهاره", + "بهتاش", + "بهداد", + "بهرام", + "بهدیس", + "بهرخ", + "بهرنگ", + "بهروز", + "بهزاد", + "بهشاد", + "بهمن", + "بهناز", + "بهنام", + "بهنود", + "بهنوش", + "بیتا", + "بیژن", + "پارسا", + "پاکان", + "پاکتن", + "پاکدخت", + "پانته آ", + "پدرام", + "پرتو", + "پرشنگ", + "پرتو", + "پرستو", + "پرویز", + "پردیس", + "پرهام", + "پژمان", + "پژوا", + "پرنیا", + "پشنگ", + "پروانه", + "پروین", + "پری", + "پریچهر", + "پریدخت", + "پریسا", + "پرناز", + "پریوش", + "پریا", + "پوپک", + "پوران", + "پوراندخت", + "پوریا", + "پولاد", + "پویا", + "پونه", + "پیام", + "پیروز", + "پیمان", + "تابان", + "تاباندخت", + "تاجی", + "تارا", + "تاویار", + "ترانه", + "تناز", + "توران", + "توراندخت", + "تورج", + "تورتک", + "توفان", + "توژال", + "تیر داد", + "تینا", + "تینو", + "جابان", + "جامین", + "جاوید", + "جریره", + "جمشید", + "جوان", + "جویا", + "جهان", + "جهانبخت", + "جهانبخش", + "جهاندار", + "جهانگیر", + "جهان بانو", + "جهاندخت", + "جهان ناز", + "جیران", + "چابک", + "چالاک", + "چاوش", + "چترا", + "چوبین", + "چهرزاد", + "خاوردخت", + "خداداد", + "خدایار", + "خرم", + "خرمدخت", + "خسرو", + "خشایار", + "خورشید", + "دادمهر", + "دارا", + "داراب", + "داریا", + "داریوش", + "دانوش", + "داور‌", + "دایان", + "دریا", + "دل آرا", + "دل آویز", + "دلارام", + "دل انگیز", + "دلبر", + "دلبند", + "دلربا", + "دلشاد", + "دلکش", + "دلناز", + "دلنواز", + "دورشاسب", + "دنیا", + "دیااکو", + "دیانوش", + "دیبا", + "دیبا دخت", + "رابو", + "رابین", + "رادبانو", + "رادمان", + "رازبان", + "راژانه", + "راسا", + "رامتین", + "رامش", + "رامشگر", + "رامونا", + "رامیار", + "رامیلا", + "رامین", + "راویار", + "رژینا", + "رخپاک", + "رخسار", + "رخشانه", + "رخشنده", + "رزمیار", + "رستم", + "رکسانا", + "روبینا", + "رودابه", + "روزبه", + "روشنک", + "روناک", + "رهام", + "رهی", + "ریبار", + "راسپینا", + "زادبخت", + "زاد به", + "زاد چهر", + "زاد فر", + "زال", + "زادماسب", + "زاوا", + "زردشت", + "زرنگار", + "زری", + "زرین", + "زرینه", + "زمانه", + "زونا", + "زیبا", + "زیبار", + "زیما", + "زینو", + "ژاله", + "ژالان", + "ژیار", + "ژینا", + "ژیوار", + "سارا", + "سارک", + "سارنگ", + "ساره", + "ساسان", + "ساغر", + "سام", + "سامان", + "سانا", + "ساناز", + "سانیار", + "ساویز", + "ساهی", + "ساینا", + "سایه", + "سپنتا", + "سپند", + "سپهر", + "سپهرداد", + "سپیدار", + "سپید بانو", + "سپیده", + "ستاره", + "ستی", + "سرافراز", + "سرور", + "سروش", + "سرور", + "سوبا", + "سوبار", + "سنبله", + "سودابه", + "سوری", + "سورن", + "سورنا", + "سوزان", + "سوزه", + "سوسن", + "سومار", + "سولان", + "سولماز", + "سوگند", + "سهراب", + "سهره", + "سهند", + "سیامک", + "سیاوش", + "سیبوبه ‌", + "سیما", + "سیمدخت", + "سینا", + "سیمین", + "سیمین دخت", + "شاپرک", + "شادی", + "شادمهر", + "شاران", + "شاهپور", + "شاهدخت", + "شاهرخ", + "شاهین", + "شاهیندخت", + "شایسته", + "شباهنگ", + "شب بو", + "شبدیز", + "شبنم", + "شراره", + "شرمین", + "شروین", + "شکوفه", + "شکفته", + "شمشاد", + "شمین", + "شوان", + "شمیلا", + "شورانگیز", + "شوری", + "شهاب", + "شهبار", + "شهباز", + "شهبال", + "شهپر", + "شهداد", + "شهرآرا", + "شهرام", + "شهربانو", + "شهرزاد", + "شهرناز", + "شهرنوش", + "شهره", + "شهریار", + "شهرزاد", + "شهلا", + "شهنواز", + "شهین", + "شیبا", + "شیدا", + "شیده", + "شیردل", + "شیرزاد", + "شیرنگ", + "شیرو", + "شیرین دخت", + "شیما", + "شینا", + "شیرین", + "شیوا", + "طوس", + "طوطی", + "طهماسب", + "طهمورث", + "غوغا", + "غنچه", + "فتانه", + "فدا", + "فراز", + "فرامرز", + "فرانک", + "فراهان", + "فربد", + "فربغ", + "فرجاد", + "فرخ", + "فرخ پی", + "فرخ داد", + "فرخ رو", + "فرخ زاد", + "فرخ لقا", + "فرخ مهر", + "فرداد", + "فردیس", + "فرین", + "فرزاد", + "فرزام", + "فرزان", + "فرزانه", + "فرزین", + "فرشاد", + "فرشته", + "فرشید", + "فرمان", + "فرناز", + "فرنگیس", + "فرنود", + "فرنوش", + "فرنیا", + "فروتن", + "فرود", + "فروز", + "فروزان", + "فروزش", + "فروزنده", + "فروغ", + "فرهاد", + "فرهنگ", + "فرهود", + "فربار", + "فریبا", + "فرید", + "فریدخت", + "فریدون", + "فریمان", + "فریناز", + "فرینوش", + "فریوش", + "فیروز", + "فیروزه", + "قابوس", + "قباد", + "قدسی", + "کابان", + "کابوک", + "کارا", + "کارو", + "کاراکو", + "کامبخت", + "کامبخش", + "کامبیز", + "کامجو", + "کامدین", + "کامران", + "کامراوا", + "کامک", + "کامنوش", + "کامیار", + "کانیار", + "کاووس", + "کاوه", + "کتایون", + "کرشمه", + "کسری", + "کلاله", + "کمبوجیه", + "کوشا", + "کهبد", + "کهرام", + "کهزاد", + "کیارش", + "کیان", + "کیانا", + "کیانچهر", + "کیاندخت", + "کیانوش", + "کیاوش", + "کیخسرو", + "کیقباد", + "کیکاووس", + "کیوان", + "کیوان دخت", + "کیومرث", + "کیهان", + "کیاندخت", + "کیهانه", + "گرد آفرید", + "گردان", + "گرشا", + "گرشاسب", + "گرشین", + "گرگین", + "گزل", + "گشتاسب", + "گشسب", + "گشسب بانو", + "گل", + "گل آذین", + "گل آرا‌", + "گلاره", + "گل افروز", + "گلاله", + "گل اندام", + "گلاویز", + "گلباد", + "گلبار", + "گلبام", + "گلبان", + "گلبانو", + "گلبرگ", + "گلبو", + "گلبهار", + "گلبیز", + "گلپاره", + "گلپر", + "گلپری", + "گلپوش", + "گل پونه", + "گلچین", + "گلدخت", + "گلدیس", + "گلربا", + "گلرخ", + "گلرنگ", + "گلرو", + "گلشن", + "گلریز", + "گلزاد", + "گلزار", + "گلسا", + "گلشید", + "گلنار", + "گلناز", + "گلنسا", + "گلنواز", + "گلنوش", + "گلی", + "گودرز", + "گوماتو", + "گهر چهر", + "گوهر ناز", + "گیتی", + "گیسو", + "گیلدا", + "گیو", + "لادن", + "لاله", + "لاله رخ", + "لاله دخت", + "لبخند", + "لقاء", + "لومانا", + "لهراسب", + "مارال", + "ماری", + "مازیار", + "ماکان", + "مامک", + "مانا", + "ماندانا", + "مانوش", + "مانی", + "مانیا", + "ماهان", + "ماهاندخت", + "ماه برزین", + "ماه جهان", + "ماهچهر", + "ماهدخت", + "ماهور", + "ماهرخ", + "ماهزاد", + "مردآویز", + "مرداس", + "مرزبان", + "مرمر", + "مزدک", + "مژده", + "مژگان", + "مستان", + "مستانه", + "مشکاندخت", + "مشکناز", + "مشکین دخت", + "منیژه", + "منوچهر", + "مهبانو", + "مهبد", + "مه داد", + "مهتاب", + "مهدیس", + "مه جبین", + "مه دخت", + "مهر آذر", + "مهر آرا", + "مهر آسا", + "مهر آفاق", + "مهر افرین", + "مهرآب", + "مهرداد", + "مهر افزون", + "مهرام", + "مهران", + "مهراندخت", + "مهراندیش", + "مهرانفر", + "مهرانگیز", + "مهرداد", + "مهر دخت", + "مهرزاده ‌", + "مهرناز", + "مهرنوش", + "مهرنکار", + "مهرنیا", + "مهروز", + "مهری", + "مهریار", + "مهسا", + "مهستی", + "مه سیما", + "مهشاد", + "مهشید", + "مهنام", + "مهناز", + "مهنوش", + "مهوش", + "مهیار", + "مهین", + "مهین دخت", + "میترا", + "میخک", + "مینا", + "مینا دخت", + "مینو", + "مینودخت", + "مینو فر", + "نادر", + "ناز آفرین", + "نازبانو", + "نازپرور", + "نازچهر", + "نازفر", + "نازلی", + "نازی", + "نازیدخت", + "نامور", + "ناهید", + "ندا", + "نرسی", + "نرگس", + "نرمک", + "نرمین", + "نریمان", + "نسترن", + "نسرین", + "نسرین دخت", + "نسرین نوش", + "نکیسا", + "نگار", + "نگاره", + "نگارین", + "نگین", + "نوا", + "نوش", + "نوش آذر", + "نوش آور", + "نوشا", + "نوش آفرین", + "نوشدخت", + "نوشروان", + "نوشفر", + "نوشناز", + "نوشین", + "نوید", + "نوین", + "نوین دخت", + "نیش ا", + "نیک بین", + "نیک پی", + "نیک چهر", + "نیک خواه", + "نیکداد", + "نیکدخت", + "نیکدل", + "نیکزاد", + "نیلوفر", + "نیما", + "وامق", + "ورجاوند", + "وریا", + "وشمگیر", + "وهرز", + "وهسودان", + "ویدا", + "ویس", + "ویشتاسب", + "ویگن", + "هژیر", + "هخامنش", + "هربد( هیربد )", + "هرمز", + "همایون", + "هما", + "همادخت", + "همدم", + "همراز", + "همراه", + "هنگامه", + "هوتن", + "هور", + "هورتاش", + "هورچهر", + "هورداد", + "هوردخت", + "هورزاد", + "هورمند", + "هوروش", + "هوشنگ", + "هوشیار", + "هومان", + "هومن", + "هونام", + "هویدا", + "هیتاسب", + "هیرمند", + "هیما", + "هیوا", + "یادگار", + "یاسمن ( یاسمین )", + "یاشار", + "یاور", + "یزدان", + "یگانه", + "یوشیتا" +]; + +},{}],516:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); + +},{"./first_name":515,"./last_name":517,"./prefix":518}],517:[function(require,module,exports){ +module["exports"] = [ + "عارف", + "عاشوری", + "عالی", + "عبادی", + "عبدالکریمی", + "عبدالملکی", + "عراقی", + "عزیزی", + "عصار", + "عقیلی", + "علم", + "علم‌الهدی", + "علی عسگری", + "علی‌آبادی", + "علیا", + "علی‌پور", + "علی‌زمانی", + "عنایت", + "غضنفری", + "غنی", + "فارسی", + "فاطمی", + "فانی", + "فتاحی", + "فرامرزی", + "فرج", + "فرشیدورد", + "فرمانفرمائیان", + "فروتن", + "فرهنگ", + "فریاد", + "فنایی", + "فنی‌زاده", + "فولادوند", + "فهمیده", + "قاضی", + "قانعی", + "قانونی", + "قمیشی", + "قنبری", + "قهرمان", + "قهرمانی", + "قهرمانیان", + "قهستانی", + "کاشی", + "کاکاوند", + "کامکار", + "کاملی", + "کاویانی", + "کدیور", + "کردبچه", + "کرمانی", + "کریمی", + "کلباسی", + "کمالی", + "کوشکی", + "کهنمویی", + "کیان", + "کیانی (نام خانوادگی)", + "کیمیایی", + "گل محمدی", + "گلپایگانی", + "گنجی", + "لاجوردی", + "لاچینی", + "لاهوتی", + "لنکرانی", + "لوکس", + "مجاهد", + "مجتبایی", + "مجتبوی", + "مجتهد شبستری", + "مجتهدی", + "مجرد", + "محجوب", + "محجوبی", + "محدثی", + "محمدرضایی", + "محمدی", + "مددی", + "مرادخانی", + "مرتضوی", + "مستوفی", + "مشا", + "مصاحب", + "مصباح", + "مصباح‌زاده", + "مطهری", + "مظفر", + "معارف", + "معروف", + "معین", + "مفتاح", + "مفتح", + "مقدم", + "ملایری", + "ملک", + "ملکیان", + "منوچهری", + "موحد", + "موسوی", + "موسویان", + "مهاجرانی", + "مهدی‌پور", + "میرباقری", + "میردامادی", + "میرزاده", + "میرسپاسی", + "میزبانی", + "ناظری", + "نامور", + "نجفی", + "ندوشن", + "نراقی", + "نعمت‌زاده", + "نقدی", + "نقیب‌زاده", + "نواب", + "نوبخت", + "نوبختی", + "نهاوندی", + "نیشابوری", + "نیلوفری", + "واثقی", + "واعظ", + "واعظ‌زاده", + "واعظی", + "وکیلی", + "هاشمی", + "هاشمی رفسنجانی", + "هاشمیان", + "هامون", + "هدایت", + "هراتی", + "هروی", + "همایون", + "همت", + "همدانی", + "هوشیار", + "هومن", + "یاحقی", + "یادگار", + "یثربی", + "یلدا" +]; + +},{}],518:[function(require,module,exports){ +module["exports"] = [ + "آقای", + "خانم", + "دکتر" +]; + +},{}],519:[function(require,module,exports){ +module["exports"] = [ + "####", + "###", + "##", + "#" +]; + +},{}],520:[function(require,module,exports){ +arguments[4][110][0].apply(exports,arguments) +},{"dup":110}],521:[function(require,module,exports){ +module["exports"] = [ + "Paris", + "Marseille", + "Lyon", + "Toulouse", + "Nice", + "Nantes", + "Strasbourg", + "Montpellier", + "Bordeaux", + "Lille13", + "Rennes", + "Reims", + "Le Havre", + "Saint-Étienne", + "Toulon", + "Grenoble", + "Dijon", + "Angers", + "Saint-Denis", + "Villeurbanne", + "Le Mans", + "Aix-en-Provence", + "Brest", + "Nîmes", + "Limoges", + "Clermont-Ferrand", + "Tours", + "Amiens", + "Metz", + "Perpignan", + "Besançon", + "Orléans", + "Boulogne-Billancourt", + "Mulhouse", + "Rouen", + "Caen", + "Nancy", + "Saint-Denis", + "Saint-Paul", + "Montreuil", + "Argenteuil", + "Roubaix", + "Dunkerque14", + "Tourcoing", + "Nanterre", + "Avignon", + "Créteil", + "Poitiers", + "Fort-de-France", + "Courbevoie", + "Versailles", + "Vitry-sur-Seine", + "Colombes", + "Pau", + "Aulnay-sous-Bois", + "Asnières-sur-Seine", + "Rueil-Malmaison", + "Saint-Pierre", + "Antibes", + "Saint-Maur-des-Fossés", + "Champigny-sur-Marne", + "La Rochelle", + "Aubervilliers", + "Calais", + "Cannes", + "Le Tampon", + "Béziers", + "Colmar", + "Bourges", + "Drancy", + "Mérignac", + "Saint-Nazaire", + "Valence", + "Ajaccio", + "Issy-les-Moulineaux", + "Villeneuve-d'Ascq", + "Levallois-Perret", + "Noisy-le-Grand", + "Quimper", + "La Seyne-sur-Mer", + "Antony", + "Troyes", + "Neuilly-sur-Seine", + "Sarcelles", + "Les Abymes", + "Vénissieux", + "Clichy", + "Lorient", + "Pessac", + "Ivry-sur-Seine", + "Cergy", + "Cayenne", + "Niort", + "Chambéry", + "Montauban", + "Saint-Quentin", + "Villejuif", + "Hyères", + "Beauvais", + "Cholet" +]; + +},{}],522:[function(require,module,exports){ +module["exports"] = [ + "France" +]; + +},{}],523:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.building_number = require("./building_number"); +address.street_prefix = require("./street_prefix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street_suffix = require("./street_suffix"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":519,"./city":520,"./city_name":521,"./default_country":522,"./postcode":524,"./secondary_address":525,"./state":526,"./street_address":527,"./street_name":528,"./street_prefix":529,"./street_suffix":530}],524:[function(require,module,exports){ +arguments[4][434][0].apply(exports,arguments) +},{"dup":434}],525:[function(require,module,exports){ +module["exports"] = [ + "Apt. ###", + "# étage" +]; + +},{}],526:[function(require,module,exports){ +module["exports"] = [ + "Alsace", + "Aquitaine", + "Auvergne", + "Basse-Normandie", + "Bourgogne", + "Bretagne", + "Centre", + "Champagne-Ardenne", + "Corse", + "Franche-Comté", + "Haute-Normandie", + "Île-de-France", + "Languedoc-Roussillon", + "Limousin", + "Lorraine", + "Midi-Pyrénées", + "Nord-Pas-de-Calais", + "Pays de la Loire", + "Picardie", + "Poitou-Charentes", + "Provence-Alpes-Côte d'Azur", + "Rhône-Alpes" +]; + +},{}],527:[function(require,module,exports){ +arguments[4][248][0].apply(exports,arguments) +},{"dup":248}],528:[function(require,module,exports){ +module["exports"] = [ + "#{street_prefix} #{street_suffix}" +]; + +},{}],529:[function(require,module,exports){ +module["exports"] = [ + "Allée, Voie", + "Rue", + "Avenue", + "Boulevard", + "Quai", + "Passage", + "Impasse", + "Place" +]; + +},{}],530:[function(require,module,exports){ +module["exports"] = [ + "de l'Abbaye", + "Adolphe Mille", + "d'Alésia", + "d'Argenteuil", + "d'Assas", + "du Bac", + "de Paris", + "La Boétie", + "Bonaparte", + "de la Bûcherie", + "de Caumartin", + "Charlemagne", + "du Chat-qui-Pêche", + "de la Chaussée-d'Antin", + "du Dahomey", + "Dauphine", + "Delesseux", + "du Faubourg Saint-Honoré", + "du Faubourg-Saint-Denis", + "de la Ferronnerie", + "des Francs-Bourgeois", + "des Grands Augustins", + "de la Harpe", + "du Havre", + "de la Huchette", + "Joubert", + "Laffitte", + "Lepic", + "des Lombards", + "Marcadet", + "Molière", + "Monsieur-le-Prince", + "de Montmorency", + "Montorgueil", + "Mouffetard", + "de Nesle", + "Oberkampf", + "de l'Odéon", + "d'Orsel", + "de la Paix", + "des Panoramas", + "Pastourelle", + "Pierre Charron", + "de la Pompe", + "de Presbourg", + "de Provence", + "de Richelieu", + "de Rivoli", + "des Rosiers", + "Royale", + "d'Abbeville", + "Saint-Honoré", + "Saint-Bernard", + "Saint-Denis", + "Saint-Dominique", + "Saint-Jacques", + "Saint-Séverin", + "des Saussaies", + "de Seine", + "de Solférino", + "Du Sommerard", + "de Tilsitt", + "Vaneau", + "de Vaugirard", + "de la Victoire", + "Zadkine" +]; + +},{}],531:[function(require,module,exports){ +arguments[4][123][0].apply(exports,arguments) +},{"dup":123}],532:[function(require,module,exports){ +arguments[4][267][0].apply(exports,arguments) +},{"dup":267}],533:[function(require,module,exports){ +arguments[4][268][0].apply(exports,arguments) +},{"dup":268}],534:[function(require,module,exports){ +arguments[4][125][0].apply(exports,arguments) +},{"dup":125}],535:[function(require,module,exports){ +arguments[4][126][0].apply(exports,arguments) +},{"dup":126}],536:[function(require,module,exports){ +arguments[4][271][0].apply(exports,arguments) +},{"./adjective":531,"./bs_adjective":532,"./bs_noun":533,"./bs_verb":534,"./descriptor":535,"./name":537,"./noun":538,"./suffix":539,"dup":271}],537:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name} et #{Name.last_name}" +]; + +},{}],538:[function(require,module,exports){ +arguments[4][129][0].apply(exports,arguments) +},{"dup":129}],539:[function(require,module,exports){ +module["exports"] = [ + "SARL", + "SA", + "EURL", + "SAS", + "SEM", + "SCOP", + "GIE", + "EI" +]; + +},{}],540:[function(require,module,exports){ +var fr = {}; +module['exports'] = fr; +fr.title = "French"; +fr.address = require("./address"); +fr.company = require("./company"); +fr.internet = require("./internet"); +fr.lorem = require("./lorem"); +fr.name = require("./name"); +fr.phone_number = require("./phone_number"); + +},{"./address":523,"./company":536,"./internet":543,"./lorem":544,"./name":548,"./phone_number":554}],541:[function(require,module,exports){ +module["exports"] = [ + "com", + "fr", + "eu", + "info", + "name", + "net", + "org" +]; + +},{}],542:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.fr", + "hotmail.fr" +]; + +},{}],543:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":541,"./free_email":542,"dup":98}],544:[function(require,module,exports){ +arguments[4][138][0].apply(exports,arguments) +},{"./supplemental":545,"./words":546,"dup":138}],545:[function(require,module,exports){ +arguments[4][139][0].apply(exports,arguments) +},{"dup":139}],546:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],547:[function(require,module,exports){ +module["exports"] = [ + "Enzo", + "Lucas", + "Mathis", + "Nathan", + "Thomas", + "Hugo", + "Théo", + "Tom", + "Louis", + "Raphaël", + "Clément", + "Léo", + "Mathéo", + "Maxime", + "Alexandre", + "Antoine", + "Yanis", + "Paul", + "Baptiste", + "Alexis", + "Gabriel", + "Arthur", + "Jules", + "Ethan", + "Noah", + "Quentin", + "Axel", + "Evan", + "Mattéo", + "Romain", + "Valentin", + "Maxence", + "Noa", + "Adam", + "Nicolas", + "Julien", + "Mael", + "Pierre", + "Rayan", + "Victor", + "Mohamed", + "Adrien", + "Kylian", + "Sacha", + "Benjamin", + "Léa", + "Clara", + "Manon", + "Chloé", + "Camille", + "Ines", + "Sarah", + "Jade", + "Lola", + "Anaïs", + "Lucie", + "Océane", + "Lilou", + "Marie", + "Eva", + "Romane", + "Lisa", + "Zoe", + "Julie", + "Mathilde", + "Louise", + "Juliette", + "Clémence", + "Célia", + "Laura", + "Lena", + "Maëlys", + "Charlotte", + "Ambre", + "Maeva", + "Pauline", + "Lina", + "Jeanne", + "Lou", + "Noémie", + "Justine", + "Louna", + "Elisa", + "Alice", + "Emilie", + "Carla", + "Maëlle", + "Alicia", + "Mélissa" +]; + +},{}],548:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.title = require("./title"); +name.name = require("./name"); + +},{"./first_name":547,"./last_name":549,"./name":550,"./prefix":551,"./title":552}],549:[function(require,module,exports){ +module["exports"] = [ + "Martin", + "Bernard", + "Dubois", + "Thomas", + "Robert", + "Richard", + "Petit", + "Durand", + "Leroy", + "Moreau", + "Simon", + "Laurent", + "Lefebvre", + "Michel", + "Garcia", + "David", + "Bertrand", + "Roux", + "Vincent", + "Fournier", + "Morel", + "Girard", + "Andre", + "Lefevre", + "Mercier", + "Dupont", + "Lambert", + "Bonnet", + "Francois", + "Martinez", + "Legrand", + "Garnier", + "Faure", + "Rousseau", + "Blanc", + "Guerin", + "Muller", + "Henry", + "Roussel", + "Nicolas", + "Perrin", + "Morin", + "Mathieu", + "Clement", + "Gauthier", + "Dumont", + "Lopez", + "Fontaine", + "Chevalier", + "Robin", + "Masson", + "Sanchez", + "Gerard", + "Nguyen", + "Boyer", + "Denis", + "Lemaire", + "Duval", + "Joly", + "Gautier", + "Roger", + "Roche", + "Roy", + "Noel", + "Meyer", + "Lucas", + "Meunier", + "Jean", + "Perez", + "Marchand", + "Dufour", + "Blanchard", + "Marie", + "Barbier", + "Brun", + "Dumas", + "Brunet", + "Schmitt", + "Leroux", + "Colin", + "Fernandez", + "Pierre", + "Renard", + "Arnaud", + "Rolland", + "Caron", + "Aubert", + "Giraud", + "Leclerc", + "Vidal", + "Bourgeois", + "Renaud", + "Lemoine", + "Picard", + "Gaillard", + "Philippe", + "Leclercq", + "Lacroix", + "Fabre", + "Dupuis", + "Olivier", + "Rodriguez", + "Da silva", + "Hubert", + "Louis", + "Charles", + "Guillot", + "Riviere", + "Le gall", + "Guillaume", + "Adam", + "Rey", + "Moulin", + "Gonzalez", + "Berger", + "Lecomte", + "Menard", + "Fleury", + "Deschamps", + "Carpentier", + "Julien", + "Benoit", + "Paris", + "Maillard", + "Marchal", + "Aubry", + "Vasseur", + "Le roux", + "Renault", + "Jacquet", + "Collet", + "Prevost", + "Poirier", + "Charpentier", + "Royer", + "Huet", + "Baron", + "Dupuy", + "Pons", + "Paul", + "Laine", + "Carre", + "Breton", + "Remy", + "Schneider", + "Perrot", + "Guyot", + "Barre", + "Marty", + "Cousin" +]; + +},{}],550:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{last_name} #{first_name}" +]; + +},{}],551:[function(require,module,exports){ +module["exports"] = [ + "M", + "Mme", + "Mlle", + "Dr", + "Prof" +]; + +},{}],552:[function(require,module,exports){ +module["exports"] = { + "job": [ + "Superviseur", + "Executif", + "Manager", + "Ingenieur", + "Specialiste", + "Directeur", + "Coordinateur", + "Administrateur", + "Architecte", + "Analyste", + "Designer", + "Technicien", + "Developpeur", + "Producteur", + "Consultant", + "Assistant", + "Agent", + "Stagiaire" + ] +}; + +},{}],553:[function(require,module,exports){ +module["exports"] = [ + "01########", + "02########", + "03########", + "04########", + "05########", + "06########", + "07########", + "+33 1########", + "+33 2########", + "+33 3########", + "+33 4########", + "+33 5########", + "+33 6########", + "+33 7########" +]; + +},{}],554:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":553,"dup":108}],555:[function(require,module,exports){ +arguments[4][347][0].apply(exports,arguments) +},{"dup":347}],556:[function(require,module,exports){ +arguments[4][381][0].apply(exports,arguments) +},{"./default_country":555,"./postcode":557,"./state":558,"./state_abbr":559,"dup":381}],557:[function(require,module,exports){ +arguments[4][349][0].apply(exports,arguments) +},{"dup":349}],558:[function(require,module,exports){ +module["exports"] = [ + "Alberta", + "Colombie-Britannique", + "Manitoba", + "Nouveau-Brunswick", + "Terre-Neuve-et-Labrador", + "Nouvelle-Écosse", + "Territoires du Nord-Ouest", + "Nunavut", + "Ontario", + "Île-du-Prince-Édouard", + "Québec", + "Saskatchewan", + "Yukon" +]; + +},{}],559:[function(require,module,exports){ +module["exports"] = [ + "AB", + "BC", + "MB", + "NB", + "NL", + "NS", + "NU", + "NT", + "ON", + "PE", + "QC", + "SK", + "YK" +]; + +},{}],560:[function(require,module,exports){ +var fr_CA = {}; +module['exports'] = fr_CA; +fr_CA.title = "Canada (French)"; +fr_CA.address = require("./address"); +fr_CA.internet = require("./internet"); +fr_CA.phone_number = require("./phone_number"); + +},{"./address":556,"./internet":563,"./phone_number":565}],561:[function(require,module,exports){ +module["exports"] = [ + "qc.ca", + "ca", + "com", + "biz", + "info", + "name", + "net", + "org" +]; + +},{}],562:[function(require,module,exports){ +arguments[4][354][0].apply(exports,arguments) +},{"dup":354}],563:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":561,"./free_email":562,"dup":98}],564:[function(require,module,exports){ +module["exports"] = [ + "### ###-####", + "1 ### ###-####", + "### ###-####, poste ###" +]; + +},{}],565:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":564,"dup":108}],566:[function(require,module,exports){ +module["exports"] = [ + "###", + "##", + "#" +]; + +},{}],567:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix} #{Name.first_name}#{city_suffix}", + "#{city_prefix} #{Name.first_name}", + "#{Name.first_name}#{city_suffix}", + "#{Name.first_name}#{city_suffix}", + "#{Name.last_name}#{city_suffix}", + "#{Name.last_name}#{city_suffix}" +]; + +},{}],568:[function(require,module,exports){ +module["exports"] = [ + "აბასთუმანი", + "აბაშა", + "ადიგენი", + "ამბროლაური", + "ანაკლია", + "ასპინძა", + "ახალგორი", + "ახალქალაქი", + "ახალციხე", + "ახმეტა", + "ბათუმი", + "ბაკურიანი", + "ბაღდათი", + "ბახმარო", + "ბოლნისი", + "ბორჯომი", + "გარდაბანი", + "გონიო", + "გორი", + "გრიგოლეთი", + "გუდაური", + "გურჯაანი", + "დედოფლისწყარო", + "დმანისი", + "დუშეთი", + "ვანი", + "ზესტაფონი", + "ზუგდიდი", + "თბილისი", + "თეთრიწყარო", + "თელავი", + "თერჯოლა", + "თიანეთი", + "კასპი", + "კვარიათი", + "კიკეთი", + "კოჯორი", + "ლაგოდეხი", + "ლანჩხუთი", + "ლენტეხი", + "მარნეული", + "მარტვილი", + "მესტია", + "მცხეთა", + "მწვანე კონცხი", + "ნინოწმინდა", + "ოზურგეთი", + "ონი", + "რუსთავი", + "საგარეჯო", + "საგურამო", + "საირმე", + "სამტრედია", + "სარფი", + "საჩხერე", + "სენაკი", + "სიღნაღი", + "სტეფანწმინდა", + "სურამი", + "ტაბახმელა", + "ტყიბული", + "ურეკი", + "ფოთი", + "ქარელი", + "ქედა", + "ქობულეთი", + "ქუთაისი", + "ყვარელი", + "შუახევი", + "ჩაქვი", + "ჩოხატაური", + "ცაგერი", + "ცხოროჭყუ", + "წავკისი", + "წალენჯიხა", + "წალკა", + "წაღვერი", + "წეროვანი", + "წნორი", + "წყალტუბო", + "წყნეთი", + "ჭიათურა", + "ხარაგაული", + "ხაშური", + "ხელვაჩაური", + "ხობი", + "ხონი", + "ხულო" +]; + +},{}],569:[function(require,module,exports){ +module["exports"] = [ + "ახალი", + "ძველი", + "ზემო", + "ქვემო" +]; + +},{}],570:[function(require,module,exports){ +module["exports"] = [ + "სოფელი", + "ძირი", + "სკარი", + "დაბა" +]; + +},{}],571:[function(require,module,exports){ +module["exports"] = [ + "ავსტრალია", + "ავსტრია", + "ავღანეთი", + "აზავადი", + "აზერბაიჯანი", + "აზიაში", + "აზიის", + "ალბანეთი", + "ალჟირი", + "ამაღლება და ტრისტანი-და-კუნია", + "ამერიკის ვირჯინიის კუნძულები", + "ამერიკის სამოა", + "ამერიკის შეერთებული შტატები", + "ამერიკის", + "ანგილია", + "ანგოლა", + "ანდორა", + "ანტიგუა და ბარბუდა", + "არაბეთის საემიროები", + "არაბთა გაერთიანებული საამიროები", + "არაბული ქვეყნების ლიგის", + "არგენტინა", + "არუბა", + "არცნობილი ქვეყნების სია", + "აფრიკაში", + "აფრიკაშია", + "აღდგომის კუნძული", + "აღმ. ტიმორი", + "აღმოსავლეთი აფრიკა", + "აღმოსავლეთი ტიმორი", + "აშშ", + "აშშ-ის ვირჯინის კუნძულები", + "ახალი ზელანდია", + "ახალი კალედონია", + "ბანგლადეში", + "ბარბადოსი", + "ბაჰამის კუნძულები", + "ბაჰრეინი", + "ბელარუსი", + "ბელგია", + "ბელიზი", + "ბენინი", + "ბერმუდა", + "ბერმუდის კუნძულები", + "ბოლივია", + "ბოსნია და ჰერცეგოვინა", + "ბოტსვანა", + "ბრაზილია", + "ბრიტანეთის ვირჯინიის კუნძულები", + "ბრიტანეთის ვირჯინის კუნძულები", + "ბრიტანეთის ინდოეთის ოკეანის ტერიტორია", + "ბრუნეი", + "ბულგარეთი", + "ბურკინა ფასო", + "ბურკინა-ფასო", + "ბურუნდი", + "ბჰუტანი", + "გაბონი", + "გაერთიანებული სამეფო", + "გაეროს", + "გაიანა", + "გამბია", + "განა", + "გერმანია", + "გვადელუპა", + "გვატემალა", + "გვინეა", + "გვინეა-ბისაუ", + "გიბრალტარი", + "გრენადა", + "გრენლანდია", + "გუამი", + "დამოკიდებული ტერ.", + "დამოკიდებული ტერიტორია", + "დამოკიდებული", + "დანია", + "დასავლეთი აფრიკა", + "დასავლეთი საჰარა", + "დიდი ბრიტანეთი", + "დომინიკა", + "დომინიკელთა რესპუბლიკა", + "ეგვიპტე", + "ევროკავშირის", + "ევროპასთან", + "ევროპაშია", + "ევროპის ქვეყნები", + "ეთიოპია", + "ეკვადორი", + "ეკვატორული გვინეა", + "ეპარსეს კუნძული", + "ერაყი", + "ერიტრეა", + "ესპანეთი", + "ესპანეთის სუვერენული ტერიტორიები", + "ესტონეთი", + "ეშმორის და კარტიეს კუნძულები", + "ვანუატუ", + "ვატიკანი", + "ვენესუელა", + "ვიეტნამი", + "ზამბია", + "ზიმბაბვე", + "თურქეთი", + "თურქმენეთი", + "იამაიკა", + "იან მაიენი", + "იაპონია", + "იემენი", + "ინდოეთი", + "ინდონეზია", + "იორდანია", + "ირანი", + "ირლანდია", + "ისლანდია", + "ისრაელი", + "იტალია", + "კაბო-ვერდე", + "კაიმანის კუნძულები", + "კამბოჯა", + "კამერუნი", + "კანადა", + "კანარის კუნძულები", + "კარიბის ზღვის", + "კატარი", + "კენია", + "კვიპროსი", + "კინგმენის რიფი", + "კირიბატი", + "კლიპერტონი", + "კოლუმბია", + "კომორი", + "კომორის კუნძულები", + "კონგოს დემოკრატიული რესპუბლიკა", + "კონგოს რესპუბლიკა", + "კორეის რესპუბლიკა", + "კოსტა-რიკა", + "კოტ-დ’ივუარი", + "კუბა", + "კუკის კუნძულები", + "ლაოსი", + "ლატვია", + "ლესოთო", + "ლიბანი", + "ლიბერია", + "ლიბია", + "ლიტვა", + "ლიხტენშტაინი", + "ლუქსემბურგი", + "მადაგასკარი", + "მადეირა", + "მავრიკი", + "მავრიტანია", + "მაიოტა", + "მაკაო", + "მაკედონია", + "მალავი", + "მალაიზია", + "მალდივი", + "მალდივის კუნძულები", + "მალი", + "მალტა", + "მაროკო", + "მარტინიკა", + "მარშალის კუნძულები", + "მარჯნის ზღვის კუნძულები", + "მელილია", + "მექსიკა", + "მიანმარი", + "მიკრონეზია", + "მიკრონეზიის ფედერაციული შტატები", + "მიმდებარე კუნძულები", + "მოზამბიკი", + "მოლდოვა", + "მონაკო", + "მონსერატი", + "მონღოლეთი", + "ნამიბია", + "ნაურუ", + "ნაწილობრივ აფრიკაში", + "ნეპალი", + "ნიგერი", + "ნიგერია", + "ნიდერლანდი", + "ნიდერლანდის ანტილები", + "ნიკარაგუა", + "ნიუე", + "ნორვეგია", + "ნორფოლკის კუნძული", + "ოკეანეთის", + "ოკეანიას", + "ომანი", + "პაკისტანი", + "პალაუ", + "პალესტინა", + "პალმირა (ატოლი)", + "პანამა", + "პანტელერია", + "პაპუა-ახალი გვინეა", + "პარაგვაი", + "პერუ", + "პიტკერნის კუნძულები", + "პოლონეთი", + "პორტუგალია", + "პრინც-ედუარდის კუნძული", + "პუერტო-რიკო", + "რეუნიონი", + "როტუმა", + "რუანდა", + "რუმინეთი", + "რუსეთი", + "საბერძნეთი", + "სადავო ტერიტორიები", + "სალვადორი", + "სამოა", + "სამხ. კორეა", + "სამხრეთ ამერიკაშია", + "სამხრეთ ამერიკის", + "სამხრეთ აფრიკის რესპუბლიკა", + "სამხრეთი აფრიკა", + "სამხრეთი გეორგია და სამხრეთ სენდვიჩის კუნძულები", + "სამხრეთი სუდანი", + "სან-მარინო", + "სან-ტომე და პრინსიპი", + "საუდის არაბეთი", + "საფრანგეთი", + "საფრანგეთის გვიანა", + "საფრანგეთის პოლინეზია", + "საქართველო", + "საჰარის არაბთა დემოკრატიული რესპუბლიკა", + "სეიშელის კუნძულები", + "სენ-ბართელმი", + "სენ-მარტენი", + "სენ-პიერი და მიკელონი", + "სენეგალი", + "სენტ-ვინსენტი და გრენადინები", + "სენტ-კიტსი და ნევისი", + "სენტ-ლუსია", + "სერბეთი", + "სეუტა", + "სვაზილენდი", + "სვალბარდი", + "სიერა-ლეონე", + "სინგაპური", + "სირია", + "სლოვაკეთი", + "სლოვენია", + "სოკოტრა", + "სოლომონის კუნძულები", + "სომალი", + "სომალილენდი", + "სომხეთი", + "სუდანი", + "სუვერენული სახელმწიფოები", + "სურინამი", + "ტაივანი", + "ტაილანდი", + "ტანზანია", + "ტაჯიკეთი", + "ტერიტორიები", + "ტერქსისა და კაიკოსის კუნძულები", + "ტოგო", + "ტოკელაუ", + "ტონგა", + "ტრანსკონტინენტური ქვეყანა", + "ტრინიდადი და ტობაგო", + "ტუვალუ", + "ტუნისი", + "უგანდა", + "უზბეკეთი", + "უკრაინა", + "უნგრეთი", + "უოლისი და ფუტუნა", + "ურუგვაი", + "ფარერის კუნძულები", + "ფილიპინები", + "ფინეთი", + "ფიჯი", + "ფოლკლენდის კუნძულები", + "ქვეყნები", + "ქოქოსის კუნძულები", + "ქუვეითი", + "ღაზის სექტორი", + "ყაზახეთი", + "ყირგიზეთი", + "შვედეთი", + "შვეიცარია", + "შობის კუნძული", + "შრი-ლანკა", + "ჩადი", + "ჩერნოგორია", + "ჩეჩნეთის რესპუბლიკა იჩქერია", + "ჩეხეთი", + "ჩილე", + "ჩინეთი", + "ჩრდ. კორეა", + "ჩრდილოეთ ამერიკის", + "ჩრდილოეთ მარიანას კუნძულები", + "ჩრდილოეთი აფრიკა", + "ჩრდილოეთი კორეა", + "ჩრდილოეთი მარიანას კუნძულები", + "ცენტრალური აფრიკა", + "ცენტრალური აფრიკის რესპუბლიკა", + "წევრები", + "წმინდა ელენე", + "წმინდა ელენეს კუნძული", + "ხორვატია", + "ჯერსი", + "ჯიბუტი", + "ჰავაი", + "ჰაიტი", + "ჰერდი და მაკდონალდის კუნძულები", + "ჰონდურასი", + "ჰონკონგი" +]; + +},{}],572:[function(require,module,exports){ +module["exports"] = [ + "საქართველო" +]; + +},{}],573:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.city = require("./city"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.city_name = require("./city_name"); +address.street_title = require("./street_title"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":566,"./city":567,"./city_name":568,"./city_prefix":569,"./city_suffix":570,"./country":571,"./default_country":572,"./postcode":574,"./secondary_address":575,"./street_address":576,"./street_name":577,"./street_suffix":578,"./street_title":579}],574:[function(require,module,exports){ +module["exports"] = [ + "01##" +]; + +},{}],575:[function(require,module,exports){ +module["exports"] = [ + "კორპ. ##", + "შენობა ###" +]; + +},{}],576:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],577:[function(require,module,exports){ +module["exports"] = [ + "#{street_title} #{street_suffix}" +]; + +},{}],578:[function(require,module,exports){ +module["exports"] = [ + "გამზ.", + "გამზირი", + "ქ.", + "ქუჩა", + "ჩიხი", + "ხეივანი" +]; + +},{}],579:[function(require,module,exports){ +module["exports"] = [ + "აბაშიძის", + "აბესაძის", + "აბულაძის", + "აგლაძის", + "ადლერის", + "ავიაქიმიის", + "ავლაბრის", + "ათარბეგოვის", + "ათონელის", + "ალავერდოვის", + "ალექსიძის", + "ალილუევის", + "ალმასიანის", + "ამაღლების", + "ამირეჯიბის", + "ანაგის", + "ანდრონიკაშვილის", + "ანთელავას", + "ანჯაფარიძის", + "არაგვის", + "არდონის", + "არეშიძის", + "ასათიანის", + "ასკურავას", + "ასლანიდის", + "ატენის", + "აფხაზი", + "აღმაშენებლის", + "ახალშენის", + "ახვლედიანის", + "ბააზოვის", + "ბაბისხევის", + "ბაბუშკინის", + "ბაგრატიონის", + "ბალანჩივაძეების", + "ბალანჩივაძის", + "ბალანჩინის", + "ბალმაშევის", + "ბარამიძის", + "ბარნოვის", + "ბაშალეიშვილის", + "ბევრეთის", + "ბელინსკის", + "ბელოსტოკის", + "ბენაშვილის", + "ბეჟანიშვილის", + "ბერიძის", + "ბოლქვაძის", + "ბოცვაძის", + "ბოჭორიშვილის", + "ბოჭორიძის", + "ბუაჩიძის", + "ბუდაპეშტის", + "ბურკიაშვილის", + "ბურძგლას", + "გაბესკირიას", + "გაგარინის", + "გაზაფხულის", + "გამრეკელის", + "გამსახურდიას", + "გარეჯელის", + "გეგეჭკორის", + "გედაურის", + "გელოვანი", + "გელოვანის", + "გერცენის", + "გლდანის", + "გოგებაშვილის", + "გოგიბერიძის", + "გოგოლის", + "გონაშვილის", + "გორგასლის", + "გრანელის", + "გრიზოდუბოვას", + "გრინევიცკის", + "გრომოვას", + "გრუზინსკის", + "გუდიაშვილის", + "გულრიფშის", + "გულუას", + "გურამიშვილის", + "გურგენიძის", + "დადიანის", + "დავითაშვილის", + "დამაკავშირებელი", + "დარიალის", + "დედოფლისწყაროს", + "დეპუტატის", + "დიდგორის", + "დიდი", + "დიდუბის", + "დიუმას", + "დიღმის", + "დიღომში", + "დოლიძის", + "დუნდუას", + "დურმიშიძის", + "ელიავას", + "ენგელსის", + "ენგურის", + "ეპისკოპოსის", + "ერისთავი", + "ერისთავის", + "ვაზისუბნის", + "ვაკელის", + "ვართაგავას", + "ვატუტინის", + "ვაჩნაძის", + "ვაცეკის", + "ვეკუას", + "ვეშაპურის", + "ვირსალაძის", + "ვოლოდარსკის", + "ვორონინის", + "ზაარბრიუკენის", + "ზაზიაშვილის", + "ზაზიშვილის", + "ზაკომოლდინის", + "ზანდუკელის", + "ზაქარაიას", + "ზაქარიაძის", + "ზახაროვის", + "ზაჰესის", + "ზნაურის", + "ზურაბაშვილის", + "ზღვის", + "თაბუკაშვილის", + "თავაძის", + "თავისუფლების", + "თამარაშვილის", + "თაქთაქიშვილის", + "თბილელის", + "თელიას", + "თორაძის", + "თოფურიძის", + "იალბუზის", + "იამანიძის", + "იაშვილის", + "იბერიის", + "იერუსალიმის", + "ივანიძის", + "ივერიელის", + "იზაშვილის", + "ილურიძის", + "იმედაშვილის", + "იმედაძის", + "იმედის", + "ინანიშვილის", + "ინგოროყვას", + "ინდუსტრიალიზაციის", + "ინჟინრის", + "ინწკირველის", + "ირბახის", + "ირემაშვილის", + "ისაკაძის", + "ისპასჰანლის", + "იტალიის", + "იუნკერთა", + "კათალიკოსის", + "კაიროს", + "კაკაბაძის", + "კაკაბეთის", + "კაკლიანის", + "კალანდაძის", + "კალიაევის", + "კალინინის", + "კამალოვის", + "კამოს", + "კაშენის", + "კახოვკის", + "კედიას", + "კელაპტრიშვილის", + "კერესელიძის", + "კეცხოველის", + "კიბალჩიჩის", + "კიკნაძის", + "კიროვის", + "კობარეთის", + "კოლექტივიზაციის", + "კოლმეურნეობის", + "კოლხეთის", + "კომკავშირის", + "კომუნისტური", + "კონსტიტუციის", + "კოოპერაციის", + "კოსტავას", + "კოტეტიშვილის", + "კოჩეტკოვის", + "კოჯრის", + "კრონშტადტის", + "კროპოტკინის", + "კრუპსკაიას", + "კუიბიშევის", + "კურნატოვსკის", + "კურტანოვსკის", + "კუტუზოვის", + "ლაღიძის", + "ლელაშვილის", + "ლენინაშენის", + "ლენინგრადის", + "ლენინის", + "ლენის", + "ლეონიძის", + "ლვოვის", + "ლორთქიფანიძის", + "ლოტკინის", + "ლუბლიანის", + "ლუბოვსკის", + "ლუნაჩარსკის", + "ლუქსემბურგის", + "მაგნიტოგორსკის", + "მაზნიაშვილის", + "მაისურაძის", + "მამარდაშვილის", + "მამაცაშვილის", + "მანაგაძის", + "მანჯგალაძის", + "მარის", + "მარუაშვილის", + "მარქსის", + "მარჯანის", + "მატროსოვის", + "მაჭავარიანი", + "მახალდიანის", + "მახარაძის", + "მებაღიშვილის", + "მეგობრობის", + "მელაანის", + "მერკვილაძის", + "მესხიას", + "მესხის", + "მეტეხის", + "მეტრეველი", + "მეჩნიკოვის", + "მთავარანგელოზის", + "მიასნიკოვის", + "მილორავას", + "მიმინოშვილის", + "მიროტაძის", + "მიქატაძის", + "მიქელაძის", + "მონტინის", + "მორეტის", + "მოსკოვის", + "მრევლიშვილის", + "მუშკორის", + "მუჯირიშვილის", + "მშვიდობის", + "მცხეთის", + "ნადირაძის", + "ნაკაშიძის", + "ნარიმანოვის", + "ნასიძის", + "ნაფარეულის", + "ნეკრასოვის", + "ნიაღვრის", + "ნინიძის", + "ნიშნიანიძის", + "ობოლაძის", + "ონიანის", + "ოჟიოს", + "ორახელაშვილის", + "ორბელიანის", + "ორჯონიკიძის", + "ოქტომბრის", + "ოცდაექვსი", + "პავლოვის", + "პარალელურის", + "პარიზის", + "პეკინის", + "პეროვსკაიას", + "პეტეფის", + "პიონერის", + "პირველი", + "პისარევის", + "პლეხანოვის", + "პრავდის", + "პროლეტარიატის", + "ჟელიაბოვის", + "ჟვანიას", + "ჟორდანიას", + "ჟღენტი", + "ჟღენტის", + "რადიანის", + "რამიშვილი", + "რასკოვას", + "რენინგერის", + "რინგის", + "რიჟინაშვილის", + "რობაქიძის", + "რობესპიერის", + "რუსის", + "რუხაძის", + "რჩეულიშვილის", + "სააკაძის", + "საბადურის", + "საბაშვილის", + "საბურთალოს", + "საბჭოს", + "საგურამოს", + "სამრეკლოს", + "სამღერეთის", + "სანაკოევის", + "სარაჯიშვილის", + "საჯაიას", + "სევასტოპოლის", + "სერგი", + "სვანიძის", + "სვერდლოვის", + "სტახანოვის", + "სულთნიშნის", + "სურგულაძის", + "სხირტლაძის", + "ტაბიძის", + "ტატიშვილის", + "ტელმანის", + "ტერევერკოს", + "ტეტელაშვილის", + "ტოვსტონოგოვის", + "ტოროშელიძის", + "ტრაქტორის", + "ტრიკოტაჟის", + "ტურბინის", + "უბილავას", + "უბინაშვილის", + "უზნაძის", + "უკლებას", + "ულიანოვის", + "ურიდიას", + "ფაბრიციუსის", + "ფაღავას", + "ფერისცვალების", + "ფიგნერის", + "ფიზკულტურის", + "ფიოლეტოვის", + "ფიფიების", + "ფოცხიშვილის", + "ქართველიშვილის", + "ქართლელიშვილის", + "ქინქლაძის", + "ქიქოძის", + "ქსოვრელის", + "ქუთათელაძის", + "ქუთათელის", + "ქურდიანის", + "ღოღობერიძის", + "ღუდუშაურის", + "ყავლაშვილის", + "ყაზბეგის", + "ყარყარაშვილის", + "ყიფიანის", + "ყუშიტაშვილის", + "შანიძის", + "შარტავას", + "შატილოვის", + "შაუმიანის", + "შენგელაიას", + "შერვაშიძის", + "შეროზიას", + "შირშოვის", + "შმიდტის", + "შრომის", + "შუშინის", + "შჩორსის", + "ჩალაუბნის", + "ჩანტლაძის", + "ჩაპაევის", + "ჩაჩავას", + "ჩელუსკინელების", + "ჩერნიახოვსკის", + "ჩერქეზიშვილი", + "ჩერქეზიშვილის", + "ჩვიდმეტი", + "ჩიტაიას", + "ჩიტაძის", + "ჩიქვანაიას", + "ჩიქობავას", + "ჩიხლაძის", + "ჩოდრიშვილის", + "ჩოლოყაშვილის", + "ჩუღურეთის", + "ცაბაძის", + "ცაგარელის", + "ცეტკინის", + "ცინცაძის", + "ცისკარიშვილის", + "ცურტაველის", + "ცქიტიშვილის", + "ცხაკაიას", + "ძმობის", + "ძნელაძის", + "წერეთლის", + "წითელი", + "წითელწყაროს", + "წინამძღვრიშვილის", + "წულაძის", + "წულუკიძის", + "ჭაბუკიანის", + "ჭავჭავაძის", + "ჭანტურიას", + "ჭოველიძის", + "ჭონქაძის", + "ჭყონდიდელის", + "ხანძთელის", + "ხვამლის", + "ხვინგიას", + "ხვიჩიას", + "ხიმშიაშვილის", + "ხმელნიცკის", + "ხორნაბუჯის", + "ხრამჰესის", + "ხუციშვილის", + "ჯავახიშვილის", + "ჯაფარიძის", + "ჯიბლაძის", + "ჯორჯიაშვილის" +]; + +},{}],580:[function(require,module,exports){ +module["exports"] = [ + "(+995 32) 2-##-##-##", + "032-2-##-##-##", + "032-2-######", + "032-2-###-###", + "032 2 ## ## ##", + "032 2 ######", + "2 ## ## ##", + "2######", + "2 ### ###" +]; + +},{}],581:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":580,"dup":167}],582:[function(require,module,exports){ +arguments[4][88][0].apply(exports,arguments) +},{"./name":583,"./prefix":584,"./suffix":585,"dup":88}],583:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{Name.first_name}", + "#{prefix} #{Name.last_name}", + "#{prefix} #{Name.last_name} #{suffix}", + "#{prefix} #{Name.first_name} #{suffix}", + "#{prefix} #{Name.last_name}-#{Name.last_name}" +]; + +},{}],584:[function(require,module,exports){ +module["exports"] = [ + "შპს", + "სს", + "ააიპ", + "სსიპ" +]; + +},{}],585:[function(require,module,exports){ +module["exports"] = [ + "ჯგუფი", + "და კომპანია", + "სტუდია", + "გრუპი" +]; + +},{}],586:[function(require,module,exports){ +var ge = {}; +module['exports'] = ge; +ge.title = "Georgian"; +ge.separator = " და "; +ge.name = require("./name"); +ge.address = require("./address"); +ge.internet = require("./internet"); +ge.company = require("./company"); +ge.phone_number = require("./phone_number"); +ge.cell_phone = require("./cell_phone"); + +},{"./address":573,"./cell_phone":581,"./company":582,"./internet":589,"./name":591,"./phone_number":597}],587:[function(require,module,exports){ +module["exports"] = [ + "ge", + "com", + "net", + "org", + "com.ge", + "org.ge" +]; + +},{}],588:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.com", + "posta.ge" +]; + +},{}],589:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":587,"./free_email":588,"dup":98}],590:[function(require,module,exports){ +module["exports"] = [ + "აგული", + "აგუნა", + "ადოლა", + "ავთანდილ", + "ავთო", + "აკაკი", + "აკო", + "ალეკო", + "ალექსანდრე", + "ალექსი", + "ალიო", + "ამირან", + "ანა", + "ანანო", + "ანზორ", + "ანნა", + "ანუკა", + "ანუკი", + "არჩილ", + "ასკილა", + "ასლანაზ", + "აჩიკო", + "ბადრი", + "ბაია", + "ბარბარე", + "ბაქარ", + "ბაჩა", + "ბაჩანა", + "ბაჭუა", + "ბაჭუკი", + "ბახვა", + "ბელა", + "ბერა", + "ბერდია", + "ბესიკ", + "ბესიკ", + "ბესო", + "ბექა", + "ბიძინა", + "ბიჭიკო", + "ბოჩია", + "ბოცო", + "ბროლა", + "ბუბუ", + "ბუდუ", + "ბუხუტი", + "გაგა", + "გაგი", + "გახა", + "გეგა", + "გეგი", + "გედია", + "გელა", + "გენადი", + "გვადი", + "გვანცა", + "გვანჯი", + "გვიტია", + "გვრიტა", + "გია", + "გიგა", + "გიგი", + "გიგილო", + "გიგლა", + "გიგოლი", + "გივი", + "გივიკო", + "გიორგი", + "გოგი", + "გოგიტა", + "გოგიჩა", + "გოგოთურ", + "გოგოლა", + "გოდერძი", + "გოლა", + "გოჩა", + "გრიგოლ", + "გუგა", + "გუგუ", + "გუგულა", + "გუგული", + "გუგუნა", + "გუკა", + "გულარისა", + "გულვარდი", + "გულვარდისა", + "გულთამზე", + "გულია", + "გულიკო", + "გულისა", + "გულნარა", + "გურამ", + "დავით", + "დალი", + "დარეჯან", + "დიანა", + "დიმიტრი", + "დოდო", + "დუტუ", + "ეთერ", + "ეთო", + "ეკა", + "ეკატერინე", + "ელგუჯა", + "ელენა", + "ელენე", + "ელზა", + "ელიკო", + "ელისო", + "ემზარ", + "ეშხა", + "ვალენტინა", + "ვალერი", + "ვანო", + "ვაჟა", + "ვაჟა", + "ვარდო", + "ვარსკვლავისა", + "ვასიკო", + "ვასილ", + "ვატო", + "ვახო", + "ვახტანგ", + "ვენერა", + "ვერა", + "ვერიკო", + "ზაზა", + "ზაირა", + "ზაურ", + "ზეზვა", + "ზვიად", + "ზინა", + "ზოია", + "ზუკა", + "ზურა", + "ზურაბ", + "ზურია", + "ზურიკო", + "თაზო", + "თათა", + "თათია", + "თათული", + "თაია", + "თაკო", + "თალიკო", + "თამაზ", + "თამარ", + "თამარა", + "თამთა", + "თამთიკე", + "თამი", + "თამილა", + "თამრიკო", + "თამრო", + "თამუნა", + "თამჩო", + "თანანა", + "თანდილა", + "თაყა", + "თეა", + "თებრონე", + "თეიმურაზ", + "თემურ", + "თენგიზ", + "თენგო", + "თეონა", + "თიკა", + "თიკო", + "თიკუნა", + "თინა", + "თინათინ", + "თინიკო", + "თმაგიშერა", + "თორნიკე", + "თუთა", + "თუთია", + "ია", + "იათამზე", + "იამზე", + "ივანე", + "ივერი", + "ივქირიონ", + "იზოლდა", + "ილია", + "ილიკო", + "იმედა", + "ინგა", + "იოსებ", + "ირაკლი", + "ირინა", + "ირინე", + "ირინკა", + "ირმა", + "იური", + "კაკო", + "კალე", + "კატო", + "კახა", + "კახაბერ", + "კეკელა", + "კესანე", + "კესო", + "კვირია", + "კიტა", + "კობა", + "კოკა", + "კონსტანტინე", + "კოსტა", + "კოტე", + "კუკური", + "ლადო", + "ლალი", + "ლამაზა", + "ლამარა", + "ლამზირა", + "ლაშა", + "ლევან", + "ლეილა", + "ლელა", + "ლენა", + "ლერწამისა", + "ლექსო", + "ლია", + "ლიანა", + "ლიზა", + "ლიზიკო", + "ლილე", + "ლილი", + "ლილიკო", + "ლომია", + "ლუიზა", + "მაგული", + "მადონა", + "მათიკო", + "მაია", + "მაიკო", + "მაისა", + "მაკა", + "მაკო", + "მაკუნა", + "მალხაზ", + "მამამზე", + "მამია", + "მამისა", + "მამისთვალი", + "მამისიმედი", + "მამუკა", + "მამულა", + "მანანა", + "მანჩო", + "მარადი", + "მარი", + "მარია", + "მარიამი", + "მარიკა", + "მარინა", + "მარინე", + "მარიტა", + "მაყვალა", + "მაყვალა", + "მაშიკო", + "მაშო", + "მაცაცო", + "მგელია", + "მგელიკა", + "მედეა", + "მეკაშო", + "მელანო", + "მერაბ", + "მერი", + "მეტია", + "მზაღო", + "მზევინარ", + "მზეთამზე", + "მზეთვალა", + "მზეონა", + "მზექალა", + "მზეხა", + "მზეხათუნი", + "მზია", + "მზირა", + "მზისადარ", + "მზისთანადარი", + "მზიულა", + "მთვარისა", + "მინდია", + "მიშა", + "მიშიკო", + "მიხეილ", + "მნათობი", + "მნათობისა", + "მოგელი", + "მონავარდისა", + "მურმან", + "მუხრან", + "ნაზი", + "ნაზიკო", + "ნათელა", + "ნათია", + "ნაირა", + "ნანა", + "ნანი", + "ნანიკო", + "ნანუკა", + "ნანული", + "ნარგიზი", + "ნასყიდა", + "ნატალია", + "ნატო", + "ნელი", + "ნენე", + "ნესტან", + "ნია", + "ნიაკო", + "ნიკა", + "ნიკოლოზ", + "ნინა", + "ნინაკა", + "ნინი", + "ნინიკო", + "ნინო", + "ნინუკა", + "ნინუცა", + "ნოდარ", + "ნოდო", + "ნონა", + "ნორა", + "ნუგზარ", + "ნუგო", + "ნუკა", + "ნუკი", + "ნუკრი", + "ნუნუ", + "ნუნუ", + "ნუნუკა", + "ნუცა", + "ნუცი", + "ოთარ", + "ოთია", + "ოთო", + "ომარ", + "ორბელ", + "ოტია", + "ოქროპირ", + "პაატა", + "პაპუნა", + "პატარკაცი", + "პატარქალი", + "პეპელა", + "პირვარდისა", + "პირიმზე", + "ჟამიერა", + "ჟამიტა", + "ჟამუტა", + "ჟუჟუნა", + "რამაზ", + "რევაზ", + "რეზი", + "რეზო", + "როზა", + "რომან", + "რუსკა", + "რუსუდან", + "საბა", + "სალი", + "სალომე", + "სანათა", + "სანდრო", + "სერგო", + "სესია", + "სეხნია", + "სვეტლანა", + "სიხარულა", + "სოსო", + "სოფიკო", + "სოფიო", + "სოფო", + "სულა", + "სულიკო", + "ტარიელ", + "ტასიკო", + "ტასო", + "ტატიანა", + "ტატო", + "ტეტია", + "ტურია", + "უმანკო", + "უტა", + "უჩა", + "ფაქიზო", + "ფაცია", + "ფეფელა", + "ფეფენა", + "ფეფიკო", + "ფეფო", + "ფოსო", + "ფოფო", + "ქაბატო", + "ქავთარი", + "ქალია", + "ქართლოს", + "ქეთათო", + "ქეთევან", + "ქეთი", + "ქეთინო", + "ქეთო", + "ქველი", + "ქიტესა", + "ქიშვარდი", + "ქობული", + "ქრისტესია", + "ქტისტეფორე", + "ქურციკა", + "ღარიბა", + "ღვთისავარი", + "ღვთისია", + "ღვთისო", + "ღვინია", + "ღუღუნა", + "ყაითამზა", + "ყაყიტა", + "ყვარყვარე", + "ყიასა", + "შაბური", + "შაკო", + "შალვა", + "შალიკო", + "შანშე", + "შარია", + "შაქარა", + "შაქრო", + "შოთა", + "შორენა", + "შოშია", + "შუქია", + "ჩიორა", + "ჩიტო", + "ჩიტო", + "ჩოყოლა", + "ცაგო", + "ცაგული", + "ცანგალა", + "ცარო", + "ცაცა", + "ცაცო", + "ციალა", + "ციკო", + "ცინარა", + "ცირა", + "ცისანა", + "ცისია", + "ცისკარა", + "ცისკარი", + "ცისმარა", + "ცისმარი", + "ციური", + "ციცი", + "ციცია", + "ციცინო", + "ცოტნე", + "ცოქალა", + "ცუცა", + "ცხვარი", + "ძაბული", + "ძამისა", + "ძაღინა", + "ძიძია", + "წათე", + "წყალობა", + "ჭაბუკა", + "ჭიაბერ", + "ჭიკჭიკა", + "ჭიჭია", + "ჭიჭიკო", + "ჭოლა", + "ხათუნა", + "ხარება", + "ხატია", + "ხახულა", + "ხახუტა", + "ხეჩუა", + "ხვიჩა", + "ხიზანა", + "ხირხელა", + "ხობელასი", + "ხოხია", + "ხოხიტა", + "ხუტა", + "ხუცია", + "ჯაბა", + "ჯავახი", + "ჯარჯი", + "ჯემალ", + "ჯონდო", + "ჯოტო", + "ჯუბი", + "ჯულიეტა", + "ჯუმბერ", + "ჰამლეტ" +]; + +},{}],591:[function(require,module,exports){ +arguments[4][548][0].apply(exports,arguments) +},{"./first_name":590,"./last_name":592,"./name":593,"./prefix":594,"./title":595,"dup":548}],592:[function(require,module,exports){ +module["exports"] = [ + "აბაზაძე", + "აბაშიძე", + "აბრამაშვილი", + "აბუსერიძე", + "აბშილავა", + "ავაზნელი", + "ავალიშვილი", + "ამილახვარი", + "ანთაძე", + "ასლამაზიშვილი", + "ასპანიძე", + "აშკარელი", + "ახალბედაშვილი", + "ახალკაცი", + "ახვლედიანი", + "ბარათაშვილი", + "ბარდაველიძე", + "ბახტაძე", + "ბედიანიძე", + "ბერიძე", + "ბერუაშვილი", + "ბეჟანიშვილი", + "ბოგველიშვილი", + "ბოტკოველი", + "გაბრიჩიძე", + "გაგნიძე", + "გამრეკელი", + "გელაშვილი", + "გზირიშვილი", + "გიგაური", + "გურამიშვილი", + "გურგენიძე", + "დადიანი", + "დავითიშვილი", + "დათუაშვილი", + "დარბაისელი", + "დეკანოიძე", + "დვალი", + "დოლაბერიძე", + "ედიშერაშვილი", + "ელიზბარაშვილი", + "ელიოზაშვილი", + "ერისთავი", + "ვარამაშვილი", + "ვარდიაშვილი", + "ვაჩნაძე", + "ვარდანიძე", + "ველიაშვილი", + "ველიჯანაშვილი", + "ზარანდია", + "ზარიძე", + "ზედგინიძე", + "ზუბიაშვილი", + "თაბაგარი", + "თავდგირიძე", + "თათარაშვილი", + "თამაზაშვილი", + "თამარაშვილი", + "თაქთაქიშვილი", + "თაყაიშვილი", + "თბილელი", + "თუხარელი", + "იაშვილი", + "იგითხანიშვილი", + "ინასარიძე", + "იშხნელი", + "კანდელაკი", + "კაცია", + "კერესელიძე", + "კვირიკაშვილი", + "კიკნაძე", + "კლდიაშვილი", + "კოვზაძე", + "კოპაძე", + "კოპტონაშვილი", + "კოშკელაშვილი", + "ლაბაძე", + "ლეკიშვილი", + "ლიქოკელი", + "ლოლაძე", + "ლურსმანაშვილი", + "მაისურაძე", + "მარტოლეკი", + "მაღალაძე", + "მახარაშვილი", + "მგალობლიშვილი", + "მეგრელიშვილი", + "მელაშვილი", + "მელიქიძე", + "მერაბიშვილი", + "მეფარიშვილი", + "მუჯირი", + "მჭედლიძე", + "მხეიძე", + "ნათაძე", + "ნაჭყებია", + "ნოზაძე", + "ოდიშვილი", + "ონოფრიშვილი", + "პარეხელაშვილი", + "პეტრიაშვილი", + "სააკაძე", + "სააკაშვილი", + "საგინაშვილი", + "სადუნიშვილი", + "საძაგლიშვილი", + "სებისკვერიძე", + "სეთური", + "სუთიაშვილი", + "სულაშვილი", + "ტაბაღუა", + "ტყეშელაშვილი", + "ულუმბელაშვილი", + "უნდილაძე", + "ქავთარაძე", + "ქართველიშვილი", + "ყაზბეგი", + "ყაუხჩიშვილი", + "შავლაშვილი", + "შალიკაშვილი", + "შონია", + "ჩიბუხაშვილი", + "ჩიხრაძე", + "ჩიქოვანი", + "ჩუბინიძე", + "ჩოლოყაშვილი", + "ჩოხელი", + "ჩხვიმიანი", + "ცალუღელაშვილი", + "ცაძიკიძე", + "ციციშვილი", + "ციხელაშვილი", + "ციხისთავი", + "ცხოვრებაძე", + "ცხომარია", + "წამალაიძე", + "წერეთელი", + "წიკლაური", + "წიფურია", + "ჭაბუკაშვილი", + "ჭავჭავაძე", + "ჭანტურია", + "ჭარელიძე", + "ჭიორელი", + "ჭუმბურიძე", + "ხაბაზი", + "ხარაძე", + "ხარატიშვილი", + "ხარატასშვილი", + "ხარისჭირაშვილი", + "ხარხელაური", + "ხაშმელაშვილი", + "ხეთაგური", + "ხიზამბარელი", + "ხიზანიშვილი", + "ხიმშიაშვილი", + "ხოსრუაშვილი", + "ხოჯივანიშვილი", + "ხუციშვილი", + "ჯაბადარი", + "ჯავახი", + "ჯავახიშვილი", + "ჯანელიძე", + "ჯაფარიძე", + "ჯაყელი", + "ჯაჯანიძე", + "ჯვარელია", + "ჯინიუზაშვილი", + "ჯუღაშვილი" +]; + +},{}],593:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}" +]; + +},{}],594:[function(require,module,exports){ +module["exports"] = [ + "ბ-ნი", + "ბატონი", + "ქ-ნი", + "ქალბატონი" +]; + +},{}],595:[function(require,module,exports){ +module["exports"] = { + "descriptor": [ + "გენერალური", + "მთავარი", + "სტაჟიორ", + "უმცროსი", + "ყოფილი", + "წამყვანი" + ], + "level": [ + "აღრიცხვების", + "ბრენდინგის", + "ბრენიდს", + "ბუღალტერიის", + "განყოფილების", + "გაყიდვების", + "გუნდის", + "დახმარების", + "დიზაინის", + "თავდაცვის", + "ინფორმაციის", + "კვლევების", + "კომუნიკაციების", + "მარკეტინგის", + "ოპერაციათა", + "ოპტიმიზაციების", + "პიარ", + "პროგრამის", + "საქმეთა", + "ტაქტიკური", + "უსაფრთხოების", + "ფინანსთა", + "ქსელის", + "ხარისხის", + "ჯგუფის" + ], + "job": [ + "აგენტი", + "ადვოკატი", + "ადმინისტრატორი", + "არქიტექტორი", + "ასისტენტი", + "აღმასრულებელი დირექტორი", + "დეველოპერი", + "დეკანი", + "დიზაინერი", + "დირექტორი", + "ელექტრიკოსი", + "ექსპერტი", + "ინჟინერი", + "იურისტი", + "კონსტრუქტორი", + "კონსულტანტი", + "კოორდინატორი", + "ლექტორი", + "მასაჟისტი", + "მემანქანე", + "მენეჯერი", + "მძღოლი", + "მწვრთნელი", + "ოპერატორი", + "ოფიცერი", + "პედაგოგი", + "პოლიციელი", + "პროგრამისტი", + "პროდიუსერი", + "პრორექტორი", + "ჟურნალისტი", + "რექტორი", + "სპეციალისტი", + "სტრატეგისტი", + "ტექნიკოსი", + "ფოტოგრაფი", + "წარმომადგენელი" + ] +}; + +},{}],596:[function(require,module,exports){ +module["exports"] = [ + "5##-###-###", + "5########", + "5## ## ## ##", + "5## ######", + "5## ### ###", + "995 5##-###-###", + "995 5########", + "995 5## ## ## ##", + "995 5## ######", + "995 5## ### ###", + "+995 5##-###-###", + "+995 5########", + "+995 5## ## ## ##", + "+995 5## ######", + "+995 5## ### ###", + "(+995) 5##-###-###", + "(+995) 5########", + "(+995) 5## ## ## ##", + "(+995) 5## ######", + "(+995) 5## ### ###" +]; + +},{}],597:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":596,"dup":108}],598:[function(require,module,exports){ +module["exports"] = [ + "##", + "#" +]; + +},{}],599:[function(require,module,exports){ +arguments[4][110][0].apply(exports,arguments) +},{"dup":110}],600:[function(require,module,exports){ +module["exports"] = [ + "Airmadidi", + "Ampana", + "Amurang", + "Andolo", + "Banggai", + "Bantaeng", + "Barru", + "Bau-Bau", + "Benteng", + "Bitung", + "Bolaang Uki", + "Boroko", + "Bulukumba", + "Bungku", + "Buol", + "Buranga", + "Donggala", + "Enrekang", + "Gorontalo", + "Jeneponto", + "Kawangkoan", + "Kendari", + "Kolaka", + "Kotamobagu", + "Kota Raha", + "Kwandang", + "Lasusua", + "Luwuk", + "Majene", + "Makale", + "Makassar", + "Malili", + "Mamasa", + "Mamuju", + "Manado", + "Marisa", + "Maros", + "Masamba", + "Melonguane", + "Ondong Siau", + "Palopo", + "Palu", + "Pangkajene", + "Pare-Pare", + "Parigi", + "Pasangkayu", + "Pinrang", + "Polewali", + "Poso", + "Rantepao", + "Ratahan", + "Rumbia", + "Sengkang", + "Sidenreng", + "Sigi Biromaru", + "Sinjai", + "Sunggu Minasa", + "Suwawa", + "Tahuna", + "Takalar", + "Tilamuta", + "Toli Toli", + "Tomohon", + "Tondano", + "Tutuyan", + "Unaaha", + "Wangi Wangi", + "Wanggudu", + "Watampone", + "Watan Soppeng", + "Ambarawa", + "Anyer", + "Bandung", + "Bangil", + "Banjar (Jawa Barat)", + "Banjarnegara", + "Bangkalan", + "Bantul", + "Banyumas", + "Banyuwangi", + "Batang", + "Batu", + "Bekasi", + "Blitar", + "Blora", + "Bogor", + "Bojonegoro", + "Bondowoso", + "Boyolali", + "Bumiayu", + "Brebes", + "Caruban", + "Cianjur", + "Ciamis", + "Cibinong", + "Cikampek", + "Cikarang", + "Cilacap", + "Cilegon", + "Cirebon", + "Demak", + "Depok", + "Garut", + "Gresik", + "Indramayu", + "Jakarta", + "Jember", + "Jepara", + "Jombang", + "Kajen", + "Karanganyar", + "Kebumen", + "Kediri", + "Kendal", + "Kepanjen", + "Klaten", + "Pelabuhan Ratu", + "Kraksaan", + "Kudus", + "Kuningan", + "Lamongan", + "Lumajang", + "Madiun", + "Magelang", + "Magetan", + "Majalengka", + "Malang", + "Mojokerto", + "Mojosari", + "Mungkid", + "Ngamprah", + "Nganjuk", + "Ngawi", + "Pacitan", + "Pamekasan", + "Pandeglang", + "Pare", + "Pati", + "Pasuruan", + "Pekalongan", + "Pemalang", + "Ponorogo", + "Probolinggo", + "Purbalingga", + "Purwakarta", + "Purwodadi", + "Purwokerto", + "Purworejo", + "Rangkasbitung", + "Rembang", + "Salatiga", + "Sampang", + "Semarang", + "Serang", + "Sidayu", + "Sidoarjo", + "Singaparna", + "Situbondo", + "Slawi", + "Sleman", + "Soreang", + "Sragen", + "Subang", + "Sukabumi", + "Sukoharjo", + "Sumber", + "Sumedang", + "Sumenep", + "Surabaya", + "Surakarta", + "Tasikmalaya", + "Tangerang", + "Tangerang Selatan", + "Tegal", + "Temanggung", + "Tigaraksa", + "Trenggalek", + "Tuban", + "Tulungagung", + "Ungaran", + "Wates", + "Wlingi", + "Wonogiri", + "Wonosari", + "Wonosobo", + "Yogyakarta", + "Atambua", + "Baa", + "Badung", + "Bajawa", + "Bangli", + "Bima", + "Denpasar", + "Dompu", + "Ende", + "Gianyar", + "Kalabahi", + "Karangasem", + "Kefamenanu", + "Klungkung", + "Kupang", + "Labuhan Bajo", + "Larantuka", + "Lewoleba", + "Maumere", + "Mataram", + "Mbay", + "Negara", + "Praya", + "Raba", + "Ruteng", + "Selong", + "Singaraja", + "Soe", + "Sumbawa Besar", + "Tabanan", + "Taliwang", + "Tambolaka", + "Tanjung", + "Waibakul", + "Waikabubak", + "Waingapu", + "Denpasar", + "Negara,Bali", + "Singaraja", + "Tabanan", + "Bangli" +]; +},{}],601:[function(require,module,exports){ +module["exports"] = [ + "Indonesia" +]; + +},{}],602:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.building_number = require("./building_number"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street_prefix = require("./street_prefix"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":598,"./city":599,"./city_name":600,"./default_country":601,"./postcode":603,"./state":604,"./street_address":605,"./street_name":606,"./street_prefix":607}],603:[function(require,module,exports){ +module["exports"] = [ + "#####" +]; +},{}],604:[function(require,module,exports){ +module["exports"] = [ + "Aceh", + "Sumatera Utara", + "Sumatera Barat", + "Jambi", + "Bangka Belitung", + "Riau", + "Kepulauan Riau", + "Bengkulu", + "Sumatera Selatan", + "Lampung", + "Banten", + "DKI Jakarta", + "Jawa Barat", + "Jawa Tengah", + "Jawa Timur", + "Nusa Tenggara Timur", + "DI Yogyakarta", + "Bali", + "Nusa Tenggara Barat", + "Kalimantan Barat", + "Kalimantan Tengah", + "Kalimantan Selatan", + "Kalimantan Timur", + "Kalimantan Utara", + "Sulawesi Selatan", + "Sulawesi Utara", + "Gorontalo", + "Sulawesi Tengah", + "Sulawesi Barat", + "Sulawesi Tenggara", + "Maluku", + "Maluku Utara", + "Papua Barat", + "Papua" +]; +},{}],605:[function(require,module,exports){ +module["exports"] = [ + "#{street_name} no #{building_number}" +]; +},{}],606:[function(require,module,exports){ +module["exports"] = [ + "#{street_prefix} #{Name.first_name}", + "#{street_prefix} #{Name.last_name}" +]; +},{}],607:[function(require,module,exports){ +module["exports"] = [ + "Ds.", + "Dk.", + "Gg.", + "Jln.", + "Jr.", + "Kpg.", + "Ki.", + "Psr." +]; +},{}],608:[function(require,module,exports){ +arguments[4][88][0].apply(exports,arguments) +},{"./name":609,"./prefix":610,"./suffix":611,"dup":88}],609:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{Name.last_name}", + "#{Name.last_name} #{suffix}", + "#{prefix} #{Name.last_name} #{suffix}" +]; + +},{}],610:[function(require,module,exports){ +module["exports"] = [ + "PT", + "CV", + "UD", + "PD", + "Perum" +]; +},{}],611:[function(require,module,exports){ +module["exports"] = [ + "(Persero) Tbk", + "Tbk" +]; +},{}],612:[function(require,module,exports){ +arguments[4][92][0].apply(exports,arguments) +},{"./month":613,"./weekday":614,"dup":92}],613:[function(require,module,exports){ +module["exports"] = { + wide: [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember" + ], + wide_context: [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember" + ], + abbr: [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Ags", + "Sep", + "Okt", + "Nov", + "Des" + ], + abbr_context: [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Ags", + "Sep", + "Okt", + "Nov", + "Des" + ] +}; + +},{}],614:[function(require,module,exports){ +module["exports"] = { + wide: [ + "Minggu", + "Senin", + "Selasa", + "Rabu", + "Kamis", + "Jumat", + "Sabtu" + ], + wide_context: [ + "Minggu", + "Senin", + "Selasa", + "Rabu", + "Kamis", + "Jumat", + "Sabtu" + ], + abbr: [ + "Min", + "Sen", + "Sel", + "Rab", + "Kam", + "Jum", + "Sab" + ], + abbr_context: [ + "Min", + "Sen", + "Sel", + "Rab", + "Kam", + "Jum", + "Sab" + ] +}; + +},{}],615:[function(require,module,exports){ +var id = {}; +module['exports'] = id; +id.title = "Indonesia"; +id.address = require("./address"); +id.company = require("./company"); +id.internet = require("./internet"); +id.date = require("./date"); +id.name = require("./name"); +id.phone_number = require("./phone_number"); + +},{"./address":602,"./company":608,"./date":612,"./internet":618,"./name":621,"./phone_number":628}],616:[function(require,module,exports){ +module["exports"] = [ + "com", + "net", + "org", + "asia", + "tv", + "biz", + "info", + "in", + "name", + "co", + "ac.id", + "sch.id", + "go.id", + "mil.id", + "co.id", + "or.id", + "web.id", + "my.id", + "biz.id", + "desa.id" +]; +},{}],617:[function(require,module,exports){ +module["exports"] = [ + 'gmail.com', + 'yahoo.com', + 'gmail.co.id', + 'yahoo.co.id' +]; +},{}],618:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":616,"./free_email":617,"dup":98}],619:[function(require,module,exports){ +module["exports"] = [ + "Ade", + "Agnes", + "Ajeng", + "Amalia", + "Anita", + "Ayu", + "Aisyah", + "Ana", + "Ami", + "Ani", + "Azalea", + "Aurora", + "Alika", + "Anastasia", + "Amelia", + "Almira", + "Bella", + "Betania", + "Belinda", + "Citra", + "Cindy", + "Chelsea", + "Clara", + "Cornelia", + "Cinta", + "Cinthia", + "Ciaobella", + "Cici", + "Carla", + "Calista", + "Devi", + "Dewi","Dian", + "Diah", + "Diana", + "Dina", + "Dinda", + "Dalima", + "Eka", + "Eva", + "Endah", + "Elisa", + "Eli", + "Ella", + "Ellis", + "Elma", + "Elvina", + "Fitria", + "Fitriani", + "Febi", + "Faizah", + "Farah", + "Farhunnisa", + "Fathonah", + "Gabriella", + "Gasti", + "Gawati", + "Genta", + "Ghaliyati", + "Gina", + "Gilda", + "Halima", + "Hesti", + "Hilda", + "Hafshah", + "Hamima", + "Hana", + "Hani", + "Hasna", + "Humaira", + "Ika", + "Indah", + "Intan", + "Irma", + "Icha", + "Ida", + "Ifa", + "Ilsa", + "Ina", + "Ira", + "Iriana", + "Jamalia", + "Janet", + "Jane", + "Julia", + "Juli", + "Jessica", + "Jasmin", + "Jelita", + "Kamaria", + "Kamila", + "Kani", + "Karen", + "Karimah", + "Kartika", + "Kasiyah", + "Keisha", + "Kezia", + "Kiandra", + "Kayla", + "Kania", + "Lala", + "Lalita", + "Latika", + "Laila", + "Laras", + "Lidya", + "Lili", + "Lintang", + "Maria", + "Mala", + "Maya", + "Maida", + "Maimunah", + "Melinda", + "Mila", + "Mutia", + "Michelle", + "Malika", + "Nadia", + "Nadine", + "Nabila", + "Natalia", + "Novi", + "Nova", + "Nurul", + "Nilam", + "Najwa", + "Olivia", + "Ophelia", + "Oni", + "Oliva", + "Padma", + "Putri", + "Paramita", + "Paris", + "Patricia", + "Paulin", + "Puput", + "Puji", + "Pia", + "Puspa", + "Puti", + "Putri", + "Padmi", + "Qori", + "Queen", + "Ratih", + "Ratna", + "Restu", + "Rini", + "Rika", + "Rina", + "Rahayu", + "Rahmi", + "Rachel", + "Rahmi", + "Raisa", + "Raina", + "Sarah", + "Sari", + "Siti", + "Siska", + "Suci", + "Syahrini", + "Septi", + "Sadina", + "Safina", + "Sakura", + "Salimah", + "Salwa", + "Salsabila", + "Samiah", + "Shania", + "Sabrina", + "Silvia", + "Shakila", + "Talia", + "Tami", + "Tira", + "Tiara", + "Titin", + "Tania", + "Tina", + "Tantri", + "Tari", + "Titi", + "Uchita", + "Unjani", + "Ulya", + "Uli", + "Ulva", + "Umi", + "Usyi", + "Vanya", + "Vanesa", + "Vivi", + "Vera", + "Vicky", + "Victoria", + "Violet", + "Winda", + "Widya", + "Wulan", + "Wirda", + "Wani", + "Yani", + "Yessi", + "Yulia", + "Yuliana", + "Yuni", + "Yunita", + "Yance", + "Zahra", + "Zalindra", + "Zaenab", + "Zulfa", + "Zizi", + "Zulaikha", + "Zamira", + "Zelda", + "Zelaya" +]; +},{}],620:[function(require,module,exports){ +module["exports"] = [ + "Agustina", + "Andriani", + "Anggraini", + "Aryani", + "Astuti", + "Fujiati", + "Farida", + "Handayani", + "Hassanah", + "Hartati", + "Hasanah", + "Haryanti", + "Hariyah", + "Hastuti", + "Halimah", + "Kusmawati", + "Kuswandari", + "Laksmiwati", + "Laksita", + "Lestari", + "Lailasari", + "Mandasari", + "Mardhiyah", + "Mayasari", + "Melani", + "Mulyani", + "Maryati", + "Nurdiyanti", + "Novitasari", + "Nuraini", + "Nasyidah", + "Nasyiah", + "Namaga", + "Palastri", + "Pudjiastuti", + "Puspasari", + "Puspita", + "Purwanti", + "Pratiwi", + "Purnawati", + "Pertiwi", + "Permata", + "Prastuti", + "Padmasari", + "Rahmawati", + "Rahayu", + "Riyanti", + "Rahimah", + "Suartini", + "Sudiati", + "Suryatmi", + "Susanti", + "Safitri", + "Oktaviani", + "Utami", + "Usamah", + "Usada", + "Uyainah", + "Yuniar", + "Yuliarti", + "Yulianti", + "Yolanda", + "Wahyuni", + "Wijayanti", + "Widiastuti", + "Winarsih", + "Wulandari", + "Wastuti", + "Zulaika" +]; +},{}],621:[function(require,module,exports){ +arguments[4][101][0].apply(exports,arguments) +},{"./female_first_name":619,"./female_last_name":620,"./male_first_name":622,"./male_last_name":623,"./name":624,"./prefix":625,"./suffix":626,"dup":101}],622:[function(require,module,exports){ +module["exports"] = [ + "Abyasa", + "Ade", + "Adhiarja", + "Adiarja", + "Adika", + "Adikara", + "Adinata", + "Aditya", + "Agus", + "Ajiman", + "Ajimat", + "Ajimin", + "Ajiono", + "Akarsana", + "Alambana", + "Among", + "Anggabaya", + "Anom", + "Argono", + "Aris", + "Arta", + "Artanto", + "Artawan", + "Arsipatra", + "Asirwada", + "Asirwanda", + "Aslijan", + "Asmadi", + "Asman", + "Asmianto", + "Asmuni", + "Aswani", + "Atma", + "Atmaja", + "Bagas", + "Bagiya", + "Bagus", + "Bagya", + "Bahuraksa", + "Bahuwarna", + "Bahuwirya", + "Bajragin", + "Bakda", + "Bakiadi", + "Bakianto", + "Bakidin", + "Bakijan", + "Bakiman", + "Bakiono", + "Bakti", + "Baktiadi", + "Baktianto", + "Baktiono", + "Bala", + "Balamantri", + "Balangga", + "Balapati", + "Balidin", + "Balijan", + "Bambang", + "Banara", + "Banawa", + "Banawi", + "Bancar", + "Budi", + "Cagak", + "Cager", + "Cahyadi", + "Cahyanto", + "Cahya", + "Cahyo", + "Cahyono", + "Caket", + "Cakrabirawa", + "Cakrabuana", + "Cakrajiya", + "Cakrawala", + "Cakrawangsa", + "Candra", + "Chandra", + "Candrakanta", + "Capa", + "Caraka", + "Carub", + "Catur", + "Caturangga", + "Cawisadi", + "Cawisono", + "Cawuk", + "Cayadi", + "Cecep", + "Cemani", + "Cemeti", + "Cemplunk", + "Cengkal", + "Cengkir", + "Dacin", + "Dadap", + "Dadi", + "Dagel", + "Daliman", + "Dalimin", + "Daliono", + "Damar", + "Damu", + "Danang", + "Daniswara", + "Danu", + "Danuja", + "Dariati", + "Darijan", + "Darimin", + "Darmaji", + "Darman", + "Darmana", + "Darmanto", + "Darsirah", + "Dartono", + "Daru", + "Daruna", + "Daryani", + "Dasa", + "Digdaya", + "Dimas", + "Dimaz", + "Dipa", + "Dirja", + "Drajat", + "Dwi", + "Dono", + "Dodo", + "Edi", + "Eka", + "Elon", + "Eluh", + "Eman", + "Emas", + "Embuh", + "Emong", + "Empluk", + "Endra", + "Enteng", + "Estiawan", + "Estiono", + "Eko", + "Edi", + "Edison", + "Edward", + "Elvin", + "Erik", + "Emil", + "Ega", + "Emin", + "Eja", + "Gada", + "Gadang", + "Gaduh", + "Gaiman", + "Galak", + "Galang", + "Galar", + "Galih", + "Galiono", + "Galuh", + "Galur", + "Gaman", + "Gamani", + "Gamanto", + "Gambira", + "Gamblang", + "Ganda", + "Gandewa", + "Gandi", + "Gandi", + "Ganep", + "Gangsa", + "Gangsar", + "Ganjaran", + "Gantar", + "Gara", + "Garan", + "Garang", + "Garda", + "Gatot", + "Gatra", + "Gilang", + "Galih", + "Ghani", + "Gading", + "Hairyanto", + "Hardana", + "Hardi", + "Harimurti", + "Harja", + "Harjasa", + "Harjaya", + "Harjo", + "Harsana", + "Harsanto", + "Harsaya", + "Hartaka", + "Hartana", + "Harto", + "Hasta", + "Heru", + "Himawan", + "Hadi", + "Halim", + "Hasim", + "Hasan", + "Hendra", + "Hendri", + "Heryanto", + "Hamzah", + "Hari", + "Imam", + "Indra", + "Irwan", + "Irsad", + "Ikhsan", + "Irfan", + "Ian", + "Ibrahim", + "Ibrani", + "Ismail", + "Irnanto", + "Ilyas", + "Ibun", + "Ivan", + "Ikin", + "Ihsan", + "Jabal", + "Jaeman", + "Jaga", + "Jagapati", + "Jagaraga", + "Jail", + "Jaiman", + "Jaka", + "Jarwa", + "Jarwadi", + "Jarwi", + "Jasmani", + "Jaswadi", + "Jati", + "Jatmiko", + "Jaya", + "Jayadi", + "Jayeng", + "Jinawi", + "Jindra", + "Joko", + "Jumadi", + "Jumari", + "Jamal", + "Jamil", + "Jais", + "Jefri", + "Johan", + "Jono", + "Kacung", + "Kajen", + "Kambali", + "Kamidin", + "Kariman", + "Karja", + "Karma", + "Karman", + "Karna", + "Karsa", + "Karsana", + "Karta", + "Kasiran", + "Kasusra", + "Kawaca", + "Kawaya", + "Kayun", + "Kemba", + "Kenari", + "Kenes", + "Kuncara", + "Kunthara", + "Kusuma", + "Kadir", + "Kala", + "Kalim", + "Kurnia", + "Kanda", + "Kardi", + "Karya", + "Kasim", + "Kairav", + "Kenzie", + "Kemal", + "Kamal", + "Koko", + "Labuh", + "Laksana", + "Lamar", + "Lanang", + "Langgeng", + "Lanjar", + "Lantar", + "Lega", + "Legawa", + "Lembah", + "Liman", + "Limar", + "Luhung", + "Lukita", + "Luluh", + "Lulut", + "Lurhur", + "Luwar", + "Luwes", + "Latif", + "Lasmanto", + "Lukman", + "Luthfi", + "Leo", + "Luis", + "Lutfan", + "Lasmono", + "Laswi", + "Mahesa", + "Makara", + "Makuta", + "Manah", + "Maras", + "Margana", + "Mariadi", + "Marsudi", + "Martaka", + "Martana", + "Martani", + "Marwata", + "Maryadi", + "Maryanto", + "Mitra", + "Mujur", + "Mulya", + "Mulyanto", + "Mulyono", + "Mumpuni", + "Muni", + "Mursita", + "Murti", + "Mustika", + "Maman", + "Mahmud", + "Mahdi", + "Mahfud", + "Malik", + "Muhammad", + "Mustofa", + "Marsito", + "Mursinin", + "Nalar", + "Naradi", + "Nardi", + "Niyaga", + "Nrima", + "Nugraha", + "Nyana", + "Narji", + "Nasab", + "Nasrullah", + "Nasim", + "Najib", + "Najam", + "Nyoman", + "Olga", + "Ozy", + "Omar", + "Opan", + "Oskar", + "Oman", + "Okto", + "Okta", + "Opung", + "Paiman", + "Panca", + "Pangeran", + "Pangestu", + "Pardi", + "Parman", + "Perkasa", + "Praba", + "Prabu", + "Prabawa", + "Prabowo", + "Prakosa", + "Pranata", + "Pranawa", + "Prasetya", + "Prasetyo", + "Prayitna", + "Prayoga", + "Prayogo", + "Purwadi", + "Purwa", + "Purwanto", + "Panji", + "Pandu", + "Paiman", + "Prima", + "Putu", + "Raden", + "Raditya", + "Raharja", + "Rama", + "Rangga", + "Reksa", + "Respati", + "Rusman", + "Rosman", + "Rahmat", + "Rahman", + "Rendy", + "Reza", + "Rizki", + "Ridwan", + "Rudi", + "Raden", + "Radit", + "Radika", + "Rafi", + "Rafid", + "Raihan", + "Salman", + "Saadat", + "Saiful", + "Surya", + "Slamet", + "Samsul", + "Soleh", + "Simon", + "Sabar", + "Sabri", + "Sidiq", + "Satya", + "Setya", + "Saka", + "Sakti", + "Taswir", + "Tedi", + "Teddy", + "Taufan", + "Taufik", + "Tomi", + "Tasnim", + "Teguh", + "Tasdik", + "Timbul", + "Tirta", + "Tirtayasa", + "Tri", + "Tugiman", + "Umar", + "Usman", + "Uda", + "Umay", + "Unggul", + "Utama", + "Umaya", + "Upik", + "Viktor", + "Vino", + "Vinsen", + "Vero", + "Vega", + "Viman", + "Virman", + "Wahyu", + "Wira", + "Wisnu", + "Wadi", + "Wardi", + "Warji", + "Waluyo", + "Wakiman", + "Wage", + "Wardaya", + "Warsa", + "Warsita", + "Warta", + "Wasis", + "Wawan", + "Xanana", + "Yahya", + "Yusuf", + "Yosef", + "Yono", + "Yoga" +]; +},{}],623:[function(require,module,exports){ +module["exports"] = [ + "Adriansyah", + "Ardianto", + "Anggriawan", + "Budiman", + "Budiyanto", + "Damanik", + "Dongoran", + "Dabukke", + "Firmansyah", + "Firgantoro", + "Gunarto", + "Gunawan", + "Hardiansyah", + "Habibi", + "Hakim", + "Halim", + "Haryanto", + "Hidayat", + "Hidayanto", + "Hutagalung", + "Hutapea", + "Hutasoit", + "Irawan", + "Iswahyudi", + "Kuswoyo", + "Januar", + "Jailani", + "Kurniawan", + "Kusumo", + "Latupono", + "Lazuardi", + "Maheswara", + "Mahendra", + "Mustofa", + "Mansur", + "Mandala", + "Megantara", + "Maulana", + "Maryadi", + "Mangunsong", + "Manullang", + "Marpaung", + "Marbun", + "Narpati", + "Natsir", + "Nugroho", + "Najmudin", + "Nashiruddin", + "Nainggolan", + "Nababan", + "Napitupulu", + "Pangestu", + "Putra", + "Pranowo", + "Prabowo", + "Pratama", + "Prasetya", + "Prasetyo", + "Pradana", + "Pradipta", + "Prakasa", + "Permadi", + "Prasasta", + "Prayoga", + "Ramadan", + "Rajasa", + "Rajata", + "Saptono", + "Santoso", + "Saputra", + "Saefullah", + "Setiawan", + "Suryono", + "Suwarno", + "Siregar", + "Sihombing", + "Salahudin", + "Sihombing", + "Samosir", + "Saragih", + "Sihotang", + "Simanjuntak", + "Sinaga", + "Simbolon", + "Sitompul", + "Sitorus", + "Sirait", + "Siregar", + "Situmorang", + "Tampubolon", + "Thamrin", + "Tamba", + "Tarihoran", + "Utama", + "Uwais", + "Wahyudin", + "Waluyo", + "Wibowo", + "Winarno", + "Wibisono", + "Wijaya", + "Widodo", + "Wacana", + "Waskita", + "Wasita", + "Zulkarnain" +]; +},{}],624:[function(require,module,exports){ +module["exports"] = [ + "#{male_first_name} #{male_last_name}", + "#{male_last_name} #{male_first_name}", + "#{male_first_name} #{male_first_name} #{male_last_name}", + "#{female_first_name} #{female_last_name}", + "#{female_first_name} #{male_last_name}", + "#{female_last_name} #{female_first_name}", + "#{female_first_name} #{female_first_name} #{female_last_name}" +]; + +},{}],625:[function(require,module,exports){ +module["exports"] = []; +},{}],626:[function(require,module,exports){ +module["exports"] = [ + "S.Ked", + "S.Gz", + "S.Pt", + "S.IP", + "S.E.I", + "S.E.", + "S.Kom", + "S.H.", + "S.T.", + "S.Pd", + "S.Psi", + "S.I.Kom", + "S.Sos", + "S.Farm", + "M.M.", + "M.Kom.", + "M.TI.", + "M.Pd", + "M.Farm", + "M.Ak" +]; +},{}],627:[function(require,module,exports){ +module["exports"] = [ + "02# #### ###", + "02## #### ###", + "03## #### ###", + "04## #### ###", + "05## #### ###", + "06## #### ###", + "07## #### ###", + "09## #### ###", + "02# #### ####", + "02## #### ####", + "03## #### ####", + "04## #### ####", + "05## #### ####", + "06## #### ####", + "07## #### ####", + "09## #### ####", + "08## ### ###", + "08## #### ###", + "08## #### ####", + "(+62) 8## ### ###", + "(+62) 2# #### ###", + "(+62) 2## #### ###", + "(+62) 3## #### ###", + "(+62) 4## #### ###", + "(+62) 5## #### ###", + "(+62) 6## #### ###", + "(+62) 7## #### ###", + "(+62) 8## #### ###", + "(+62) 9## #### ###", + "(+62) 2# #### ####", + "(+62) 2## #### ####", + "(+62) 3## #### ####", + "(+62) 4## #### ####", + "(+62) 5## #### ####", + "(+62) 6## #### ####", + "(+62) 7## #### ####", + "(+62) 8## #### ####", + "(+62) 9## #### ####" +]; +},{}],628:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":627,"dup":108}],629:[function(require,module,exports){ +arguments[4][566][0].apply(exports,arguments) +},{"dup":566}],630:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix} #{Name.first_name} #{city_suffix}", + "#{city_prefix} #{Name.first_name}", + "#{Name.first_name} #{city_suffix}", + "#{Name.last_name} #{city_suffix}" +]; + +},{}],631:[function(require,module,exports){ +module["exports"] = [ + "San", + "Borgo", + "Sesto", + "Quarto", + "Settimo" +]; + +},{}],632:[function(require,module,exports){ +module["exports"] = [ + "a mare", + "lido", + "ligure", + "del friuli", + "salentino", + "calabro", + "veneto", + "nell'emilia", + "umbro", + "laziale", + "terme", + "sardo" +]; + +},{}],633:[function(require,module,exports){ +module["exports"] = [ + "Afghanistan", + "Albania", + "Algeria", + "American Samoa", + "Andorra", + "Angola", + "Anguilla", + "Antartide (territori a sud del 60° parallelo)", + "Antigua e Barbuda", + "Argentina", + "Armenia", + "Aruba", + "Australia", + "Austria", + "Azerbaijan", + "Bahamas", + "Bahrain", + "Bangladesh", + "Barbados", + "Bielorussia", + "Belgio", + "Belize", + "Benin", + "Bermuda", + "Bhutan", + "Bolivia", + "Bosnia e Herzegovina", + "Botswana", + "Bouvet Island (Bouvetoya)", + "Brasile", + "Territorio dell'arcipelago indiano", + "Isole Vergini Britanniche", + "Brunei Darussalam", + "Bulgaria", + "Burkina Faso", + "Burundi", + "Cambogia", + "Cameroon", + "Canada", + "Capo Verde", + "Isole Cayman", + "Repubblica Centrale Africana", + "Chad", + "Cile", + "Cina", + "Isola di Pasqua", + "Isola di Cocos (Keeling)", + "Colombia", + "Comoros", + "Congo", + "Isole Cook", + "Costa Rica", + "Costa d'Avorio", + "Croazia", + "Cuba", + "Cipro", + "Repubblica Ceca", + "Danimarca", + "Gibuti", + "Repubblica Dominicana", + "Equador", + "Egitto", + "El Salvador", + "Guinea Equatoriale", + "Eritrea", + "Estonia", + "Etiopia", + "Isole Faroe", + "Isole Falkland (Malvinas)", + "Fiji", + "Finlandia", + "Francia", + "Guyana Francese", + "Polinesia Francese", + "Territori Francesi del sud", + "Gabon", + "Gambia", + "Georgia", + "Germania", + "Ghana", + "Gibilterra", + "Grecia", + "Groenlandia", + "Grenada", + "Guadalupa", + "Guam", + "Guatemala", + "Guernsey", + "Guinea", + "Guinea-Bissau", + "Guyana", + "Haiti", + "Heard Island and McDonald Islands", + "Città del Vaticano", + "Honduras", + "Hong Kong", + "Ungheria", + "Islanda", + "India", + "Indonesia", + "Iran", + "Iraq", + "Irlanda", + "Isola di Man", + "Israele", + "Italia", + "Giamaica", + "Giappone", + "Jersey", + "Giordania", + "Kazakhstan", + "Kenya", + "Kiribati", + "Korea", + "Kuwait", + "Republicca Kirgiza", + "Repubblica del Laos", + "Latvia", + "Libano", + "Lesotho", + "Liberia", + "Libyan Arab Jamahiriya", + "Liechtenstein", + "Lituania", + "Lussemburgo", + "Macao", + "Macedonia", + "Madagascar", + "Malawi", + "Malesia", + "Maldive", + "Mali", + "Malta", + "Isole Marshall", + "Martinica", + "Mauritania", + "Mauritius", + "Mayotte", + "Messico", + "Micronesia", + "Moldova", + "Principato di Monaco", + "Mongolia", + "Montenegro", + "Montserrat", + "Marocco", + "Mozambico", + "Myanmar", + "Namibia", + "Nauru", + "Nepal", + "Antille Olandesi", + "Olanda", + "Nuova Caledonia", + "Nuova Zelanda", + "Nicaragua", + "Niger", + "Nigeria", + "Niue", + "Isole Norfolk", + "Northern Mariana Islands", + "Norvegia", + "Oman", + "Pakistan", + "Palau", + "Palestina", + "Panama", + "Papua Nuova Guinea", + "Paraguay", + "Peru", + "Filippine", + "Pitcairn Islands", + "Polonia", + "Portogallo", + "Porto Rico", + "Qatar", + "Reunion", + "Romania", + "Russia", + "Rwanda", + "San Bartolomeo", + "Sant'Elena", + "Saint Kitts and Nevis", + "Saint Lucia", + "Saint Martin", + "Saint Pierre and Miquelon", + "Saint Vincent and the Grenadines", + "Samoa", + "San Marino", + "Sao Tome and Principe", + "Arabia Saudita", + "Senegal", + "Serbia", + "Seychelles", + "Sierra Leone", + "Singapore", + "Slovenia", + "Isole Solomon", + "Somalia", + "Sud Africa", + "Georgia del sud e South Sandwich Islands", + "Spagna", + "Sri Lanka", + "Sudan", + "Suriname", + "Svalbard & Jan Mayen Islands", + "Swaziland", + "Svezia", + "Svizzera", + "Siria", + "Taiwan", + "Tajikistan", + "Tanzania", + "Tailandia", + "Timor-Leste", + "Togo", + "Tokelau", + "Tonga", + "Trinidad e Tobago", + "Tunisia", + "Turchia", + "Turkmenistan", + "Isole di Turks and Caicos", + "Tuvalu", + "Uganda", + "Ucraina", + "Emirati Arabi Uniti", + "Regno Unito", + "Stati Uniti d'America", + "United States Minor Outlying Islands", + "Isole Vergini Statunitensi", + "Uruguay", + "Uzbekistan", + "Vanuatu", + "Venezuela", + "Vietnam", + "Wallis and Futuna", + "Western Sahara", + "Yemen", + "Zambia", + "Zimbabwe" +]; + +},{}],634:[function(require,module,exports){ +module["exports"] = [ + "Italia" +]; + +},{}],635:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":629,"./city":630,"./city_prefix":631,"./city_suffix":632,"./country":633,"./default_country":634,"./postcode":636,"./secondary_address":637,"./state":638,"./state_abbr":639,"./street_address":640,"./street_name":641,"./street_suffix":642}],636:[function(require,module,exports){ +arguments[4][434][0].apply(exports,arguments) +},{"dup":434}],637:[function(require,module,exports){ +module["exports"] = [ + "Appartamento ##", + "Piano #" +]; + +},{}],638:[function(require,module,exports){ +module["exports"] = [ + "Agrigento", + "Alessandria", + "Ancona", + "Aosta", + "Arezzo", + "Ascoli Piceno", + "Asti", + "Avellino", + "Bari", + "Barletta-Andria-Trani", + "Belluno", + "Benevento", + "Bergamo", + "Biella", + "Bologna", + "Bolzano", + "Brescia", + "Brindisi", + "Cagliari", + "Caltanissetta", + "Campobasso", + "Carbonia-Iglesias", + "Caserta", + "Catania", + "Catanzaro", + "Chieti", + "Como", + "Cosenza", + "Cremona", + "Crotone", + "Cuneo", + "Enna", + "Fermo", + "Ferrara", + "Firenze", + "Foggia", + "Forlì-Cesena", + "Frosinone", + "Genova", + "Gorizia", + "Grosseto", + "Imperia", + "Isernia", + "La Spezia", + "L'Aquila", + "Latina", + "Lecce", + "Lecco", + "Livorno", + "Lodi", + "Lucca", + "Macerata", + "Mantova", + "Massa-Carrara", + "Matera", + "Messina", + "Milano", + "Modena", + "Monza e della Brianza", + "Napoli", + "Novara", + "Nuoro", + "Olbia-Tempio", + "Oristano", + "Padova", + "Palermo", + "Parma", + "Pavia", + "Perugia", + "Pesaro e Urbino", + "Pescara", + "Piacenza", + "Pisa", + "Pistoia", + "Pordenone", + "Potenza", + "Prato", + "Ragusa", + "Ravenna", + "Reggio Calabria", + "Reggio Emilia", + "Rieti", + "Rimini", + "Roma", + "Rovigo", + "Salerno", + "Medio Campidano", + "Sassari", + "Savona", + "Siena", + "Siracusa", + "Sondrio", + "Taranto", + "Teramo", + "Terni", + "Torino", + "Ogliastra", + "Trapani", + "Trento", + "Treviso", + "Trieste", + "Udine", + "Varese", + "Venezia", + "Verbano-Cusio-Ossola", + "Vercelli", + "Verona", + "Vibo Valentia", + "Vicenza", + "Viterbo" +]; + +},{}],639:[function(require,module,exports){ +module["exports"] = [ + "AG", + "AL", + "AN", + "AO", + "AR", + "AP", + "AT", + "AV", + "BA", + "BT", + "BL", + "BN", + "BG", + "BI", + "BO", + "BZ", + "BS", + "BR", + "CA", + "CL", + "CB", + "CI", + "CE", + "CT", + "CZ", + "CH", + "CO", + "CS", + "CR", + "KR", + "CN", + "EN", + "FM", + "FE", + "FI", + "FG", + "FC", + "FR", + "GE", + "GO", + "GR", + "IM", + "IS", + "SP", + "AQ", + "LT", + "LE", + "LC", + "LI", + "LO", + "LU", + "MC", + "MN", + "MS", + "MT", + "ME", + "MI", + "MO", + "MB", + "NA", + "NO", + "NU", + "OT", + "OR", + "PD", + "PA", + "PR", + "PV", + "PG", + "PU", + "PE", + "PC", + "PI", + "PT", + "PN", + "PZ", + "PO", + "RG", + "RA", + "RC", + "RE", + "RI", + "RN", + "RM", + "RO", + "SA", + "VS", + "SS", + "SV", + "SI", + "SR", + "SO", + "TA", + "TE", + "TR", + "TO", + "OG", + "TP", + "TN", + "TV", + "TS", + "UD", + "VA", + "VE", + "VB", + "VC", + "VR", + "VV", + "VI", + "VT" +]; + +},{}],640:[function(require,module,exports){ +module["exports"] = [ + "#{street_name} #{building_number}", + "#{street_name} #{building_number}, #{secondary_address}" +]; + +},{}],641:[function(require,module,exports){ +module["exports"] = [ + "#{street_suffix} #{Name.first_name}", + "#{street_suffix} #{Name.last_name}" +]; + +},{}],642:[function(require,module,exports){ +module["exports"] = [ + "Piazza", + "Strada", + "Via", + "Borgo", + "Contrada", + "Rotonda", + "Incrocio" +]; + +},{}],643:[function(require,module,exports){ +module["exports"] = [ + "24 ore", + "24/7", + "terza generazione", + "quarta generazione", + "quinta generazione", + "sesta generazione", + "asimmetrica", + "asincrona", + "background", + "bi-direzionale", + "biforcata", + "bottom-line", + "coerente", + "coesiva", + "composita", + "sensibile al contesto", + "basta sul contesto", + "basata sul contenuto", + "dedicata", + "didattica", + "direzionale", + "discreta", + "dinamica", + "eco-centrica", + "esecutiva", + "esplicita", + "full-range", + "globale", + "euristica", + "alto livello", + "olistica", + "omogenea", + "ibrida", + "impattante", + "incrementale", + "intangibile", + "interattiva", + "intermediaria", + "locale", + "logistica", + "massimizzata", + "metodica", + "mission-critical", + "mobile", + "modulare", + "motivazionale", + "multimedia", + "multi-tasking", + "nazionale", + "neutrale", + "nextgeneration", + "non-volatile", + "object-oriented", + "ottima", + "ottimizzante", + "radicale", + "real-time", + "reciproca", + "regionale", + "responsiva", + "scalabile", + "secondaria", + "stabile", + "statica", + "sistematica", + "sistemica", + "tangibile", + "terziaria", + "uniforme", + "valore aggiunto" +]; + +},{}],644:[function(require,module,exports){ +module["exports"] = [ + "valore aggiunto", + "verticalizzate", + "proattive", + "forti", + "rivoluzionari", + "scalabili", + "innovativi", + "intuitivi", + "strategici", + "e-business", + "mission-critical", + "24/7", + "globali", + "B2B", + "B2C", + "granulari", + "virtuali", + "virali", + "dinamiche", + "magnetiche", + "web", + "interattive", + "sexy", + "back-end", + "real-time", + "efficienti", + "front-end", + "distributivi", + "estensibili", + "mondiali", + "open-source", + "cross-platform", + "sinergiche", + "out-of-the-box", + "enterprise", + "integrate", + "di impatto", + "wireless", + "trasparenti", + "next-generation", + "cutting-edge", + "visionari", + "plug-and-play", + "collaborative", + "olistiche", + "ricche" +]; + +},{}],645:[function(require,module,exports){ +module["exports"] = [ + "partnerships", + "comunità", + "ROI", + "soluzioni", + "e-services", + "nicchie", + "tecnologie", + "contenuti", + "supply-chains", + "convergenze", + "relazioni", + "architetture", + "interfacce", + "mercati", + "e-commerce", + "sistemi", + "modelli", + "schemi", + "reti", + "applicazioni", + "metriche", + "e-business", + "funzionalità", + "esperienze", + "webservices", + "metodologie" +]; + +},{}],646:[function(require,module,exports){ +module["exports"] = [ + "implementate", + "utilizzo", + "integrate", + "ottimali", + "evolutive", + "abilitate", + "reinventate", + "aggregate", + "migliorate", + "incentivate", + "monetizzate", + "sinergizzate", + "strategiche", + "deploy", + "marchi", + "accrescitive", + "target", + "sintetizzate", + "spedizioni", + "massimizzate", + "innovazione", + "guida", + "estensioni", + "generate", + "exploit", + "transizionali", + "matrici", + "ricontestualizzate" +]; + +},{}],647:[function(require,module,exports){ +module["exports"] = [ + "adattiva", + "avanzata", + "migliorata", + "assimilata", + "automatizzata", + "bilanciata", + "centralizzata", + "compatibile", + "configurabile", + "cross-platform", + "decentralizzata", + "digitalizzata", + "distribuita", + "piccola", + "ergonomica", + "esclusiva", + "espansa", + "estesa", + "configurabile", + "fondamentale", + "orizzontale", + "implementata", + "innovativa", + "integrata", + "intuitiva", + "inversa", + "gestita", + "obbligatoria", + "monitorata", + "multi-canale", + "multi-laterale", + "open-source", + "operativa", + "ottimizzata", + "organica", + "persistente", + "polarizzata", + "proattiva", + "programmabile", + "progressiva", + "reattiva", + "riallineata", + "ricontestualizzata", + "ridotta", + "robusta", + "sicura", + "condivisibile", + "stand-alone", + "switchabile", + "sincronizzata", + "sinergica", + "totale", + "universale", + "user-friendly", + "versatile", + "virtuale", + "visionaria" +]; + +},{}],648:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.noun = require("./noun"); +company.descriptor = require("./descriptor"); +company.adjective = require("./adjective"); +company.bs_noun = require("./bs_noun"); +company.bs_verb = require("./bs_verb"); +company.bs_adjective = require("./bs_adjective"); +company.name = require("./name"); + +},{"./adjective":643,"./bs_adjective":644,"./bs_noun":645,"./bs_verb":646,"./descriptor":647,"./name":649,"./noun":650,"./suffix":651}],649:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name}-#{Name.last_name} #{suffix}", + "#{Name.last_name}, #{Name.last_name} e #{Name.last_name} #{suffix}" +]; + +},{}],650:[function(require,module,exports){ +module["exports"] = [ + "Abilità", + "Access", + "Adattatore", + "Algoritmo", + "Alleanza", + "Analizzatore", + "Applicazione", + "Approccio", + "Architettura", + "Archivio", + "Intelligenza artificiale", + "Array", + "Attitudine", + "Benchmark", + "Capacità", + "Sfida", + "Circuito", + "Collaborazione", + "Complessità", + "Concetto", + "Conglomerato", + "Contingenza", + "Core", + "Database", + "Data-warehouse", + "Definizione", + "Emulazione", + "Codifica", + "Criptazione", + "Firmware", + "Flessibilità", + "Previsione", + "Frame", + "framework", + "Funzione", + "Funzionalità", + "Interfaccia grafica", + "Hardware", + "Help-desk", + "Gerarchia", + "Hub", + "Implementazione", + "Infrastruttura", + "Iniziativa", + "Installazione", + "Set di istruzioni", + "Interfaccia", + "Soluzione internet", + "Intranet", + "Conoscenza base", + "Matrici", + "Matrice", + "Metodologia", + "Middleware", + "Migrazione", + "Modello", + "Moderazione", + "Monitoraggio", + "Moratoria", + "Rete", + "Architettura aperta", + "Sistema aperto", + "Orchestrazione", + "Paradigma", + "Parallelismo", + "Policy", + "Portale", + "Struttura di prezzo", + "Prodotto", + "Produttività", + "Progetto", + "Proiezione", + "Protocollo", + "Servizio clienti", + "Software", + "Soluzione", + "Standardizzazione", + "Strategia", + "Struttura", + "Successo", + "Sovrastruttura", + "Supporto", + "Sinergia", + "Task-force", + "Finestra temporale", + "Strumenti", + "Utilizzazione", + "Sito web", + "Forza lavoro" +]; + +},{}],651:[function(require,module,exports){ +module["exports"] = [ + "SPA", + "e figli", + "Group", + "s.r.l." +]; + +},{}],652:[function(require,module,exports){ +var it = {}; +module['exports'] = it; +it.title = "Italian"; +it.address = require("./address"); +it.company = require("./company"); +it.internet = require("./internet"); +it.name = require("./name"); +it.phone_number = require("./phone_number"); + +},{"./address":635,"./company":648,"./internet":655,"./name":657,"./phone_number":663}],653:[function(require,module,exports){ +module["exports"] = [ + "com", + "com", + "com", + "net", + "org", + "it", + "it", + "it" +]; + +},{}],654:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.com", + "hotmail.com", + "email.it", + "libero.it", + "yahoo.it" +]; + +},{}],655:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":653,"./free_email":654,"dup":98}],656:[function(require,module,exports){ +module["exports"] = [ + "Aaron", + "Akira", + "Alberto", + "Alessandro", + "Alighieri", + "Amedeo", + "Amos", + "Anselmo", + "Antonino", + "Arcibaldo", + "Armando", + "Artes", + "Audenico", + "Ausonio", + "Bacchisio", + "Battista", + "Bernardo", + "Boris", + "Caio", + "Carlo", + "Cecco", + "Cirino", + "Cleros", + "Costantino", + "Damiano", + "Danny", + "Davide", + "Demian", + "Dimitri", + "Domingo", + "Dylan", + "Edilio", + "Egidio", + "Elio", + "Emanuel", + "Enrico", + "Ercole", + "Ermes", + "Ethan", + "Eusebio", + "Evangelista", + "Fabiano", + "Ferdinando", + "Fiorentino", + "Flavio", + "Fulvio", + "Gabriele", + "Gastone", + "Germano", + "Giacinto", + "Gianantonio", + "Gianleonardo", + "Gianmarco", + "Gianriccardo", + "Gioacchino", + "Giordano", + "Giuliano", + "Graziano", + "Guido", + "Harry", + "Iacopo", + "Ilario", + "Ione", + "Italo", + "Jack", + "Jari", + "Joey", + "Joseph", + "Kai", + "Kociss", + "Laerte", + "Lauro", + "Leonardo", + "Liborio", + "Lorenzo", + "Ludovico", + "Maggiore", + "Manuele", + "Mariano", + "Marvin", + "Matteo", + "Mauro", + "Michael", + "Mirco", + "Modesto", + "Muzio", + "Nabil", + "Nathan", + "Nick", + "Noah", + "Odino", + "Olo", + "Oreste", + "Osea", + "Pablo", + "Patrizio", + "Piererminio", + "Pierfrancesco", + "Piersilvio", + "Priamo", + "Quarto", + "Quirino", + "Radames", + "Raniero", + "Renato", + "Rocco", + "Romeo", + "Rosalino", + "Rudy", + "Sabatino", + "Samuel", + "Santo", + "Sebastian", + "Serse", + "Silvano", + "Sirio", + "Tancredi", + "Terzo", + "Timoteo", + "Tolomeo", + "Trevis", + "Ubaldo", + "Ulrico", + "Valdo", + "Neri", + "Vinicio", + "Walter", + "Xavier", + "Yago", + "Zaccaria", + "Abramo", + "Adriano", + "Alan", + "Albino", + "Alessio", + "Alighiero", + "Amerigo", + "Anastasio", + "Antimo", + "Antonio", + "Arduino", + "Aroldo", + "Arturo", + "Augusto", + "Avide", + "Baldassarre", + "Bettino", + "Bortolo", + "Caligola", + "Carmelo", + "Celeste", + "Ciro", + "Costanzo", + "Dante", + "Danthon", + "Davis", + "Demis", + "Dindo", + "Domiziano", + "Edipo", + "Egisto", + "Eliziario", + "Emidio", + "Enzo", + "Eriberto", + "Erminio", + "Ettore", + "Eustachio", + "Fabio", + "Fernando", + "Fiorenzo", + "Folco", + "Furio", + "Gaetano", + "Gavino", + "Gerlando", + "Giacobbe", + "Giancarlo", + "Gianmaria", + "Giobbe", + "Giorgio", + "Giulio", + "Gregorio", + "Hector", + "Ian", + "Ippolito", + "Ivano", + "Jacopo", + "Jarno", + "Joannes", + "Joshua", + "Karim", + "Kris", + "Lamberto", + "Lazzaro", + "Leone", + "Lino", + "Loris", + "Luigi", + "Manfredi", + "Marco", + "Marino", + "Marzio", + "Mattia", + "Max", + "Michele", + "Mirko", + "Moreno", + "Nadir", + "Nazzareno", + "Nestore", + "Nico", + "Noel", + "Odone", + "Omar", + "Orfeo", + "Osvaldo", + "Pacifico", + "Pericle", + "Pietro", + "Primo", + "Quasimodo", + "Radio", + "Raoul", + "Renzo", + "Rodolfo", + "Romolo", + "Rosolino", + "Rufo", + "Sabino", + "Sandro", + "Sasha", + "Secondo", + "Sesto", + "Silverio", + "Siro", + "Tazio", + "Teseo", + "Timothy", + "Tommaso", + "Tristano", + "Umberto", + "Ariel", + "Artemide", + "Assia", + "Azue", + "Benedetta", + "Bibiana", + "Brigitta", + "Carmela", + "Cassiopea", + "Cesidia", + "Cira", + "Clea", + "Cleopatra", + "Clodovea", + "Concetta", + "Cosetta", + "Cristyn", + "Damiana", + "Danuta", + "Deborah", + "Demi", + "Diamante", + "Diana", + "Donatella", + "Doriana", + "Edvige", + "Elda", + "Elga", + "Elsa", + "Emilia", + "Enrica", + "Erminia", + "Eufemia", + "Evita", + "Fatima", + "Felicia", + "Filomena", + "Flaviana", + "Fortunata", + "Gelsomina", + "Genziana", + "Giacinta", + "Gilda", + "Giovanna", + "Giulietta", + "Grazia", + "Guendalina", + "Helga", + "Ileana", + "Ingrid", + "Irene", + "Isabel", + "Isira", + "Ivonne", + "Jelena", + "Jole", + "Claudia", + "Kayla", + "Kristel", + "Laura", + "Lucia", + "Lia", + "Lidia", + "Lisa", + "Loredana", + "Loretta", + "Luce", + "Lucrezia", + "Luna", + "Maika", + "Marcella", + "Maria", + "Mariagiulia", + "Marianita", + "Mariapia", + "Marieva", + "Marina", + "Maristella", + "Maruska", + "Matilde", + "Mecren", + "Mercedes", + "Mietta", + "Miriana", + "Miriam", + "Monia", + "Morgana", + "Naomi", + "Nayade", + "Nicoletta", + "Ninfa", + "Noemi", + "Nunzia", + "Olimpia", + "Oretta", + "Ortensia", + "Penelope", + "Piccarda", + "Prisca", + "Rebecca", + "Rita", + "Rosalba", + "Rosaria", + "Rosita", + "Ruth", + "Samira", + "Sarita", + "Selvaggia", + "Shaira", + "Sibilla", + "Soriana", + "Thea", + "Tosca", + "Ursula", + "Vania", + "Vera", + "Vienna", + "Violante", + "Vitalba", + "Zelida" +]; + +},{}],657:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.name = require("./name"); + +},{"./first_name":656,"./last_name":658,"./name":659,"./prefix":660,"./suffix":661}],658:[function(require,module,exports){ +module["exports"] = [ + "Amato", + "Barbieri", + "Barone", + "Basile", + "Battaglia", + "Bellini", + "Benedetti", + "Bernardi", + "Bianc", + "Bianchi", + "Bruno", + "Caputo", + "Carbon", + "Caruso", + "Cattaneo", + "Colombo", + "Cont", + "Conte", + "Coppola", + "Costa", + "Costantin", + "D'amico", + "D'angelo", + "Damico", + "De Angelis", + "De luca", + "De rosa", + "De Santis", + "Donati", + "Esposito", + "Fabbri", + "Farin", + "Ferrara", + "Ferrari", + "Ferraro", + "Ferretti", + "Ferri", + "Fior", + "Fontana", + "Galli", + "Gallo", + "Gatti", + "Gentile", + "Giordano", + "Giuliani", + "Grassi", + "Grasso", + "Greco", + "Guerra", + "Leone", + "Lombardi", + "Lombardo", + "Longo", + "Mancini", + "Marchetti", + "Marian", + "Marini", + "Marino", + "Martinelli", + "Martini", + "Martino", + "Mazza", + "Messina", + "Milani", + "Montanari", + "Monti", + "Morelli", + "Moretti", + "Negri", + "Neri", + "Orlando", + "Pagano", + "Palmieri", + "Palumbo", + "Parisi", + "Pellegrini", + "Pellegrino", + "Piras", + "Ricci", + "Rinaldi", + "Riva", + "Rizzi", + "Rizzo", + "Romano", + "Ross", + "Rossetti", + "Ruggiero", + "Russo", + "Sala", + "Sanna", + "Santoro", + "Sartori", + "Serr", + "Silvestri", + "Sorrentino", + "Testa", + "Valentini", + "Villa", + "Vitale", + "Vitali" +]; + +},{}],659:[function(require,module,exports){ +arguments[4][593][0].apply(exports,arguments) +},{"dup":593}],660:[function(require,module,exports){ +module["exports"] = [ + "Sig.", + "Dott.", + "Dr.", + "Ing." +]; + +},{}],661:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],662:[function(require,module,exports){ +module["exports"] = [ + "+## ### ## ## ####", + "+## ## #######", + "+## ## ########", + "+## ### #######", + "+## ### ########", + "+## #### #######", + "+## #### ########", + "0## ### ####", + "+39 0## ### ###", + "3## ### ###", + "+39 3## ### ###" +]; + +},{}],663:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":662,"dup":108}],664:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix}#{Name.first_name}#{city_suffix}", + "#{Name.first_name}#{city_suffix}", + "#{city_prefix}#{Name.last_name}#{city_suffix}", + "#{Name.last_name}#{city_suffix}" +]; + +},{}],665:[function(require,module,exports){ +module["exports"] = [ + "北", + "東", + "西", + "南", + "新", + "湖", + "港" +]; + +},{}],666:[function(require,module,exports){ +module["exports"] = [ + "市", + "区", + "町", + "村" +]; + +},{}],667:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.city = require("./city"); +address.street_name = require("./street_name"); + +},{"./city":664,"./city_prefix":665,"./city_suffix":666,"./postcode":668,"./state":669,"./state_abbr":670,"./street_name":671}],668:[function(require,module,exports){ +module["exports"] = [ + "###-####" +]; + +},{}],669:[function(require,module,exports){ +module["exports"] = [ + "北海道", + "青森県", + "岩手県", + "宮城県", + "秋田県", + "山形県", + "福島県", + "茨城県", + "栃木県", + "群馬県", + "埼玉県", + "千葉県", + "東京都", + "神奈川県", + "新潟県", + "富山県", + "石川県", + "福井県", + "山梨県", + "長野県", + "岐阜県", + "静岡県", + "愛知県", + "三重県", + "滋賀県", + "京都府", + "大阪府", + "兵庫県", + "奈良県", + "和歌山県", + "鳥取県", + "島根県", + "岡山県", + "広島県", + "山口県", + "徳島県", + "香川県", + "愛媛県", + "高知県", + "福岡県", + "佐賀県", + "長崎県", + "熊本県", + "大分県", + "宮崎県", + "鹿児島県", + "沖縄県" +]; + +},{}],670:[function(require,module,exports){ +module["exports"] = [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "40", + "41", + "42", + "43", + "44", + "45", + "46", + "47" +]; + +},{}],671:[function(require,module,exports){ +module["exports"] = [ + "#{Name.first_name}#{street_suffix}", + "#{Name.last_name}#{street_suffix}" +]; + +},{}],672:[function(require,module,exports){ +module["exports"] = [ + "090-####-####", + "080-####-####", + "070-####-####" +]; + +},{}],673:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":672,"dup":167}],674:[function(require,module,exports){ +var ja = {}; +module['exports'] = ja; +ja.title = "Japanese"; +ja.address = require("./address"); +ja.phone_number = require("./phone_number"); +ja.cell_phone = require("./cell_phone"); +ja.name = require("./name"); + +},{"./address":667,"./cell_phone":673,"./name":676,"./phone_number":680}],675:[function(require,module,exports){ +module["exports"] = [ + "大翔", + "蓮", + "颯太", + "樹", + "大和", + "陽翔", + "陸斗", + "太一", + "海翔", + "蒼空", + "翼", + "陽菜", + "結愛", + "結衣", + "杏", + "莉子", + "美羽", + "結菜", + "心愛", + "愛菜", + "美咲" +]; + +},{}],676:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.last_name = require("./last_name"); +name.first_name = require("./first_name"); +name.name = require("./name"); + +},{"./first_name":675,"./last_name":677,"./name":678}],677:[function(require,module,exports){ +module["exports"] = [ + "佐藤", + "鈴木", + "高橋", + "田中", + "渡辺", + "伊藤", + "山本", + "中村", + "小林", + "加藤", + "吉田", + "山田", + "佐々木", + "山口", + "斎藤", + "松本", + "井上", + "木村", + "林", + "清水" +]; + +},{}],678:[function(require,module,exports){ +module["exports"] = [ + "#{last_name} #{first_name}" +]; + +},{}],679:[function(require,module,exports){ +module["exports"] = [ + "0####-#-####", + "0###-##-####", + "0##-###-####", + "0#-####-####" +]; + +},{}],680:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":679,"dup":108}],681:[function(require,module,exports){ +module["exports"] = [ + "#{city_name}#{city_suffix}" +]; + +},{}],682:[function(require,module,exports){ +module["exports"] = [ + "강릉", + "양양", + "인제", + "광주", + "구리", + "부천", + "밀양", + "통영", + "창원", + "거창", + "고성", + "양산", + "김천", + "구미", + "영주", + "광산", + "남", + "북", + "고창", + "군산", + "남원", + "동작", + "마포", + "송파", + "용산", + "부평", + "강화", + "수성" +]; + +},{}],683:[function(require,module,exports){ +module["exports"] = [ + "구", + "시", + "군" +]; + +},{}],684:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city_suffix = require("./city_suffix"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street_root = require("./street_root"); +address.street_suffix = require("./street_suffix"); +address.street_name = require("./street_name"); + +},{"./city":681,"./city_name":682,"./city_suffix":683,"./postcode":685,"./state":686,"./state_abbr":687,"./street_name":688,"./street_root":689,"./street_suffix":690}],685:[function(require,module,exports){ +module["exports"] = [ + "###-###" +]; + +},{}],686:[function(require,module,exports){ +module["exports"] = [ + "강원", + "경기", + "경남", + "경북", + "광주", + "대구", + "대전", + "부산", + "서울", + "울산", + "인천", + "전남", + "전북", + "제주", + "충남", + "충북", + "세종" +]; + +},{}],687:[function(require,module,exports){ +arguments[4][686][0].apply(exports,arguments) +},{"dup":686}],688:[function(require,module,exports){ +module["exports"] = [ + "#{street_root}#{street_suffix}" +]; + +},{}],689:[function(require,module,exports){ +module["exports"] = [ + "상계", + "화곡", + "신정", + "목", + "잠실", + "면목", + "주안", + "안양", + "중", + "정왕", + "구로", + "신월", + "연산", + "부평", + "창", + "만수", + "중계", + "검단", + "시흥", + "상도", + "방배", + "장유", + "상", + "광명", + "신길", + "행신", + "대명", + "동탄" +]; + +},{}],690:[function(require,module,exports){ +module["exports"] = [ + "읍", + "면", + "동" +]; + +},{}],691:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.prefix = require("./prefix"); +company.name = require("./name"); + +},{"./name":692,"./prefix":693,"./suffix":694}],692:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{Name.first_name}", + "#{Name.first_name} #{suffix}" +]; + +},{}],693:[function(require,module,exports){ +module["exports"] = [ + "주식회사", + "한국" +]; + +},{}],694:[function(require,module,exports){ +module["exports"] = [ + "연구소", + "게임즈", + "그룹", + "전자", + "물산", + "코리아" +]; + +},{}],695:[function(require,module,exports){ +var ko = {}; +module['exports'] = ko; +ko.title = "Korean"; +ko.address = require("./address"); +ko.phone_number = require("./phone_number"); +ko.company = require("./company"); +ko.internet = require("./internet"); +ko.lorem = require("./lorem"); +ko.name = require("./name"); + +},{"./address":684,"./company":691,"./internet":698,"./lorem":699,"./name":702,"./phone_number":706}],696:[function(require,module,exports){ +module["exports"] = [ + "co.kr", + "com", + "biz", + "info", + "ne.kr", + "net", + "or.kr", + "org" +]; + +},{}],697:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.co.kr", + "hanmail.net", + "naver.com" +]; + +},{}],698:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":696,"./free_email":697,"dup":98}],699:[function(require,module,exports){ +arguments[4][176][0].apply(exports,arguments) +},{"./words":700,"dup":176}],700:[function(require,module,exports){ +module["exports"] = [ + "국가는", + "법률이", + "정하는", + "바에", + "의하여", + "재외국민을", + "보호할", + "의무를", + "진다.", + "모든", + "국민은", + "신체의", + "자유를", + "가진다.", + "국가는", + "전통문화의", + "계승·발전과", + "민족문화의", + "창달에", + "노력하여야", + "한다.", + "통신·방송의", + "시설기준과", + "신문의", + "기능을", + "보장하기", + "위하여", + "필요한", + "사항은", + "법률로", + "정한다.", + "헌법에", + "의하여", + "체결·공포된", + "조약과", + "일반적으로", + "승인된", + "국제법규는", + "국내법과", + "같은", + "효력을", + "가진다.", + "다만,", + "현행범인인", + "경우와", + "장기", + "3년", + "이상의", + "형에", + "해당하는", + "죄를", + "범하고", + "도피", + "또는", + "증거인멸의", + "염려가", + "있을", + "때에는", + "사후에", + "영장을", + "청구할", + "수", + "있다.", + "저작자·발명가·과학기술자와", + "예술가의", + "권리는", + "법률로써", + "보호한다.", + "형사피고인은", + "유죄의", + "판결이", + "확정될", + "때까지는", + "무죄로", + "추정된다.", + "모든", + "국민은", + "행위시의", + "법률에", + "의하여", + "범죄를", + "구성하지", + "아니하는", + "행위로", + "소추되지", + "아니하며,", + "동일한", + "범죄에", + "대하여", + "거듭", + "처벌받지", + "아니한다.", + "국가는", + "평생교육을", + "진흥하여야", + "한다.", + "모든", + "국민은", + "사생활의", + "비밀과", + "자유를", + "침해받지", + "아니한다.", + "의무교육은", + "무상으로", + "한다.", + "저작자·발명가·과학기술자와", + "예술가의", + "권리는", + "법률로써", + "보호한다.", + "국가는", + "모성의", + "보호를", + "위하여", + "노력하여야", + "한다.", + "헌법에", + "의하여", + "체결·공포된", + "조약과", + "일반적으로", + "승인된", + "국제법규는", + "국내법과", + "같은", + "효력을", + "가진다." +]; + +},{}],701:[function(require,module,exports){ +module["exports"] = [ + "서연", + "민서", + "서현", + "지우", + "서윤", + "지민", + "수빈", + "하은", + "예은", + "윤서", + "민준", + "지후", + "지훈", + "준서", + "현우", + "예준", + "건우", + "현준", + "민재", + "우진", + "은주" +]; + +},{}],702:[function(require,module,exports){ +arguments[4][676][0].apply(exports,arguments) +},{"./first_name":701,"./last_name":703,"./name":704,"dup":676}],703:[function(require,module,exports){ +module["exports"] = [ + "김", + "이", + "박", + "최", + "정", + "강", + "조", + "윤", + "장", + "임", + "오", + "한", + "신", + "서", + "권", + "황", + "안", + "송", + "류", + "홍" +]; + +},{}],704:[function(require,module,exports){ +arguments[4][678][0].apply(exports,arguments) +},{"dup":678}],705:[function(require,module,exports){ +module["exports"] = [ + "0#-#####-####", + "0##-###-####", + "0##-####-####" +]; + +},{}],706:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":705,"dup":108}],707:[function(require,module,exports){ +module["exports"] = [ + "#", + "##" +]; + +},{}],708:[function(require,module,exports){ +module["exports"] = [ + "#{city_root}#{city_suffix}" +]; + +},{}],709:[function(require,module,exports){ +module["exports"] = [ + "Fet", + "Gjes", + "Høy", + "Inn", + "Fager", + "Lille", + "Lo", + "Mal", + "Nord", + "Nær", + "Sand", + "Sme", + "Stav", + "Stor", + "Tand", + "Ut", + "Vest" +]; + +},{}],710:[function(require,module,exports){ +module["exports"] = [ + "berg", + "borg", + "by", + "bø", + "dal", + "eid", + "fjell", + "fjord", + "foss", + "grunn", + "hamn", + "havn", + "helle", + "mark", + "nes", + "odden", + "sand", + "sjøen", + "stad", + "strand", + "strøm", + "sund", + "vik", + "vær", + "våg", + "ø", + "øy", + "ås" +]; + +},{}],711:[function(require,module,exports){ +module["exports"] = [ + "sgate", + "svei", + "s Gate", + "s Vei", + "gata", + "veien" +]; + +},{}],712:[function(require,module,exports){ +module["exports"] = [ + "Norge" +]; + +},{}],713:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_root = require("./city_root"); +address.city_suffix = require("./city_suffix"); +address.street_prefix = require("./street_prefix"); +address.street_root = require("./street_root"); +address.street_suffix = require("./street_suffix"); +address.common_street_suffix = require("./common_street_suffix"); +address.building_number = require("./building_number"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":707,"./city":708,"./city_root":709,"./city_suffix":710,"./common_street_suffix":711,"./default_country":712,"./postcode":714,"./secondary_address":715,"./state":716,"./street_address":717,"./street_name":718,"./street_prefix":719,"./street_root":720,"./street_suffix":721}],714:[function(require,module,exports){ +module["exports"] = [ + "####", + "####", + "####", + "0###" +]; + +},{}],715:[function(require,module,exports){ +module["exports"] = [ + "Leil. ###", + "Oppgang A", + "Oppgang B" +]; + +},{}],716:[function(require,module,exports){ +module["exports"] = [ + "" +]; + +},{}],717:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],718:[function(require,module,exports){ +module["exports"] = [ + "#{street_root}#{street_suffix}", + "#{street_prefix} #{street_root}#{street_suffix}", + "#{Name.first_name}#{common_street_suffix}", + "#{Name.last_name}#{common_street_suffix}" +]; + +},{}],719:[function(require,module,exports){ +module["exports"] = [ + "Øvre", + "Nedre", + "Søndre", + "Gamle", + "Østre", + "Vestre" +]; + +},{}],720:[function(require,module,exports){ +module["exports"] = [ + "Eike", + "Bjørke", + "Gran", + "Vass", + "Furu", + "Litj", + "Lille", + "Høy", + "Fosse", + "Elve", + "Ku", + "Konvall", + "Soldugg", + "Hestemyr", + "Granitt", + "Hegge", + "Rogne", + "Fiol", + "Sol", + "Ting", + "Malm", + "Klokker", + "Preste", + "Dam", + "Geiterygg", + "Bekke", + "Berg", + "Kirke", + "Kors", + "Bru", + "Blåveis", + "Torg", + "Sjø" +]; + +},{}],721:[function(require,module,exports){ +module["exports"] = [ + "alléen", + "bakken", + "berget", + "bråten", + "eggen", + "engen", + "ekra", + "faret", + "flata", + "gata", + "gjerdet", + "grenda", + "gropa", + "hagen", + "haugen", + "havna", + "holtet", + "høgda", + "jordet", + "kollen", + "kroken", + "lia", + "lunden", + "lyngen", + "løkka", + "marka", + "moen", + "myra", + "plassen", + "ringen", + "roa", + "røa", + "skogen", + "skrenten", + "spranget", + "stien", + "stranda", + "stubben", + "stykket", + "svingen", + "tjernet", + "toppen", + "tunet", + "vollen", + "vika", + "åsen" +]; + +},{}],722:[function(require,module,exports){ +arguments[4][221][0].apply(exports,arguments) +},{"./name":723,"./suffix":724,"dup":221}],723:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name}-#{Name.last_name}", + "#{Name.last_name}, #{Name.last_name} og #{Name.last_name}" +]; + +},{}],724:[function(require,module,exports){ +module["exports"] = [ + "Gruppen", + "AS", + "ASA", + "BA", + "RFH", + "og Sønner" +]; + +},{}],725:[function(require,module,exports){ +var nb_NO = {}; +module['exports'] = nb_NO; +nb_NO.title = "Norwegian"; +nb_NO.address = require("./address"); +nb_NO.company = require("./company"); +nb_NO.internet = require("./internet"); +nb_NO.name = require("./name"); +nb_NO.phone_number = require("./phone_number"); + +},{"./address":713,"./company":722,"./internet":727,"./name":730,"./phone_number":737}],726:[function(require,module,exports){ +module["exports"] = [ + "no", + "com", + "net", + "org" +]; + +},{}],727:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":726,"dup":226}],728:[function(require,module,exports){ +module["exports"] = [ + "Emma", + "Sara", + "Thea", + "Ida", + "Julie", + "Nora", + "Emilie", + "Ingrid", + "Hanna", + "Maria", + "Sofie", + "Anna", + "Malin", + "Amalie", + "Vilde", + "Frida", + "Andrea", + "Tuva", + "Victoria", + "Mia", + "Karoline", + "Mathilde", + "Martine", + "Linnea", + "Marte", + "Hedda", + "Marie", + "Helene", + "Silje", + "Leah", + "Maja", + "Elise", + "Oda", + "Kristine", + "Aurora", + "Kaja", + "Camilla", + "Mari", + "Maren", + "Mina", + "Selma", + "Jenny", + "Celine", + "Eline", + "Sunniva", + "Natalie", + "Tiril", + "Synne", + "Sandra", + "Madeleine" +]; + +},{}],729:[function(require,module,exports){ +module["exports"] = [ + "Emma", + "Sara", + "Thea", + "Ida", + "Julie", + "Nora", + "Emilie", + "Ingrid", + "Hanna", + "Maria", + "Sofie", + "Anna", + "Malin", + "Amalie", + "Vilde", + "Frida", + "Andrea", + "Tuva", + "Victoria", + "Mia", + "Karoline", + "Mathilde", + "Martine", + "Linnea", + "Marte", + "Hedda", + "Marie", + "Helene", + "Silje", + "Leah", + "Maja", + "Elise", + "Oda", + "Kristine", + "Aurora", + "Kaja", + "Camilla", + "Mari", + "Maren", + "Mina", + "Selma", + "Jenny", + "Celine", + "Eline", + "Sunniva", + "Natalie", + "Tiril", + "Synne", + "Sandra", + "Madeleine", + "Markus", + "Mathias", + "Kristian", + "Jonas", + "Andreas", + "Alexander", + "Martin", + "Sander", + "Daniel", + "Magnus", + "Henrik", + "Tobias", + "Kristoffer", + "Emil", + "Adrian", + "Sebastian", + "Marius", + "Elias", + "Fredrik", + "Thomas", + "Sondre", + "Benjamin", + "Jakob", + "Oliver", + "Lucas", + "Oskar", + "Nikolai", + "Filip", + "Mats", + "William", + "Erik", + "Simen", + "Ole", + "Eirik", + "Isak", + "Kasper", + "Noah", + "Lars", + "Joakim", + "Johannes", + "Håkon", + "Sindre", + "Jørgen", + "Herman", + "Anders", + "Jonathan", + "Even", + "Theodor", + "Mikkel", + "Aksel" +]; + +},{}],730:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.feminine_name = require("./feminine_name"); +name.masculine_name = require("./masculine_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.name = require("./name"); + +},{"./feminine_name":728,"./first_name":729,"./last_name":731,"./masculine_name":732,"./name":733,"./prefix":734,"./suffix":735}],731:[function(require,module,exports){ +module["exports"] = [ + "Johansen", + "Hansen", + "Andersen", + "Kristiansen", + "Larsen", + "Olsen", + "Solberg", + "Andresen", + "Pedersen", + "Nilsen", + "Berg", + "Halvorsen", + "Karlsen", + "Svendsen", + "Jensen", + "Haugen", + "Martinsen", + "Eriksen", + "Sørensen", + "Johnsen", + "Myhrer", + "Johannessen", + "Nielsen", + "Hagen", + "Pettersen", + "Bakke", + "Skuterud", + "Løken", + "Gundersen", + "Strand", + "Jørgensen", + "Kvarme", + "Røed", + "Sæther", + "Stensrud", + "Moe", + "Kristoffersen", + "Jakobsen", + "Holm", + "Aas", + "Lie", + "Moen", + "Andreassen", + "Vedvik", + "Nguyen", + "Jacobsen", + "Torgersen", + "Ruud", + "Krogh", + "Christiansen", + "Bjerke", + "Aalerud", + "Borge", + "Sørlie", + "Berge", + "Østli", + "Ødegård", + "Torp", + "Henriksen", + "Haukelidsæter", + "Fjeld", + "Danielsen", + "Aasen", + "Fredriksen", + "Dahl", + "Berntsen", + "Arnesen", + "Wold", + "Thoresen", + "Solheim", + "Skoglund", + "Bakken", + "Amundsen", + "Solli", + "Smogeli", + "Kristensen", + "Glosli", + "Fossum", + "Evensen", + "Eide", + "Carlsen", + "Østby", + "Vegge", + "Tangen", + "Smedsrud", + "Olstad", + "Lunde", + "Kleven", + "Huseby", + "Bjørnstad", + "Ryan", + "Rasmussen", + "Nygård", + "Nordskaug", + "Nordby", + "Mathisen", + "Hopland", + "Gran", + "Finstad", + "Edvardsen" +]; + +},{}],732:[function(require,module,exports){ +module["exports"] = [ + "Markus", + "Mathias", + "Kristian", + "Jonas", + "Andreas", + "Alexander", + "Martin", + "Sander", + "Daniel", + "Magnus", + "Henrik", + "Tobias", + "Kristoffer", + "Emil", + "Adrian", + "Sebastian", + "Marius", + "Elias", + "Fredrik", + "Thomas", + "Sondre", + "Benjamin", + "Jakob", + "Oliver", + "Lucas", + "Oskar", + "Nikolai", + "Filip", + "Mats", + "William", + "Erik", + "Simen", + "Ole", + "Eirik", + "Isak", + "Kasper", + "Noah", + "Lars", + "Joakim", + "Johannes", + "Håkon", + "Sindre", + "Jørgen", + "Herman", + "Anders", + "Jonathan", + "Even", + "Theodor", + "Mikkel", + "Aksel" +]; + +},{}],733:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name}", + "#{first_name} #{last_name} #{suffix}", + "#{feminine_name} #{feminine_name} #{last_name}", + "#{masculine_name} #{masculine_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name}" +]; + +},{}],734:[function(require,module,exports){ +module["exports"] = [ + "Dr.", + "Prof." +]; + +},{}],735:[function(require,module,exports){ +module["exports"] = [ + "Jr.", + "Sr.", + "I", + "II", + "III", + "IV", + "V" +]; + +},{}],736:[function(require,module,exports){ +module["exports"] = [ + "########", + "## ## ## ##", + "### ## ###", + "+47 ## ## ## ##" +]; + +},{}],737:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":736,"dup":108}],738:[function(require,module,exports){ +module["exports"] = [ + "Bhaktapur", + "Biratnagar", + "Birendranagar", + "Birgunj", + "Butwal", + "Damak", + "Dharan", + "Gaur", + "Gorkha", + "Hetauda", + "Itahari", + "Janakpur", + "Kathmandu", + "Lahan", + "Nepalgunj", + "Pokhara" +]; + +},{}],739:[function(require,module,exports){ +module["exports"] = [ + "Nepal" +]; + +},{}],740:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.postcode = require("./postcode"); +address.state = require("./state"); +address.city = require("./city"); +address.default_country = require("./default_country"); + +},{"./city":738,"./default_country":739,"./postcode":741,"./state":742}],741:[function(require,module,exports){ +module["exports"] = [ + 0 +]; + +},{}],742:[function(require,module,exports){ +module["exports"] = [ + "Baglung", + "Banke", + "Bara", + "Bardiya", + "Bhaktapur", + "Bhojupu", + "Chitwan", + "Dailekh", + "Dang", + "Dhading", + "Dhankuta", + "Dhanusa", + "Dolakha", + "Dolpha", + "Gorkha", + "Gulmi", + "Humla", + "Ilam", + "Jajarkot", + "Jhapa", + "Jumla", + "Kabhrepalanchok", + "Kalikot", + "Kapilvastu", + "Kaski", + "Kathmandu", + "Lalitpur", + "Lamjung", + "Manang", + "Mohottari", + "Morang", + "Mugu", + "Mustang", + "Myagdi", + "Nawalparasi", + "Nuwakot", + "Palpa", + "Parbat", + "Parsa", + "Ramechhap", + "Rauswa", + "Rautahat", + "Rolpa", + "Rupandehi", + "Sankhuwasabha", + "Sarlahi", + "Sindhuli", + "Sindhupalchok", + "Sunsari", + "Surket", + "Syangja", + "Tanahu", + "Terhathum" +]; + +},{}],743:[function(require,module,exports){ +arguments[4][334][0].apply(exports,arguments) +},{"./suffix":744,"dup":334}],744:[function(require,module,exports){ +module["exports"] = [ + "Pvt Ltd", + "Group", + "Ltd", + "Limited" +]; + +},{}],745:[function(require,module,exports){ +var nep = {}; +module['exports'] = nep; +nep.title = "Nepalese"; +nep.name = require("./name"); +nep.address = require("./address"); +nep.internet = require("./internet"); +nep.company = require("./company"); +nep.phone_number = require("./phone_number"); + +},{"./address":740,"./company":743,"./internet":748,"./name":750,"./phone_number":753}],746:[function(require,module,exports){ +module["exports"] = [ + "np", + "com", + "info", + "net", + "org" +]; + +},{}],747:[function(require,module,exports){ +module["exports"] = [ + "worldlink.com.np", + "gmail.com", + "yahoo.com", + "hotmail.com" +]; + +},{}],748:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":746,"./free_email":747,"dup":98}],749:[function(require,module,exports){ +module["exports"] = [ + "Aarav", + "Ajita", + "Amit", + "Amita", + "Amrit", + "Arijit", + "Ashmi", + "Asmita", + "Bibek", + "Bijay", + "Bikash", + "Bina", + "Bishal", + "Bishnu", + "Buddha", + "Deepika", + "Dipendra", + "Gagan", + "Ganesh", + "Khem", + "Krishna", + "Laxmi", + "Manisha", + "Nabin", + "Nikita", + "Niraj", + "Nischal", + "Padam", + "Pooja", + "Prabin", + "Prakash", + "Prashant", + "Prem", + "Purna", + "Rajendra", + "Rajina", + "Raju", + "Rakesh", + "Ranjan", + "Ratna", + "Sagar", + "Sandeep", + "Sanjay", + "Santosh", + "Sarita", + "Shilpa", + "Shirisha", + "Shristi", + "Siddhartha", + "Subash", + "Sumeet", + "Sunita", + "Suraj", + "Susan", + "Sushant" +]; + +},{}],750:[function(require,module,exports){ +arguments[4][340][0].apply(exports,arguments) +},{"./first_name":749,"./last_name":751,"dup":340}],751:[function(require,module,exports){ +module["exports"] = [ + "Adhikari", + "Aryal", + "Baral", + "Basnet", + "Bastola", + "Basynat", + "Bhandari", + "Bhattarai", + "Chettri", + "Devkota", + "Dhakal", + "Dongol", + "Ghale", + "Gurung", + "Gyawali", + "Hamal", + "Jung", + "KC", + "Kafle", + "Karki", + "Khadka", + "Koirala", + "Lama", + "Limbu", + "Magar", + "Maharjan", + "Niroula", + "Pandey", + "Pradhan", + "Rana", + "Raut", + "Sai", + "Shai", + "Shakya", + "Sherpa", + "Shrestha", + "Subedi", + "Tamang", + "Thapa" +]; + +},{}],752:[function(require,module,exports){ +module["exports"] = [ + "##-#######", + "+977-#-#######", + "+977########" +]; + +},{}],753:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":752,"dup":108}],754:[function(require,module,exports){ +module["exports"] = [ + "#", + "##", + "###", + "###a", + "###b", + "###c", + "### I", + "### II", + "### III" +]; + +},{}],755:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix}#{city_suffix}", + "#{city_prefix}" +]; + +},{}],756:[function(require,module,exports){ +module["exports"] = [ + "Aagte", + "Aal", + "Aalden", + "Aals", + "Aalst", + "Aalsum", + "Aanschot", + "Aarden", + "Aarle", + "Abbe", + "Abbegea", + "Abben", + "Abbestede", + "Abcoven", + "Absdale", + "Abts", + "Acht", + "Achter", + "Achterste", + "Achtmaal", + "Achttien", + "Acquoy", + "Aduard", + "Aduarder", + "Aekinga", + "Aerde", + "Aerden", + "Aerdt", + "Afferden", + "Aijen", + "Akersloot", + "Akker", + "Akkerput", + "Akkrun", + "Akmarijp", + "Aldeboarn", + "Aldegae", + "Aldtsjerk", + "Aling", + "Alkmaar", + "Allersma", + "Allinga", + "Almere", + "Alphen", + "Altena", + "Alteveer", + "Alting", + "Altweert", + "Alverna", + "Ameide", + "Amerika", + "Amerongen", + "Ammerstol", + "Ams", + "Amster", + "Andel", + "Angeren", + "Anholt", + "Anjum", + "Anke", + "Ankum", + "Anna", + "Annendaal", + "Anneville", + "Anreep", + "Ansen", + "Apeldoorn", + "Apen", + "Appel", + "Appen", + "Arcen", + "Archem", + "Arendnest", + "Arensge", + "Arkens", + "Armweide", + "Arnhem", + "Arnoud", + "Arriën", + "Arriër", + "Arum", + "Arwerd", + "Asch", + "Asenray", + "Asperen", + "Asschat", + "Assel", + "Asselt", + "Assen", + "Asten", + "Atze", + "Augs", + "Averlo", + "Avest", + "Azelo", + "Azewijn", + "Ba", + "Baaium", + "Baak", + "Baaks", + "Baal", + "Baamsum", + "Baan", + "Baard", + "Baarder", + "Baarle", + "Baarlo", + "Baars", + "Baarschot", + "Baexem", + "Baflo", + "Bahr", + "Bakel", + "Bakelse", + "Bakertand", + "Bakke", + "Bakkerom", + "Balgoij", + "Balinge", + "Ballast", + "Balleman", + "Ballum", + "Balma", + "Bane", + "Bankert", + "Bantega", + "Bare", + "Bargebek", + "Barlage", + "Barlaque", + "Barlo", + "Barnflair", + "Barrier", + "Bars", + "Basse", + "Basser", + "Baten", + "Bath", + "Bathmen", + "Bavinkel", + "Bazuin", + "Bears", + "Beckum", + "Bedaf", + "Bedum", + "Beekb", + "Beekkant", + "Beemdkant", + "Beemte", + "Beertsen", + "Beerze", + "Beerzer", + "Beesd", + "Beetgum", + "Beetgumer", + "Behelp", + "Beilen", + "Beinum", + "Beke", + "Beldert", + "Belgen", + "Belgeren", + "Belt", + "Belvert", + "Bemmel", + "Bemmer", + "Benderse", + "Beneden", + "Benne", + "Bennekom", + "Bent", + "Bente", + "Benthem", + "Berg", + "Bergakker", + "Bergen", + "Bergens", + "Bergerden", + "Bergharen", + "Berghem", + "Berghum", + "Bergstoep", + "Berik", + "Beringe", + "Berk", + "Berke", + "Berken", + "Berkt", + "Berlicum", + "Bern", + "Besse", + "Besthmen", + "Beswerd", + "Bethlehem", + "Beugt", + "Beuke", + "Beun", + "Beusb", + "Beusichem", + "Bever", + "Bidding", + "Biert", + "Bierum", + "Biessum", + "Biest", + "Biezen", + "Bigge", + "Bijster", + "Bijsteren", + "Billing", + "Bilt", + "Bingerden", + "Bisselt", + "Bissen", + "Blaker", + "Blaricum", + "Blauhûs", + "Blauw", + "Blauwe", + "Blauwen", + "Bleijen", + "Bleijs", + "Blekslage", + "Blenkert", + "Blerick", + "Blessum", + "Blije", + "Blijham", + "Blijnse", + "Blok", + "Blokken", + "Blokum", + "Boazum", + "Boberden", + "Bocholtz", + "Bocht", + "Boeiink", + "Boek", + "Boekel", + "Boekelo", + "Boekelte", + "Boekend", + "Boer", + "Boerakker", + "Boerelaan", + "Boeren", + "Boerengat", + "Boerenhol", + "Boerhaar", + "Boijl", + "Boks", + "Boksum", + "Bokt", + "Bollinga", + "Bols", + "Bolst", + "Bolt", + "Bommerig", + "Bong", + "Bonkwert", + "Bonner", + "Bonrepas", + "Bontebok", + "Boomen", + "Boord", + "Borger", + "Borgharen", + "Borgs", + "Borgweg", + "Borkel", + "Borkeld", + "Born", + "Borne", + "Borneo", + "Bornwird", + "Bos", + "Boschkens", + "Bosje", + "Bosjes", + "Boskamp", + "Boskant", + "Boskoop", + "Boslust", + "Bosschen", + "Bosscher", + "Bosven", + "Boter", + "Botshoofd", + "Boukoul", + "Bourtange", + "Boven", + "Bovenstad", + "Boxtel", + "Braak", + "Braamt", + "Brabander", + "Brakel", + "Brand", + "Brande", + "Brandt", + "Brantgum", + "Breda", + "Brede", + "Bree", + "Breede", + "Breedeweg", + "Breehees", + "Breezand", + "Brem", + "Breskens", + "Breugel", + "Breukele", + "Breyvin", + "Brielle", + "Brigdamme", + "Brij", + "Brillerij", + "Briltil", + "Brinkmans", + "Britsum", + "Britswert", + "Broek", + "Broekens", + "Broekkant", + "Brommelen", + "Brons", + "Bruchem", + "Bruggen", + "Brugger", + "Bruil", + "Bruinisse", + "Bruister", + "Brumhold", + "Brunssum", + "Brunsting", + "Bruntinge", + "Buchten", + "Buggenum", + "Buis", + "Buiten", + "Bulkenaar", + "Bult", + "Bultinge", + "Bunne", + "Bunnik", + "Burdaard", + "Burger", + "Burgh", + "Burgt", + "Burgum", + "Burgwerd", + "Burstum", + "Burum", + "Bussel", + "Busselte", + "Busser", + "Buttinge", + "Buurtje", + "Cadier", + "Cadzand", + "Calfven", + "Calslagen", + "Caluna", + "Camerig", + "Capelle", + "Carnisse", + "Cartils", + "Castelré", + "Castenray", + "Castert", + "Castricum", + "Catsop", + "Chaam", + "Clinge", + "Coevorden", + "Colmont", + "Cornjum", + "Cornwerd", + "Cottessen", + "Crapoel", + "Crau", + "Crix", + "Crob", + "Croy", + "Culemborg", + "Daarle", + "Dale", + "Dalem", + "Dalen", + "Daler", + "Dalerend", + "Dalerpeel", + "Dallinge", + "Damwâld", + "Daniken", + "Darp", + "Dassemus", + "Dearsum", + "Dedgum", + "Deelen", + "Deelse", + "Deelshurk", + "Deense", + "Deest", + "Deil", + "Deinum", + "Dekes", + "Dekkers", + "Del", + "Delden", + "Delf", + "Delft", + "Dellen", + "Delwijnen", + "Demen", + "Den ", + "Deursen", + "Deuteren", + "Deventer", + "Dieden", + "Diemen", + "Diepen", + "Diependal", + "Diepswal", + "Diermen", + "Dieskant", + "Dieteren", + "Diever", + "Dijken", + "Dijker", + "Dijkster", + "Dijkwel", + "Dintelsas", + "Dinther", + "Dintherse", + "Diphoorn", + "Dirkshorn", + "Dis", + "Diunt", + "Doenrade", + "Does", + "Doeveren", + "Doezum", + "Doijum", + "Dokkum", + "Doldersum", + "Dom", + "Dommelen", + "Donderen", + "Dongen", + "Donia", + "Doniaga", + "Donzel", + "Dood", + "Doodstil", + "Doon", + "Doorn", + "Doornen", + "Doornik", + "Doorning", + "Doorwerth", + "Doosje", + "Dorkwerd", + "Dorst", + "Dorther", + "Douverge", + "Douwen", + "Draai", + "Drachten", + "Dreischor", + "Drie", + "Drieboere", + "Driehuis", + "Driene", + "Dries", + "Driewegen", + "Driezum", + "Drieën", + "Drijber", + "Drimmelen", + "Drogeham", + "Drogt", + "Dronrijp", + "Dronten", + "Druif", + "Drunen", + "Druten", + "Drylts", + "Duifhuis", + "Duinen", + "Duiven", + "Duizel", + "Duizend", + "Dulder", + "Dunsborg", + "Dussen", + "Duur", + "Duurends", + "Eagum", + "Earnewâld", + "Easterein", + "Eastermar", + "Easthim", + "Echt", + "Echten", + "Echtener", + "Echter", + "Eder", + "Eede", + "Eefsele", + "Eekt", + "Eekwerd", + "Eelde", + "Eelen", + "Eems", + "Eemster", + "Eemten", + "Een", + "Eenigen", + "Eenrum", + "Eenum", + "Eerde", + "Eersel", + "Eerste", + "Ees", + "Eesterga", + "Effen", + "Egchel", + "Egede", + "Egmond", + "Egypte", + "Eikelen", + "Eikelhof", + "Eimeren", + "Eindewege", + "Eindje", + "Ekamp", + "Elde", + "Elden", + "Eldik", + "Eldrik", + "Elft", + "Elkerzee", + "Ellemeet", + "Eller", + "Ellerhei", + "Ellersing", + "Elsen", + "Elshof", + "Elspeet", + "Elst", + "Elsteren", + "Elzet", + "Emmeloord", + "Emmen", + "Empel", + "Endepoel", + "Eng", + "Enge", + "Engel", + "Engelbert", + "Engelen", + "Engelum", + "Englum", + "Engwegen", + "Engwierum", + "Enk", + "Enschedé", + "Enspijk", + "Enumatil", + "Enzelens", + "Eper", + "Eppen", + "Erichem", + "Erlecom", + "Ermelo", + "Ermer", + "Escharen", + "Eschoten", + "Espelo", + "Essen", + "Etenaken", + "Etzenrade", + "Eursing", + "Eursinge", + "Euverem", + "Ever", + "Everd", + "Everlo", + "Everse", + "Ewer", + "Ewinkel", + "Exmorra", + "Eygels", + "Eyser", + "Ezinge", + "Ezuma", + "Faan", + "Falom", + "Farmsum", + "Fatum", + "Feerwerd", + "Fel", + "Ferwert", + "Fiemel", + "Fijfhûs", + "Finke", + "Finkum", + "Flieren", + "Flânsum", + "Fokkers", + "Follega", + "Folsgeare", + "Formerum", + "Fort", + "Fortmond", + "Foudgum", + "Fraamklap", + "Frankhuis", + "Frankrijk", + "Fransum", + "Friens", + "Frytum", + "Fûns", + "Gaag", + "Gaanderen", + "Gaar", + "Gaast", + "Gaasten", + "Gaastmar", + "Gaete", + "Gagel", + "Galder", + "Gameren", + "Gammelke", + "Ganzert", + "Gapinge", + "Garminge", + "Garnwerd", + "Garre", + "Garrels", + "Garst", + "Garyp", + "Gassel", + "Gasthuis", + "Gawege", + "Gebergte", + "Geefs", + "Geen", + "Geer", + "Gees", + "Geeuwen", + "Geffen", + "Gelders", + "Gelderse", + "Geleen", + "Gelkenes", + "Gellicum", + "Gemaal", + "Gement", + "Gemert", + "Gemonde", + "Gendt", + "Geneijgen", + "Genen", + "Gening", + "Genne", + "Gennep", + "Genooi", + "Gerheggen", + "Gerner", + "Gersloot", + "Gerven", + "Gerwen", + "Geulhem", + "Gever", + "Geverik", + "Gewande", + "Giers", + "Giessen", + "Gietelo", + "Giethmen", + "Giethoorn", + "Gijbe", + "Gijsselte", + "Gijzel", + "Gilze", + "Ginkel", + "Ginnum", + "Glaner", + "Goaiïngea", + "Godlinze", + "Goes", + "Goilberd", + "Goirle", + "Goldhoorn", + "Gooium", + "Goor", + "Gorinchem", + "Gorp", + "Gortel", + "Gouda", + "Gouderak", + "Goudseweg", + "Goënga", + "Graaf", + "Graauw", + "Gracht", + "Graet", + "Graf", + "Grafwegen", + "Gras", + "Graspeel", + "Graszode", + "Grathem", + "Grauwe", + "Grave", + "Grazen", + "Greonterp", + "Greup", + "Griete", + "Grijps", + "Grits", + "Groe", + "Groede", + "Groen", + "Groenekan", + "Groeneweg", + "Groenlo", + "Groep", + "Groes", + "Groessen", + "Groet", + "Groeve", + "Groeze", + "Gron", + "Groot", + "Groote", + "Grote", + "Grotel", + "Grou", + "Gytsjerk", + "Haaften", + "Haag", + "Haagje", + "Haaks", + "Haakswold", + "Haalderen", + "Haalweide", + "Haamstede", + "Haandrik", + "Haar", + "Haarlem", + "Haarsteeg", + "Haart", + "Haelen", + "Haerst", + "Hagestein", + "Haiink", + "Halder", + "Haler", + "Half", + "Halfmijl", + "Halfweg", + "Halle", + "Haller", + "Hallum", + "Halte", + "Halvink", + "Hamrik", + "Hamshorn", + "Handel", + "Hane", + "Hank", + "Hankate", + "Hansweert", + "Hantum", + "Hantumer", + "Harculo", + "Harde", + "Hardinx", + "Haren", + "Harener", + "Haring", + "Harke", + "Harkema", + "Harl", + "Harles", + "Harpel", + "Harre", + "Harse", + "Harskamp", + "Harssens", + "Hartwerd", + "Haspel", + "Hasselt", + "Hasselter", + "Hatte", + "Hattem", + "Hauwert", + "Havelt", + "Havelte", + "Hayum", + "Haze", + "Hazenhurk", + "Hazennest", + "Heaburgen", + "Hedel", + "Hedik", + "Heech", + "Heegher", + "Heek", + "Heelsum", + "Heems", + "Heemstede", + "Heenweg", + "Heer", + "Heerde", + "Heere", + "Heeren", + "Heers", + "Hees", + "Heesakker", + "Heesbeen", + "Heesboom", + "Heesch", + "Heesselt", + "Heet", + "Heezeren", + "Hefswal", + "Hegge", + "Hei", + "Heiakker", + "Heibloem", + "Heid", + "Heide", + "Heidekant", + "Heiden", + "Heier", + "Heihoefke", + "Heij", + "Heijen", + "Heikant", + "Heikantse", + "Heille", + "Heine", + "Heioord", + "Heister", + "Heitrak", + "Hekel", + "Hekkum", + "Hel", + "Helden", + "Helkant", + "Hell", + "Helle", + "Hellegat", + "Hellen", + "Hellevoet", + "Helling", + "Hellouw", + "Helwerd", + "Hemert", + "Hemrik", + "Hendrik", + "Henge", + "Herfte", + "Herike", + "Herk", + "Herken", + "Hermalen", + "Hernen", + "Herpen", + "Herpt", + "Hersel", + "Hersend", + "Hert", + "Herten", + "Hertme", + "Herveld", + "Herwen", + "Herwijnen", + "Herxen", + "Hesens", + "Hespe", + "Hessum", + "Heugde", + "Heukelom", + "Heukelum", + "Heult", + "Heumen", + "Heure", + "Heurne", + "Heusden", + "Heuvel", + "Heuvels", + "Heuveltje", + "Hexel", + "Heze", + "Hiaure", + "Hichtum", + "Hidaard", + "Hien", + "Hierden", + "Hieslum", + "Hijken", + "Hijum", + "Hilaard", + "Hilakker", + "Hild", + "Hill", + "Hilte", + "Hilversum", + "Hinnaard", + "Hintham", + "Hitsertse", + "Hodenpijl", + "Hoef", + "Hoefkens", + "Hoek", + "Hoekdries", + "Hoekelum", + "Hoekens", + "Hoekje", + "Hoeks", + "Hoekske", + "Hoetmans", + "Hoeve", + "Hoeven", + "Hoeves", + "Hoge", + "Hogert", + "Hogeweg", + "Holker", + "Hollum", + "Holm", + "Holset", + "Holsloot", + "Holst", + "Holt", + "Holte", + "Holten", + "Holter", + "Holthe", + "Holtien", + "Holtinge", + "Holtum", + "Holwerd", + "Holwierde", + "Holwinde", + "Hommelse", + "Hommert", + "Hommerts", + "Honderd", + "Honds", + "Hondsrug", + "Hongerige", + "Honthem", + "Hoog", + "Hoogcruts", + "Hooge", + "Hoogehaar", + "Hoogen", + "Hoogeweg", + "Hooghalen", + "Hoogmade", + "Hoogmeien", + "Hoogwatum", + "Hool", + "Hoon", + "Hoonte", + "Hoorn", + "Hoornder", + "Hoptille", + "Horck", + "Horick", + "Horn", + "Horssen", + "Horsten", + "Horzik", + "Hout", + "Houterd", + "Houtgoor", + "Houthei", + "Houthem", + "Houw", + "Houwer", + "Hugten", + "Huij", + "Huinen", + "Huinerwal", + "Huis", + "Huissen", + "Huize", + "Huizinge", + "Hul", + "Huls", + "Hulsen", + "Hulst", + "Hulten", + "Hultje", + "Humcoven", + "Hunnecum", + "Hunsel", + "Hupsel", + "Hurkske", + "Hurpesch", + "Hutten", + "Huurne", + "Höchte", + "Höfke", + "Húns", + "Idaerd", + "Idserda", + "Idsken", + "Idzegea", + "Iens", + "IJmuiden", + "IJpe", + "IJpelo", + "IJsselham", + "IJzen", + "IJzeren", + "IJzerlo", + "Illik", + "Indoornik", + "Ingwert", + "Inia", + "Itens", + "Itteren", + "Jaars", + "Jammer", + "Jannum", + "Jellum", + "Jelsum", + "Jeth", + "Jipsing", + "Jirnsum", + "Jislum", + "Jisp", + "Jistrum", + "Jonas", + "Jonen", + "Jonkers", + "Jorwert", + "Joure", + "Jous", + "Jousterp", + "Jouswerd", + "Jouwer", + "Jubbega", + "Jukwerd", + "Junne", + "Jutryp", + "Kaag", + "Kaakhorn", + "Kaard", + "Kaarschot", + "Kaat", + "Kade", + "Kadoelen", + "Kalis", + "Kalteren", + "Kameren", + "Kamp", + "Kampen", + "Kamper", + "Kamperei", + "Kampers", + "Kamperzee", + "Kantens", + "Kantje", + "Kapel", + "Kapelle", + "Kapolder", + "Kappert", + "Karre", + "Kasen", + "Kasteren", + "Kater", + "Katerveer", + "Kathagen", + "Katlijk", + "Kats", + "Katwijk", + "Kaumes", + "Kavel", + "Kaweide", + "Kedichem", + "Keegen", + "Keent", + "Keersop", + "Keinsmer", + "Keizers", + "Kekerdom", + "Kelmond", + "Kelpen", + "Kempkens", + "Kerk", + "Kerken", + "Kerkhof", + "Kerkrade", + "Kerkwerve", + "Keske", + "Kessel", + "Kesseleik", + "Ketting", + "Keulse", + "Keunen", + "Keup", + "Keuter", + "Kibbel", + "Kiel", + "Kiester", + "Kievit", + "Kijf", + "Kijfwaard", + "Kijkuit", + "Kilder", + "Kille", + "Kimswerd", + "Kinderbos", + "Kink", + "Kinnum", + "Kipper", + "Klaaswaal", + "Kladde", + "Klaren", + "Klatering", + "Klef", + "Klei", + "Klein", + "Kleinder", + "Kleine", + "Kleinge", + "Klem", + "Kletter", + "Klevers", + "Klispoel", + "Klomp", + "Klooster", + "Klosse", + "Klösse", + "Knaphof", + "Knegsel", + "Knipe", + "Knol", + "Knolle", + "Knuiters", + "Koedood", + "Koehool", + "Koekange", + "Koekanger", + "Koekoek", + "Koel", + "Koevering", + "Kokkelert", + "Kolder", + "Kolhol", + "Kolhorn", + "Kolk", + "Kollum", + "Kolonie", + "Kommer", + "Konings", + "Koog", + "Kooi", + "Kooldert", + "Kopaf", + "Korhorn", + "Korn", + "Kornhorn", + "Kort", + "Korte", + "Korteraar", + "Korteven", + "Kortgene", + "Kostvlies", + "Koude", + "Kouden", + "Koudhoorn", + "Koulen", + "Kraan", + "Kraanven", + "Kraats", + "Krabben", + "Krachtig", + "Kranen", + "Krassum", + "Kreek", + "Kreielt", + "Kreijel", + "Kreijl", + "Krewerd", + "Krim", + "Krimpen", + "Krol", + "Kruin", + "Kruishaar", + "Kruispunt", + "Kruisweg", + "Kuikhorne", + "Kuiks", + "Kuinre", + "Kuitaart", + "Kuivezand", + "Kulert", + "Kulsdom", + "Kunrade", + "Kutt", + "Kuundert", + "Kuzemer", + "Kwaal", + "Kwakel", + "Kwakkel", + "Kwartier", + "Kûkherne", + "Laag", + "Laaghalen", + "Laaghaler", + "Laak", + "Laaksum", + "Laan", + "Lage", + "Lagekant", + "Lageweg", + "Lakei", + "Laker", + "Lalle", + "Lammer", + "Lammerweg", + "Lamperen", + "Landerum", + "Landsrade", + "Lang", + "Lange", + "Langeraar", + "Langerak", + "Langereit", + "Lank", + "Lankes", + "Laren", + "Laskwerd", + "Lattrop", + "Laude", + "Lauwer", + "Ledeacker", + "Leeg", + "Leegte", + "Leek", + "Leem", + "Leen", + "Leens", + "Leensel", + "Leermens", + "Leersum", + "Leeuw", + "Leeuwerik", + "Leeuwte", + "Lege", + "Legert", + "Leiden", + "Leimuiden", + "Leker", + "Lekker", + "Lelystad", + "Lemel", + "Lemele", + "Lemmer", + "Lemselo", + "Lengel", + "Lent", + "Lenthe", + "Leons", + "Lerop", + "Lethe", + "Lettele", + "Leuke", + "Leunen", + "Leur", + "Leusden", + "Leutes", + "Leuth", + "Leuven", + "Leuvenum", + "Leveroy", + "Lexmond", + "Lhee", + "Lichtaard", + "Lichtmis", + "Liefkens", + "Liempde", + "Lienden", + "Lier", + "Lieren", + "Lierop", + "Lies", + "Lievelde", + "Lieving", + "Lijnden", + "Limbricht", + "Limmen", + "Linde", + "Lingsfort", + "Lintelo", + "Lintvelde", + "Lioessens", + "Lippen", + "Lith", + "Lithoijen", + "Lobith", + "Loc", + "Locht", + "Loenen", + "Loer", + "Loete", + "Logt", + "Loil", + "Lollum", + "Lomm", + "Lonneker", + "Loo", + "Loobrink", + "Loofaert", + "Looi", + "Looien", + "Look", + "Loon", + "Loons", + "Loonse", + "Looveer", + "Loppersum", + "Lovendaal", + "Loveren", + "Loënga", + "Lubbinge", + "Luchen", + "Luchten", + "Luissel", + "Luitert", + "Lula", + "Lunen", + "Lunteren", + "Lunters", + "Lutjegast", + "Lutjerijp", + "Lutke", + "Lutkepost", + "Lutten", + "Lutter", + "Lytse", + "Lytshuzen", + "Maagd", + "Maaijkant", + "Maalb", + "Maaldrift", + "Maalstede", + "Maar", + "Maarn", + "Maars", + "Maarssen", + "Maasband", + "Maasbree", + "Maaskant", + "Maat", + "Maatsehei", + "Macharen", + "Made", + "Magele", + "Magrette", + "Makkum", + "Mal", + "Malden", + "Mallem", + "Mamelis", + "Manen", + "Mantgum", + "Mantinge", + "Maren", + "Maria", + "Maris", + "Mark", + "Markvelde", + "Marle", + "Marrum", + "Mars", + "Marssum", + "Marsum", + "Martens", + "Marum", + "Mataram", + "Maten", + "Mathijs", + "Maurik", + "Maxet", + "Medemblik", + "Medevoort", + "Medler", + "Meed", + "Meeden", + "Meele", + "Meemortel", + "Meene", + "Meer", + "Meeren", + "Meern", + "Meerten", + "Meerven", + "Meerwijck", + "Megelsum", + "Megen", + "Meije", + "Meijel", + "Melick", + "Melis", + "Melissant", + "Menaldum", + "Mensinge", + "Menzel", + "Meppen", + "Merkel", + "Merm", + "Merselo", + "Merum", + "Mesch", + "Meteren", + "Metsla", + "Midbuul", + "Midde", + "Middel", + "Middelijk", + "Midden", + "Middenhof", + "Midlaren", + "Midlum", + "Mids", + "Midwolde", + "Miedum", + "Mildert", + "Milheeze", + "Mill", + "Mils", + "Milschot", + "Minkeloos", + "Mispel", + "Moddergat", + "Moer", + "Moeren", + "Moerslag", + "Moespot", + "Molembaix", + "Molenbaan", + "Molenbelt", + "Molengat", + "Molenhof", + "Molenperk", + "Molenrij", + "Molenstad", + "Molkwar", + "Monster", + "Montfort", + "Mook", + "Moord", + "Moorsel", + "Morige", + "Morra", + "Mortel", + "Mosbulten", + "Mosik", + "Moskou", + "Mosse", + "Mossel", + "Most", + "Muggenhol", + "Muis", + "Muizenhol", + "Mulderij", + "Mullegen", + "Munneke", + "Munnekens", + "Munniken", + "Munte", + "Murns", + "Mussel", + "Mûnein", + "Naarder", + "Nabbegat", + "Nagel", + "Nansum", + "Napels", + "Natten", + "Neder", + "Nederbiel", + "Neer", + "Neerijnen", + "Neeritter", + "Neerloon", + "Neerst", + "Negen", + "Nekke", + "Nergena", + "Nia", + "Nie", + "Niebert", + "Niehove", + "Nier", + "Niersen", + "Niesoord", + "Nieuw", + "Nieuwaal", + "Nieuwe", + "Nieuwer", + "Nieuwklap", + "Nieuwkoop", + "Nieuwolda", + "Nieuwstad", + "Niftrik", + "Nijega", + "Nijehaske", + "Nijesyl", + "Nijken", + "Nijkerker", + "Nijlân", + "Nijmegen", + "Nijnsel", + "Nijrees", + "Nijstad", + "Nijve", + "Nispense", + "Noardein", + "Noenes", + "Nolde", + "Noord", + "Noorden", + "Noorder", + "Noordhorn", + "Noordink", + "Noordkant", + "Noordse", + "Notendaal", + "Notsel", + "Noukoop", + "Nuenen", + "Nuijen", + "Nuil", + "Nuis", + "Nunhem", + "Nunspeet", + "Nuth", + "Obbicht", + "Ock", + "Oegst", + "Oekel", + "Oeken", + "Oele", + "Oensel", + "Oentsjerk", + "Oerle", + "Oete", + "Oever", + "Offinga", + "Ofwegen", + "Ohé;", + "Oijen", + "Oirlo", + "Oirs", + "Okswerd", + "Olde", + "Oldehove", + "Oldemarkt", + "Olden", + "Oldeneel", + "Oldenhave", + "Oldeouwer", + "Oldörp", + "Olen", + "Oler", + "Oling", + "Olterterp", + "Ommel", + "Ommen", + "Ommeren", + "Onder", + "Onna", + "Onsenoort", + "Onstwedde", + "Ooij", + "Ooijen", + "Oost", + "Oostappen", + "Ooste", + "Ooster", + "Oosterend", + "Oosterens", + "Oosterhof", + "Oosterik", + "Oosternie", + "Oosternij", + "Oosterse", + "Oosterzee", + "Oosthem", + "Oostindië", + "Oostrum", + "Oostum", + "Oostwold", + "Oostzaan", + "Op", + "Opende", + "Ophemert", + "Ophuis", + "Opijnen", + "Opmeeden", + "Opper", + "Opperdoes", + "Opperduit", + "Opwetten", + "Opwierde", + "Oranje", + "Orvelte", + "Osen", + "Oshaar", + "Ospel", + "Ossen", + "Ossenisse", + "Ostaaijen", + "Osterbos", + "Othene", + "Otterlo", + "Ottersum", + "Ou", + "OuBildt", + "Oude", + "Oudega", + "Oudehaske", + "Oudehorne", + "Ouden", + "Oudenrijn", + "Ouder", + "Oudeschip", + "Oudleusen", + "Oukoop", + "OuLeede", + "OuLeije", + "OuPolder", + "OuSchouw", + "OuStaten", + "OuStee", + "OuStoof", + "OuStrumpt", + "OuWaranda", + "Ouwer", + "OuWillem", + "Ouwster", + "Oventje", + "Over", + "Overa", + "Overakker", + "Overbiel", + "Overeys", + "Overgeul", + "Overheek", + "Overschot", + "Overval", + "Overwater", + "Paal", + "Paarde", + "Paarlo", + "Paauwen", + "Paddepoel", + "Padhuis", + "Paesens", + "Palestina", + "Pallert", + "Pandgat", + "Panheel", + "Pann", + "Pannerden", + "Papen", + "Papenveer", + "Park", + "Parrega", + "Partij", + "Pasop", + "Patrijzen", + "Peebos", + "Peelkant", + "Peij", + "Peizerweg", + "Pelikaan", + "Pepinus", + "Pernis", + "Pers", + "Pesaken", + "Peters", + "Petten", + "Piaam", + "Pieperij", + "Piepert", + "Piershil", + "Pieter", + "Pikesyl", + "Piksen", + "Pingjum", + "Pinkeveer", + "Pitteperk", + "Plaat", + "Plaats", + "Plak", + "Plantage", + "Plas", + "Plat", + "Plein", + "Poffert", + "Polen", + "Polle", + "Pollen", + "Ponte", + "Poonhaven", + "Poppen", + "Posterenk", + "Posthoorn", + "Pot", + "Praets", + "Prickart", + "Puiflijk", + "Punt", + "Purmer", + "Purmerend", + "Puth", + "Putse", + "Putten", + "Putters", + "Pyramide", + "Raai", + "Raak", + "Raam", + "Raar", + "Raard", + "Raayen", + "Raerd", + "Rakens", + "Rakt", + "Rand", + "Rande", + "Randen", + "Ranum", + "Raren", + "Rasquert", + "Ratte", + "Ravensgat", + "Reahûs", + "Rechteren", + "Rectum", + "Reduzum", + "Reeth", + "Reidswal", + "Reitsum", + "Remswerd", + "Renesse", + "Renkum", + "Renneborg", + "Rens", + "Respel", + "Ressen", + "Reters", + "Reth", + "Reuth", + "Reutje", + "Reuzen", + "Rewert", + "Rhaan", + "Rheder", + "Rhee", + "Rhenoy", + "Rhoon", + "Ridder", + "Riel", + "Rien", + "Riet", + "Rietven", + "Rijckholt", + "Rijen", + "Rijke", + "Rijkel", + "Rijker", + "Rijlst", + "Rijnsater", + "Rijsb", + "Rijsoord", + "Rijt", + "Rijtjes", + "Ril", + "Rimpelt", + "Rink", + "Rips", + "Rith", + "Ritsuma", + "Roeke", + "Roekel", + "Roelage", + "Roels", + "Roermond", + "Roeven", + "Roggel", + "Rohel", + "Rolaf", + "Roligt", + "Rollecate", + "Rolpaal", + "Rome", + "Rond", + "Ronduite", + "Rood", + "Roodehaan", + "Rooden", + "Roond", + "Roosteren", + "Rooth", + "Ropta", + "Roskam", + "Rothem", + "Rott", + "Rotte", + "Rotter", + "Rotting", + "Rottum", + "Rozendaal", + "Rucphen", + "Ruif", + "Ruigen", + "Ruigezand", + "Ruimel", + "Ruinen", + "Ruischer", + "Ruiten", + "Rukven", + "Rullen", + "Rumpt", + "Rund", + "Rusven", + "Rut", + "Ryptsjerk", + "Rytseterp", + "Saaksum", + "Saaxum", + "Salverd", + "Sandebuur", + "Santfort", + "Santpoort", + "Sasput", + "Sauwerd", + "Schaa", + "Schaaphok", + "Schaaps", + "Schadron", + "Schafelt", + "Schaft", + "Schagen", + "Schager", + "Schandelo", + "Schans", + "Schapers", + "Scharen", + "Scharne", + "Scharster", + "Schatkuil", + "Schaveren", + "Scheemder", + "Schelf", + "Schellach", + "Schelm", + "Schettens", + "Schey", + "Schieven", + "Schijf", + "Schijndel", + "Schillers", + "Schimmert", + "Schin", + "Schinnen", + "Schippers", + "School", + "Schoon", + "Schoonen", + "Schoor", + "Schoorl", + "Schoot", + "Schore", + "Schoter", + "Schotters", + "Schouw", + "Schouwen", + "Schouwer", + "Schraard", + "Schrap", + "Schuilen", + "Schuring", + "Schuwacht", + "Sebalde", + "Seerijp", + "Sell", + "Selmien", + "Selwerd", + "Seroos", + "Seters", + "Sibbe", + "Siberië", + "Siegers", + "Simpel", + "Sinouts", + "Sinsel", + "Sint", + "Sion", + "Sittard", + "Sjunga", + "Skarl", + "Skillaerd", + "Skou", + "Skrins", + "Skyldum", + "Slee", + "Sleen", + "Slegge", + "Slek", + "Slichten", + "Sliffert", + "Slijkwell", + "Slikken", + "Sloot", + "Sluis", + "Smakt", + "Smal", + "Smalle", + "Smeerling", + "Smelbrêge", + "Smele", + "Smilde", + "Smits", + "Sneek", + "Sneiders", + "Snelle", + "Sneps", + "Snikzwaag", + "Snipperij", + "Snoden", + "Soeter", + "Solwerd", + "Someren", + "Sopsum", + "Spaanrijt", + "Spaanse", + "Spaken", + "Spannen", + "Spannum", + "Spears", + "Spek", + "Spekklef", + "Spekt", + "Speuld", + "Speurgt", + "Spier", + "Spijk", + "Spik", + "Spits", + "Spoolde", + "Spoor", + "Sprang", + "Sprundel", + "Spurkt", + "Stad", + "Stadterij", + "Starten", + "Stations", + "Staverden", + "Stedum", + "Steeg", + "Steegh", + "Steel", + "Steen", + "Steenkamp", + "Steenoven", + "Steenpaal", + "Steensel", + "Steenvak", + "Stegen", + "Steger", + "Stegeren", + "Stein", + "Sterken", + "Sterre", + "Steurgat", + "Stevens", + "Stevert", + "Stiem", + "Stiens", + "Stitswerd", + "Stobben", + "Stokhem", + "Stokkelen", + "Stokkum", + "Stokske", + "Stokt", + "Stolpen", + "Stomme", + "Stoof", + "Stork", + "Stouten", + "Stox", + "Strand", + "Straten", + "Strateris", + "Streek", + "Strepen", + "Streukel", + "Strij", + "Strijen", + "Strijp", + "Stroet", + "Stroo", + "Stroopuit", + "Strubben", + "Strucht", + "Strype", + "Stuw", + "Sumar", + "Sumarre", + "Surhuizum", + "Susteren", + "Suttum", + "Suwâld", + "Swaenwert", + "Swalmen", + "Sweik", + "Syt", + "Sânfurd", + "Taarlo", + "Teeffelen", + "Teije", + "Teijl", + "Telgt", + "Tempel", + "Ter", + "Terband", + "Terblijt", + "Terdiek", + "Tereyken", + "Tergêft", + "Terhagen", + "Terheijl", + "Terherne", + "Terkaple", + "Terlet", + "Terlinden", + "Termaar", + "Termoors", + "Termunten", + "Termunter", + "Ternaard", + "Teroele", + "Terover", + "Tersoal", + "Tervaten", + "Tervoorst", + "Tervoort", + "Terwispel", + "Terwolde", + "Terziet", + "Teuge", + "Theetuin", + "Themaat", + "Tholen", + "Thull", + "Thuserhof", + "Tibma", + "Tiel", + "Tielse", + "Tiggelt", + "Tijnje", + "Tike", + "Til", + "Timmer", + "Tippe", + "Tjaard", + "Tjams", + "Tjerkwerd", + "Tjoene", + "Tolbert", + "Tolkamer", + "Tommel", + "Tongeren", + "Tongerlo", + "Tonsel", + "Toom", + "Toornwerd", + "Top", + "Toren", + "Toterfout", + "Toven", + "Tragel", + "Tranendal", + "Trege", + "Trent", + "Tricht", + "Triemen", + "Trimpert", + "Trintelen", + "Tritzum", + "Tronde", + "Trophorne", + "Trutjes", + "Tuil", + "Tull", + "Tungelroy", + "Turns", + "Tusschen", + "Tuut", + "Tuuthees", + "Twee", + "Tweedeweg", + "TweeTol", + "Twekkelo", + "Twello", + "Twijzel", + "Twijzeler", + "Twisk", + "Tynaarlo", + "Tytsjerk", + "Ubach", + "Ubbena", + "Ubber", + "Uddel", + "Uffelsen", + "Uffelte", + "Uit", + "Uiter", + "Uithoorn", + "Uitwierde", + "Ulfter", + "Ulicoten", + "Ulrum", + "Ulsda", + "Ulvend", + "Unga", + "Uppel", + "Usquert", + "Usselo", + "Vaals", + "Vaar", + "Vaarle", + "Vaart", + "Vaesrade", + "Valk", + "Valken", + "Valom", + "Valsteeg", + "Varik", + "Varsen", + "Varssel", + "Vebenabos", + "Vecht", + "Veecaten", + "Veele", + "Veeler", + "Veen", + "Veenhof", + "Veenhoop", + "Veenhuis", + "Veere", + "Veessen", + "Veghel", + "Veld", + "Veldbraak", + "Velde", + "Velden", + "Veldhuis", + "Veldzicht", + "Velp", + "Velsen", + "Veluwe", + "Vemde", + "Ven", + "Venbe", + "Vene", + "Venekoten", + "Venlo", + "Venne", + "Venray", + "Venweg", + "Vergelt", + "Verloren", + "Vessem", + "Vestjens", + "Vet", + "Vetterik", + "Veulen", + "Vianen", + "Viel", + "Vier", + "Vierhuis", + "Vijcie", + "Vijf", + "Vilgert", + "Vilsteren", + "Vilt", + "Vink", + "Vinkel", + "Vinken", + "Vinkepas", + "Vis", + "Visschers", + "Vissers", + "Vlaas", + "Vlake", + "Vlas", + "Vledder", + "Vleet", + "Vleuten", + "Vlie", + "Vliegert", + "Vlieghuis", + "Vlijmen", + "Vliss", + "Vlist", + "Vlodrop", + "Vloei", + "Vloet", + "Vlootkant", + "Vogelfort", + "Volthe", + "Voor", + "Voorne", + "Voorrijp", + "Voorst", + "Voorstad", + "Voorste", + "Voorster", + "Voort", + "Voortje", + "Voorweg", + "Vorchten", + "Vorst", + "Vorsten", + "Voske", + "Voskuil", + "Vosse", + "Vossebelt", + "Vosselen", + "Vossen", + "Voulwames", + "Vrachelen", + "Vragender", + "Vredepeel", + "Vree", + "Vries", + "Vriezen", + "Vrij", + "Vrijhoeve", + "Vrilk", + "Vroe", + "Vroelen", + "Vuile", + "Vuilpan", + "Vuren", + "Waaksens", + "Waal", + "Waar", + "Waard", + "Waarde", + "Waarden", + "Waarder", + "Waatskamp", + "Wachtum", + "Waddinx", + "Wadway", + "Wadwerd", + "Wagen", + "Waije", + "Walder", + "Walik", + "Walsert", + "Wammert", + "Wanneper", + "Wanroij", + "Wapen", + "Wapse", + "Wapser", + "Warf", + "Warffum", + "Warfster", + "Warmen", + "Warmond", + "Warnia", + "Warstiens", + "Warten", + "Waspik", + "Water", + "Wateren", + "Waterkant", + "Waterop", + "Waterval", + "Waver", + "Weakens", + "Wedde", + "Wedder", + "Wee", + "Weeg", + "Weende", + "Weerd", + "Weerdinge", + "Weere", + "Weert", + "Weerwille", + "Wehe", + "Wehl", + "Weidum", + "Weij", + "Weijer", + "Weijpoort", + "Weilens", + "Weimeren", + "Weipoort", + "Weite", + "Weitemans", + "Weiwerd", + "Wekerom", + "Wele", + "Wells", + "Welsum", + "Wely", + "Wenum", + "Weper", + "Wercheren", + "Weren", + "Wergea", + "Werk", + "Wernhouts", + "Wesch", + "Wessing", + "Wessinge", + "West", + "Westeneng", + "Wester", + "Westerein", + "Westerlee", + "Westernie", + "Westerse", + "Westhim", + "Westlaren", + "Westmaas", + "Westrik", + "Wetering", + "Wetsens", + "Weurt", + "Wevers", + "Weverslo", + "Wezel", + "Wezep", + "Wezup", + "Wezuper", + "Wielder", + "Wieler", + "Wielse", + "Wiene", + "Wierren", + "Wierum", + "Wiesel", + "Wieuwens", + "Wijchen", + "Wijnaldum", + "Wijnb", + "Wijnje", + "Wijster", + "Wijthmen", + "Wijzend", + "Wilderhof", + "Wildert", + "Wilgen", + "Wilp", + "Wils", + "Wilsum", + "Winde", + "Windraak", + "Winkel", + "Winkels", + "Winssen", + "Winsum", + "Wintelre", + "Winthagen", + "Wirdum", + "Wisse", + "Wissel", + "Wissen", + "Witharen", + "Withuis", + "Witman", + "Witmarsum", + "Witrijt", + "Witte", + "Wittelte", + "Witten", + "Wiuwert", + "Wjelsryp", + "Woerd", + "Woerdense", + "Woezik", + "Wognum", + "Wolfers", + "Wolfhaag", + "Wolfhagen", + "Wolfheze", + "Wolfs", + "Wolfshuis", + "Wolling", + "Wolsum", + "Wommels", + "Wonne", + "Wons", + "Woord", + "Wopereis", + "Wordragen", + "Wormer", + "Worsum", + "Woubrugge", + "Wouwse", + "Wulpenbek", + "Wyns", + "Wytgaard", + "Wâldsein", + "Wânswert", + "Yerseke", + "Yndyk", + "Zaamslag", + "Zaarvlaas", + "Zalk", + "Zand", + "Zande", + "Zandfort", + "Zandkant", + "Zandoerle", + "Zandplaat", + "Zandpol", + "Zandput", + "Zandvoort", + "Zee", + "Zeegat", + "Zeegse", + "Zeerijp", + "Zeesse", + "Zegge", + "Zeijen", + "Zeijer", + "Zeist", + "Zelder", + "Zelen", + "Zelt", + "Zenderen", + "Zethuis", + "Zeven", + "Zevenhuis", + "Zierikzee", + "Zieuwent", + "Zijder", + "Zijdewind", + "Zijp", + "Zijper", + "Zijtaart", + "Zilven", + "Zinkweg", + "Zittard", + "Zoeke", + "Zoelen", + "Zoelmond", + "Zoerte", + "Zoeter", + "Zoggel", + "Zomerven", + "Zond", + "Zorgvlied", + "Zoutkamp", + "Zuid", + "Zuider", + "Zuidhorn", + "Zuidlaren", + "Zuidwolde", + "Zuidzande", + "Zuidzijde", + "Zuilichem", + "Zundert", + "Zurich", + "Zutphen", + "Zuuk", + "Zwaag", + "Zwager", + "Zwanegat", + "Zwart", + "Zwarte", + "Zweek", + "Zwiggelte", + "Zwijn", + "Zwinderen", + "Zwolle" +]; + +},{}],757:[function(require,module,exports){ +module["exports"] = [ + " aan de IJssel", + " aan de Rijn", + "ambacht", + "beek", + "berg", + "bergen", + "bosch", + "broek", + "brug", + "buren", + "burg", + "buurt", + "dam", + "dijk", + "dijke", + "donk", + "dorp", + "eind", + "enmaes", + "gat", + "geest", + "heide", + "hoek", + "horst", + "hout", + "hoven", + "huizen", + "ingen", + "kerk", + "laar", + "land", + "meer", + "recht", + "schoten", + "sluis", + "stroom", + "swaerd", + "veen", + "veld", + "vliet", + "weer", + "wier", + "wijk", + "woud", + "woude", + "zijl", + "" +]; + +},{}],758:[function(require,module,exports){ +module["exports"] = [ + "Afghanistan", + "Akrotiri", + "Albanië", + "Algerije", + "Amerikaanse Maagdeneilanden", + "Amerikaans-Samoa", + "Andorra", + "Angola", + "Anguilla", + "Antarctica", + "Antigua en Barbuda", + "Arctic Ocean", + "Argentinië", + "Armenië", + "Aruba", + "Ashmore and Cartier Islands", + "Atlantic Ocean", + "Australië", + "Azerbeidzjan", + "Bahama's", + "Bahrein", + "Bangladesh", + "Barbados", + "Belarus", + "België", + "Belize", + "Benin", + "Bermuda", + "Bhutan", + "Bolivië", + "Bosnië-Herzegovina", + "Botswana", + "Bouvet Island", + "Brazilië", + "British Indian Ocean Territory", + "Britse Maagdeneilanden", + "Brunei", + "Bulgarije", + "Burkina Faso", + "Burundi", + "Cambodja", + "Canada", + "Caymaneilanden", + "Centraal-Afrikaanse Republiek", + "Chili", + "China", + "Christmas Island", + "Clipperton Island", + "Cocos (Keeling) Islands", + "Colombia", + "Comoren (Unie)", + "Congo (Democratische Republiek)", + "Congo (Volksrepubliek)", + "Cook", + "Coral Sea Islands", + "Costa Rica", + "Cuba", + "Cyprus", + "Denemarken", + "Dhekelia", + "Djibouti", + "Dominica", + "Dominicaanse Republiek", + "Duitsland", + "Ecuador", + "Egypte", + "El Salvador", + "Equatoriaal-Guinea", + "Eritrea", + "Estland", + "Ethiopië", + "European Union", + "Falkland", + "Faroe Islands", + "Fiji", + "Filipijnen", + "Finland", + "Frankrijk", + "Frans-Polynesië", + "French Southern and Antarctic Lands", + "Gabon", + "Gambia", + "Gaza Strip", + "Georgië", + "Ghana", + "Gibraltar", + "Grenada", + "Griekenland", + "Groenland", + "Guam", + "Guatemala", + "Guernsey", + "Guinea", + "Guinee-Bissau", + "Guyana", + "Haïti", + "Heard Island and McDonald Islands", + "Heilige Stoel", + "Honduras", + "Hongarije", + "Hongkong", + "Ierland", + "IJsland", + "India", + "Indian Ocean", + "Indonesië", + "Irak", + "Iran", + "Isle of Man", + "Israël", + "Italië", + "Ivoorkust", + "Jamaica", + "Jan Mayen", + "Japan", + "Jemen", + "Jersey", + "Jordanië", + "Kaapverdië", + "Kameroen", + "Kazachstan", + "Kenia", + "Kirgizstan", + "Kiribati", + "Koeweit", + "Kroatië", + "Laos", + "Lesotho", + "Letland", + "Libanon", + "Liberia", + "Libië", + "Liechtenstein", + "Litouwen", + "Luxemburg", + "Macao", + "Macedonië", + "Madagaskar", + "Malawi", + "Maldiven", + "Maleisië", + "Mali", + "Malta", + "Marokko", + "Marshall Islands", + "Mauritanië", + "Mauritius", + "Mayotte", + "Mexico", + "Micronesia, Federated States of", + "Moldavië", + "Monaco", + "Mongolië", + "Montenegro", + "Montserrat", + "Mozambique", + "Myanmar", + "Namibië", + "Nauru", + "Navassa Island", + "Nederland", + "Nederlandse Antillen", + "Nepal", + "Ngwane", + "Nicaragua", + "Nieuw-Caledonië", + "Nieuw-Zeeland", + "Niger", + "Nigeria", + "Niue", + "Noordelijke Marianen", + "Noord-Korea", + "Noorwegen", + "Norfolk Island", + "Oekraïne", + "Oezbekistan", + "Oman", + "Oostenrijk", + "Pacific Ocean", + "Pakistan", + "Palau", + "Panama", + "Papoea-Nieuw-Guinea", + "Paracel Islands", + "Paraguay", + "Peru", + "Pitcairn", + "Polen", + "Portugal", + "Puerto Rico", + "Qatar", + "Roemenië", + "Rusland", + "Rwanda", + "Saint Helena", + "Saint Lucia", + "Saint Vincent en de Grenadines", + "Saint-Pierre en Miquelon", + "Salomon", + "Samoa", + "San Marino", + "São Tomé en Principe", + "Saudi-Arabië", + "Senegal", + "Servië", + "Seychellen", + "Sierra Leone", + "Singapore", + "Sint-Kitts en Nevis", + "Slovenië", + "Slowakije", + "Soedan", + "Somalië", + "South Georgia and the South Sandwich Islands", + "Southern Ocean", + "Spanje", + "Spratly Islands", + "Sri Lanka", + "Suriname", + "Svalbard", + "Syrië", + "Tadzjikistan", + "Taiwan", + "Tanzania", + "Thailand", + "Timor Leste", + "Togo", + "Tokelau", + "Tonga", + "Trinidad en Tobago", + "Tsjaad", + "Tsjechië", + "Tunesië", + "Turkije", + "Turkmenistan", + "Turks-en Caicoseilanden", + "Tuvalu", + "Uganda", + "Uruguay", + "Vanuatu", + "Venezuela", + "Verenigd Koninkrijk", + "Verenigde Arabische Emiraten", + "Verenigde Staten van Amerika", + "Vietnam", + "Wake Island", + "Wallis en Futuna", + "Wereld", + "West Bank", + "Westelijke Sahara", + "Zambia", + "Zimbabwe", + "Zuid-Afrika", + "Zuid-Korea", + "Zweden", + "Zwitserland" +]; + +},{}],759:[function(require,module,exports){ +module["exports"] = [ + "Nederland" +]; + +},{}],760:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.city = require("./city"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.default_country = require("./default_country"); + +},{"./building_number":754,"./city":755,"./city_prefix":756,"./city_suffix":757,"./country":758,"./default_country":759,"./postcode":761,"./secondary_address":762,"./state":763,"./street_address":764,"./street_name":765,"./street_suffix":766}],761:[function(require,module,exports){ +module["exports"] = [ + "#### ??" +]; + +},{}],762:[function(require,module,exports){ +module["exports"] = [ + "1 hoog", + "2 hoog", + "3 hoog" +]; + +},{}],763:[function(require,module,exports){ +module["exports"] = [ + "Noord-Holland", + "Zuid-Holland", + "Utrecht", + "Zeeland", + "Overijssel", + "Gelderland", + "Drenthe", + "Friesland", + "Groningen", + "Noord-Brabant", + "Limburg", + "Flevoland" +]; + +},{}],764:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],765:[function(require,module,exports){ +arguments[4][671][0].apply(exports,arguments) +},{"dup":671}],766:[function(require,module,exports){ +module["exports"] = [ + "straat", + "laan", + "weg", + "plantsoen", + "park" +]; + +},{}],767:[function(require,module,exports){ +arguments[4][334][0].apply(exports,arguments) +},{"./suffix":768,"dup":334}],768:[function(require,module,exports){ +module["exports"] = [ + "BV", + "V.O.F.", + "Group", + "en Zonen" +]; + +},{}],769:[function(require,module,exports){ +var nl = {}; +module['exports'] = nl; +nl.title = "Dutch"; +nl.address = require("./address"); +nl.company = require("./company"); +nl.internet = require("./internet"); +nl.lorem = require("./lorem"); +nl.name = require("./name"); +nl.phone_number = require("./phone_number"); + +},{"./address":760,"./company":767,"./internet":772,"./lorem":773,"./name":777,"./phone_number":784}],770:[function(require,module,exports){ +module["exports"] = [ + "nl", + "com", + "net", + "org" +]; + +},{}],771:[function(require,module,exports){ +arguments[4][174][0].apply(exports,arguments) +},{"dup":174}],772:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":770,"./free_email":771,"dup":98}],773:[function(require,module,exports){ +arguments[4][138][0].apply(exports,arguments) +},{"./supplemental":774,"./words":775,"dup":138}],774:[function(require,module,exports){ +arguments[4][139][0].apply(exports,arguments) +},{"dup":139}],775:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],776:[function(require,module,exports){ +module["exports"] = [ + "Amber", + "Anna", + "Anne", + "Anouk", + "Bas", + "Bram", + "Britt", + "Daan", + "Emma", + "Eva", + "Femke", + "Finn", + "Fleur", + "Iris", + "Isa", + "Jan", + "Jasper", + "Jayden", + "Jesse", + "Johannes", + "Julia", + "Julian", + "Kevin", + "Lars", + "Lieke", + "Lisa", + "Lotte", + "Lucas", + "Luuk", + "Maud", + "Max", + "Mike", + "Milan", + "Nick", + "Niels", + "Noa", + "Rick", + "Roos", + "Ruben", + "Sander", + "Sanne", + "Sem", + "Sophie", + "Stijn", + "Sven", + "Thijs", + "Thijs", + "Thomas", + "Tim", + "Tom" +]; + +},{}],777:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.tussenvoegsel = require("./tussenvoegsel"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.name = require("./name"); + +},{"./first_name":776,"./last_name":778,"./name":779,"./prefix":780,"./suffix":781,"./tussenvoegsel":782}],778:[function(require,module,exports){ +module["exports"] = [ + "Bakker", + "Beek", + "Berg", + "Boer", + "Bos", + "Bosch", + "Brink", + "Broek", + "Brouwer", + "Bruin", + "Dam", + "Dekker", + "Dijk", + "Dijkstra", + "Graaf", + "Groot", + "Haan", + "Hendriks", + "Heuvel", + "Hoek", + "Jacobs", + "Jansen", + "Janssen", + "Jong", + "Klein", + "Kok", + "Koning", + "Koster", + "Leeuwen", + "Linden", + "Maas", + "Meer", + "Meijer", + "Mulder", + "Peters", + "Ruiter", + "Schouten", + "Smit", + "Smits", + "Stichting", + "Veen", + "Ven", + "Vermeulen", + "Visser", + "Vliet", + "Vos", + "Vries", + "Wal", + "Willems", + "Wit" +]; + +},{}],779:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{first_name} #{last_name}", + "#{first_name} #{last_name} #{suffix}", + "#{first_name} #{last_name}", + "#{first_name} #{last_name}", + "#{first_name} #{tussenvoegsel} #{last_name}", + "#{first_name} #{tussenvoegsel} #{last_name}" +]; + +},{}],780:[function(require,module,exports){ +module["exports"] = [ + "Dhr.", + "Mevr. Dr.", + "Bsc", + "Msc", + "Prof." +]; + +},{}],781:[function(require,module,exports){ +arguments[4][735][0].apply(exports,arguments) +},{"dup":735}],782:[function(require,module,exports){ +module["exports"] = [ + "van", + "van de", + "van den", + "van 't", + "van het", + "de", + "den" +]; + +},{}],783:[function(require,module,exports){ +module["exports"] = [ + "(####) ######", + "##########", + "06########", + "06 #### ####" +]; + +},{}],784:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":783,"dup":108}],785:[function(require,module,exports){ +arguments[4][234][0].apply(exports,arguments) +},{"dup":234}],786:[function(require,module,exports){ +arguments[4][110][0].apply(exports,arguments) +},{"dup":110}],787:[function(require,module,exports){ +module["exports"] = [ + "Aleksandrów Kujawski", + "Aleksandrów Łódzki", + "Alwernia", + "Andrychów", + "Annopol", + "Augustów", + "Babimost", + "Baborów", + "Baranów Sandomierski", + "Barcin", + "Barczewo", + "Bardo", + "Barlinek", + "Bartoszyce", + "Barwice", + "Bełchatów", + "Bełżyce", + "Będzin", + "Biała", + "Biała Piska", + "Biała Podlaska", + "Biała Rawska", + "Białobrzegi", + "Białogard", + "Biały Bór", + "Białystok", + "Biecz", + "Bielawa", + "Bielsk Podlaski", + "Bielsko-Biała", + "Bieruń", + "Bierutów", + "Bieżuń", + "Biłgoraj", + "Biskupiec", + "Bisztynek", + "Blachownia", + "Błaszki", + "Błażowa", + "Błonie", + "Bobolice", + "Bobowa", + "Bochnia", + "Bodzentyn", + "Bogatynia", + "Boguchwała", + "Boguszów-Gorce", + "Bojanowo", + "Bolesławiec", + "Bolków", + "Borek Wielkopolski", + "Borne Sulinowo", + "Braniewo", + "Brańsk", + "Brodnica", + "Brok", + "Brusy", + "Brwinów", + "Brzeg", + "Brzeg Dolny", + "Brzesko", + "Brzeszcze", + "Brześć Kujawski", + "Brzeziny", + "Brzostek", + "Brzozów", + "Buk", + "Bukowno", + "Busko-Zdrój", + "Bychawa", + "Byczyna", + "Bydgoszcz", + "Bystrzyca Kłodzka", + "Bytom", + "Bytom Odrzański", + "Bytów", + "Cedynia", + "Chełm", + "Chełmek", + "Chełmno", + "Chełmża", + "Chęciny", + "Chmielnik", + "Chocianów", + "Chociwel", + "Chodecz", + "Chodzież", + "Chojna", + "Chojnice", + "Chojnów", + "Choroszcz", + "Chorzele", + "Chorzów", + "Choszczno", + "Chrzanów", + "Ciechanowiec", + "Ciechanów", + "Ciechocinek", + "Cieszanów", + "Cieszyn", + "Ciężkowice", + "Cybinka", + "Czaplinek", + "Czarna Białostocka", + "Czarna Woda", + "Czarne", + "Czarnków", + "Czchów", + "Czechowice-Dziedzice", + "Czeladź", + "Czempiń", + "Czerniejewo", + "Czersk", + "Czerwieńsk", + "Czerwionka-Leszczyny", + "Częstochowa", + "Człopa", + "Człuchów", + "Czyżew", + "Ćmielów", + "Daleszyce", + "Darłowo", + "Dąbie", + "Dąbrowa Białostocka", + "Dąbrowa Górnicza", + "Dąbrowa Tarnowska", + "Debrzno", + "Dębica", + "Dęblin", + "Dębno", + "Dobczyce", + "Dobiegniew", + "Dobra (powiat łobeski)", + "Dobra (powiat turecki)", + "Dobre Miasto", + "Dobrodzień", + "Dobrzany", + "Dobrzyń nad Wisłą", + "Dolsk", + "Drawno", + "Drawsko Pomorskie", + "Drezdenko", + "Drobin", + "Drohiczyn", + "Drzewica", + "Dukla", + "Duszniki-Zdrój", + "Dynów", + "Działdowo", + "Działoszyce", + "Działoszyn", + "Dzierzgoń", + "Dzierżoniów", + "Dziwnów", + "Elbląg", + "Ełk", + "Frampol", + "Frombork", + "Garwolin", + "Gąbin", + "Gdańsk", + "Gdynia", + "Giżycko", + "Glinojeck", + "Gliwice", + "Głogów", + "Głogów Małopolski", + "Głogówek", + "Głowno", + "Głubczyce", + "Głuchołazy", + "Głuszyca", + "Gniew", + "Gniewkowo", + "Gniezno", + "Gogolin", + "Golczewo", + "Goleniów", + "Golina", + "Golub-Dobrzyń", + "Gołańcz", + "Gołdap", + "Goniądz", + "Gorlice", + "Gorzów Śląski", + "Gorzów Wielkopolski", + "Gostynin", + "Gostyń", + "Gościno", + "Gozdnica", + "Góra", + "Góra Kalwaria", + "Górowo Iławeckie", + "Górzno", + "Grabów nad Prosną", + "Grajewo", + "Grodków", + "Grodzisk Mazowiecki", + "Grodzisk Wielkopolski", + "Grójec", + "Grudziądz", + "Grybów", + "Gryfice", + "Gryfino", + "Gryfów Śląski", + "Gubin", + "Hajnówka", + "Halinów", + "Hel", + "Hrubieszów", + "Iława", + "Iłowa", + "Iłża", + "Imielin", + "Inowrocław", + "Ińsko", + "Iwonicz-Zdrój", + "Izbica Kujawska", + "Jabłonowo Pomorskie", + "Janikowo", + "Janowiec Wielkopolski", + "Janów Lubelski", + "Jarocin", + "Jarosław", + "Jasień", + "Jasło", + "Jastarnia", + "Jastrowie", + "Jastrzębie-Zdrój", + "Jawor", + "Jaworzno", + "Jaworzyna Śląska", + "Jedlicze", + "Jedlina-Zdrój", + "Jedwabne", + "Jelcz-Laskowice", + "Jelenia Góra", + "Jeziorany", + "Jędrzejów", + "Jordanów", + "Józefów (powiat biłgorajski)", + "Józefów (powiat otwocki)", + "Jutrosin", + "Kalety", + "Kalisz", + "Kalisz Pomorski", + "Kalwaria Zebrzydowska", + "Kałuszyn", + "Kamienna Góra", + "Kamień Krajeński", + "Kamień Pomorski", + "Kamieńsk", + "Kańczuga", + "Karczew", + "Kargowa", + "Karlino", + "Karpacz", + "Kartuzy", + "Katowice", + "Kazimierz Dolny", + "Kazimierza Wielka", + "Kąty Wrocławskie", + "Kcynia", + "Kędzierzyn-Koźle", + "Kępice", + "Kępno", + "Kętrzyn", + "Kęty", + "Kielce", + "Kietrz", + "Kisielice", + "Kleczew", + "Kleszczele", + "Kluczbork", + "Kłecko", + "Kłobuck", + "Kłodawa", + "Kłodzko", + "Knurów", + "Knyszyn", + "Kobylin", + "Kobyłka", + "Kock", + "Kolbuszowa", + "Kolno", + "Kolonowskie", + "Koluszki", + "Kołaczyce", + "Koło", + "Kołobrzeg", + "Koniecpol", + "Konin", + "Konstancin-Jeziorna", + "Konstantynów Łódzki", + "Końskie", + "Koprzywnica", + "Korfantów", + "Koronowo", + "Korsze", + "Kosów Lacki", + "Kostrzyn", + "Kostrzyn nad Odrą", + "Koszalin", + "Kościan", + "Kościerzyna", + "Kowal", + "Kowalewo Pomorskie", + "Kowary", + "Koziegłowy", + "Kozienice", + "Koźmin Wielkopolski", + "Kożuchów", + "Kórnik", + "Krajenka", + "Kraków", + "Krapkowice", + "Krasnobród", + "Krasnystaw", + "Kraśnik", + "Krobia", + "Krosno", + "Krosno Odrzańskie", + "Krośniewice", + "Krotoszyn", + "Kruszwica", + "Krynica Morska", + "Krynica-Zdrój", + "Krynki", + "Krzanowice", + "Krzepice", + "Krzeszowice", + "Krzywiń", + "Krzyż Wielkopolski", + "Książ Wielkopolski", + "Kudowa-Zdrój", + "Kunów", + "Kutno", + "Kuźnia Raciborska", + "Kwidzyn", + "Lądek-Zdrój", + "Legionowo", + "Legnica", + "Lesko", + "Leszno", + "Leśna", + "Leśnica", + "Lewin Brzeski", + "Leżajsk", + "Lębork", + "Lędziny", + "Libiąż", + "Lidzbark", + "Lidzbark Warmiński", + "Limanowa", + "Lipiany", + "Lipno", + "Lipsk", + "Lipsko", + "Lubaczów", + "Lubań", + "Lubartów", + "Lubawa", + "Lubawka", + "Lubień Kujawski", + "Lubin", + "Lublin", + "Lubliniec", + "Lubniewice", + "Lubomierz", + "Luboń", + "Lubraniec", + "Lubsko", + "Lwówek", + "Lwówek Śląski", + "Łabiszyn", + "Łańcut", + "Łapy", + "Łasin", + "Łask", + "Łaskarzew", + "Łaszczów", + "Łaziska Górne", + "Łazy", + "Łeba", + "Łęczna", + "Łęczyca", + "Łęknica", + "Łobez", + "Łobżenica", + "Łochów", + "Łomianki", + "Łomża", + "Łosice", + "Łowicz", + "Łódź", + "Łuków", + "Maków Mazowiecki", + "Maków Podhalański", + "Malbork", + "Małogoszcz", + "Małomice", + "Margonin", + "Marki", + "Maszewo", + "Miasteczko Śląskie", + "Miastko", + "Michałowo", + "Miechów", + "Miejska Górka", + "Mielec", + "Mieroszów", + "Mieszkowice", + "Międzybórz", + "Międzychód", + "Międzylesie", + "Międzyrzec Podlaski", + "Międzyrzecz", + "Międzyzdroje", + "Mikołajki", + "Mikołów", + "Mikstat", + "Milanówek", + "Milicz", + "Miłakowo", + "Miłomłyn", + "Miłosław", + "Mińsk Mazowiecki", + "Mirosławiec", + "Mirsk", + "Mława", + "Młynary", + "Mogielnica", + "Mogilno", + "Mońki", + "Morąg", + "Mordy", + "Moryń", + "Mosina", + "Mrągowo", + "Mrocza", + "Mszana Dolna", + "Mszczonów", + "Murowana Goślina", + "Muszyna", + "Mysłowice", + "Myszków", + "Myszyniec", + "Myślenice", + "Myślibórz", + "Nakło nad Notecią", + "Nałęczów", + "Namysłów", + "Narol", + "Nasielsk", + "Nekla", + "Nidzica", + "Niemcza", + "Niemodlin", + "Niepołomice", + "Nieszawa", + "Nisko", + "Nowa Dęba", + "Nowa Ruda", + "Nowa Sarzyna", + "Nowa Sól", + "Nowe", + "Nowe Brzesko", + "Nowe Miasteczko", + "Nowe Miasto Lubawskie", + "Nowe Miasto nad Pilicą", + "Nowe Skalmierzyce", + "Nowe Warpno", + "Nowogard", + "Nowogrodziec", + "Nowogród", + "Nowogród Bobrzański", + "Nowy Dwór Gdański", + "Nowy Dwór Mazowiecki", + "Nowy Sącz", + "Nowy Staw", + "Nowy Targ", + "Nowy Tomyśl", + "Nowy Wiśnicz", + "Nysa", + "Oborniki", + "Oborniki Śląskie", + "Obrzycko", + "Odolanów", + "Ogrodzieniec", + "Okonek", + "Olecko", + "Olesno", + "Oleszyce", + "Oleśnica", + "Olkusz", + "Olsztyn", + "Olsztynek", + "Olszyna", + "Oława", + "Opalenica", + "Opatów", + "Opoczno", + "Opole", + "Opole Lubelskie", + "Orneta", + "Orzesze", + "Orzysz", + "Osieczna", + "Osiek", + "Ostrołęka", + "Ostroróg", + "Ostrowiec Świętokrzyski", + "Ostróda", + "Ostrów Lubelski", + "Ostrów Mazowiecka", + "Ostrów Wielkopolski", + "Ostrzeszów", + "Ośno Lubuskie", + "Oświęcim", + "Otmuchów", + "Otwock", + "Ozimek", + "Ozorków", + "Ożarów", + "Ożarów Mazowiecki", + "Pabianice", + "Paczków", + "Pajęczno", + "Pakość", + "Parczew", + "Pasłęk", + "Pasym", + "Pelplin", + "Pełczyce", + "Piaseczno", + "Piaski", + "Piastów", + "Piechowice", + "Piekary Śląskie", + "Pieniężno", + "Pieńsk", + "Pieszyce", + "Pilawa", + "Pilica", + "Pilzno", + "Piła", + "Piława Górna", + "Pińczów", + "Pionki", + "Piotrków Kujawski", + "Piotrków Trybunalski", + "Pisz", + "Piwniczna-Zdrój", + "Pleszew", + "Płock", + "Płońsk", + "Płoty", + "Pniewy", + "Pobiedziska", + "Poddębice", + "Podkowa Leśna", + "Pogorzela", + "Polanica-Zdrój", + "Polanów", + "Police", + "Polkowice", + "Połaniec", + "Połczyn-Zdrój", + "Poniatowa", + "Poniec", + "Poręba", + "Poznań", + "Prabuty", + "Praszka", + "Prochowice", + "Proszowice", + "Prószków", + "Pruchnik", + "Prudnik", + "Prusice", + "Pruszcz Gdański", + "Pruszków", + "Przasnysz", + "Przecław", + "Przedbórz", + "Przedecz", + "Przemków", + "Przemyśl", + "Przeworsk", + "Przysucha", + "Pszczyna", + "Pszów", + "Puck", + "Puławy", + "Pułtusk", + "Puszczykowo", + "Pyrzyce", + "Pyskowice", + "Pyzdry", + "Rabka-Zdrój", + "Raciąż", + "Racibórz", + "Radków", + "Radlin", + "Radłów", + "Radom", + "Radomsko", + "Radomyśl Wielki", + "Radymno", + "Radziejów", + "Radzionków", + "Radzymin", + "Radzyń Chełmiński", + "Radzyń Podlaski", + "Rajgród", + "Rakoniewice", + "Raszków", + "Rawa Mazowiecka", + "Rawicz", + "Recz", + "Reda", + "Rejowiec Fabryczny", + "Resko", + "Reszel", + "Rogoźno", + "Ropczyce", + "Różan", + "Ruciane-Nida", + "Ruda Śląska", + "Rudnik nad Sanem", + "Rumia", + "Rybnik", + "Rychwał", + "Rydułtowy", + "Rydzyna", + "Ryglice", + "Ryki", + "Rymanów", + "Ryn", + "Rypin", + "Rzepin", + "Rzeszów", + "Rzgów", + "Sandomierz", + "Sanok", + "Sejny", + "Serock", + "Sędziszów", + "Sędziszów Małopolski", + "Sępopol", + "Sępólno Krajeńskie", + "Sianów", + "Siechnice", + "Siedlce", + "Siemianowice Śląskie", + "Siemiatycze", + "Sieniawa", + "Sieradz", + "Sieraków", + "Sierpc", + "Siewierz", + "Skalbmierz", + "Skała", + "Skarszewy", + "Skaryszew", + "Skarżysko-Kamienna", + "Skawina", + "Skępe", + "Skierniewice", + "Skoczów", + "Skoki", + "Skórcz", + "Skwierzyna", + "Sława", + "Sławków", + "Sławno", + "Słomniki", + "Słubice", + "Słupca", + "Słupsk", + "Sobótka", + "Sochaczew", + "Sokołów Małopolski", + "Sokołów Podlaski", + "Sokółka", + "Solec Kujawski", + "Sompolno", + "Sopot", + "Sosnowiec", + "Sośnicowice", + "Stalowa Wola", + "Starachowice", + "Stargard Szczeciński", + "Starogard Gdański", + "Stary Sącz", + "Staszów", + "Stawiski", + "Stawiszyn", + "Stąporków", + "Stęszew", + "Stoczek Łukowski", + "Stronie Śląskie", + "Strumień", + "Stryków", + "Strzegom", + "Strzelce Krajeńskie", + "Strzelce Opolskie", + "Strzelin", + "Strzelno", + "Strzyżów", + "Sucha Beskidzka", + "Suchań", + "Suchedniów", + "Suchowola", + "Sulechów", + "Sulejów", + "Sulejówek", + "Sulęcin", + "Sulmierzyce", + "Sułkowice", + "Supraśl", + "Suraż", + "Susz", + "Suwałki", + "Swarzędz", + "Syców", + "Szadek", + "Szamocin", + "Szamotuły", + "Szczawnica", + "Szczawno-Zdrój", + "Szczebrzeszyn", + "Szczecin", + "Szczecinek", + "Szczekociny", + "Szczucin", + "Szczuczyn", + "Szczyrk", + "Szczytna", + "Szczytno", + "Szepietowo", + "Szklarska Poręba", + "Szlichtyngowa", + "Szprotawa", + "Sztum", + "Szubin", + "Szydłowiec", + "Ścinawa", + "Ślesin", + "Śmigiel", + "Śrem", + "Środa Śląska", + "Środa Wielkopolska", + "Świątniki Górne", + "Świdnica", + "Świdnik", + "Świdwin", + "Świebodzice", + "Świebodzin", + "Świecie", + "Świeradów-Zdrój", + "Świerzawa", + "Świętochłowice", + "Świnoujście", + "Tarczyn", + "Tarnobrzeg", + "Tarnogród", + "Tarnowskie Góry", + "Tarnów", + "Tczew", + "Terespol", + "Tłuszcz", + "Tolkmicko", + "Tomaszów Lubelski", + "Tomaszów Mazowiecki", + "Toruń", + "Torzym", + "Toszek", + "Trzcianka", + "Trzciel", + "Trzcińsko-Zdrój", + "Trzebiatów", + "Trzebinia", + "Trzebnica", + "Trzemeszno", + "Tuchola", + "Tuchów", + "Tuczno", + "Tuliszków", + "Turek", + "Tuszyn", + "Twardogóra", + "Tychowo", + "Tychy", + "Tyczyn", + "Tykocin", + "Tyszowce", + "Ujazd", + "Ujście", + "Ulanów", + "Uniejów", + "Ustka", + "Ustroń", + "Ustrzyki Dolne", + "Wadowice", + "Wałbrzych", + "Wałcz", + "Warka", + "Warszawa", + "Warta", + "Wasilków", + "Wąbrzeźno", + "Wąchock", + "Wągrowiec", + "Wąsosz", + "Wejherowo", + "Węgliniec", + "Węgorzewo", + "Węgorzyno", + "Węgrów", + "Wiązów", + "Wieleń", + "Wielichowo", + "Wieliczka", + "Wieluń", + "Wieruszów", + "Więcbork", + "Wilamowice", + "Wisła", + "Witkowo", + "Witnica", + "Wleń", + "Władysławowo", + "Włocławek", + "Włodawa", + "Włoszczowa", + "Wodzisław Śląski", + "Wojcieszów", + "Wojkowice", + "Wojnicz", + "Wolbórz", + "Wolbrom", + "Wolin", + "Wolsztyn", + "Wołczyn", + "Wołomin", + "Wołów", + "Woźniki", + "Wrocław", + "Wronki", + "Września", + "Wschowa", + "Wyrzysk", + "Wysoka", + "Wysokie Mazowieckie", + "Wyszków", + "Wyszogród", + "Wyśmierzyce", + "Zabłudów", + "Zabrze", + "Zagórów", + "Zagórz", + "Zakliczyn", + "Zakopane", + "Zakroczym", + "Zalewo", + "Zambrów", + "Zamość", + "Zator", + "Zawadzkie", + "Zawichost", + "Zawidów", + "Zawiercie", + "Ząbki", + "Ząbkowice Śląskie", + "Zbąszynek", + "Zbąszyń", + "Zduny", + "Zduńska Wola", + "Zdzieszowice", + "Zelów", + "Zgierz", + "Zgorzelec", + "Zielona Góra", + "Zielonka", + "Ziębice", + "Złocieniec", + "Złoczew", + "Złotoryja", + "Złotów", + "Złoty Stok", + "Zwierzyniec", + "Zwoleń", + "Żabno", + "Żagań", + "Żarki", + "Żarów", + "Żary", + "Żelechów", + "Żerków", + "Żmigród", + "Żnin", + "Żory", + "Żukowo", + "Żuromin", + "Żychlin", + "Żyrardów", + "Żywiec" +]; + +},{}],788:[function(require,module,exports){ +module["exports"] = [ + "Afganistan", + "Albania", + "Algieria", + "Andora", + "Angola", + "Antigua i Barbuda", + "Arabia Saudyjska", + "Argentyna", + "Armenia", + "Australia", + "Austria", + "Azerbejdżan", + "Bahamy", + "Bahrajn", + "Bangladesz", + "Barbados", + "Belgia", + "Belize", + "Benin", + "Bhutan", + "Białoruś", + "Birma", + "Boliwia", + "Sucre", + "Bośnia i Hercegowina", + "Botswana", + "Brazylia", + "Brunei", + "Bułgaria", + "Burkina Faso", + "Burundi", + "Chile", + "Chiny", + "Chorwacja", + "Cypr", + "Czad", + "Czarnogóra", + "Czechy", + "Dania", + "Demokratyczna Republika Konga", + "Dominika", + "Dominikana", + "Dżibuti", + "Egipt", + "Ekwador", + "Erytrea", + "Estonia", + "Etiopia", + "Fidżi", + "Filipiny", + "Finlandia", + "Francja", + "Gabon", + "Gambia", + "Ghana", + "Grecja", + "Grenada", + "Gruzja", + "Gujana", + "Gwatemala", + "Gwinea", + "Gwinea Bissau", + "Gwinea Równikowa", + "Haiti", + "Hiszpania", + "Holandia", + "Haga", + "Honduras", + "Indie", + "Indonezja", + "Irak", + "Iran", + "Irlandia", + "Islandia", + "Izrael", + "Jamajka", + "Japonia", + "Jemen", + "Jordania", + "Kambodża", + "Kamerun", + "Kanada", + "Katar", + "Kazachstan", + "Kenia", + "Kirgistan", + "Kiribati", + "Kolumbia", + "Komory", + "Kongo", + "Korea Południowa", + "Korea Północna", + "Kostaryka", + "Kuba", + "Kuwejt", + "Laos", + "Lesotho", + "Liban", + "Liberia", + "Libia", + "Liechtenstein", + "Litwa", + "Luksemburg", + "Łotwa", + "Macedonia", + "Madagaskar", + "Malawi", + "Malediwy", + "Malezja", + "Mali", + "Malta", + "Maroko", + "Mauretania", + "Mauritius", + "Meksyk", + "Mikronezja", + "Mołdawia", + "Monako", + "Mongolia", + "Mozambik", + "Namibia", + "Nauru", + "Nepal", + "Niemcy", + "Niger", + "Nigeria", + "Nikaragua", + "Norwegia", + "Nowa Zelandia", + "Oman", + "Pakistan", + "Palau", + "Panama", + "Papua-Nowa Gwinea", + "Paragwaj", + "Peru", + "Polska", + "322 575", + "Portugalia", + "Republika Południowej Afryki", + "Republika Środkowoafrykańska", + "Republika Zielonego Przylądka", + "Rosja", + "Rumunia", + "Rwanda", + "Saint Kitts i Nevis", + "Saint Lucia", + "Saint Vincent i Grenadyny", + "Salwador", + "Samoa", + "San Marino", + "Senegal", + "Serbia", + "Seszele", + "Sierra Leone", + "Singapur", + "Słowacja", + "Słowenia", + "Somalia", + "Sri Lanka", + "Stany Zjednoczone", + "Suazi", + "Sudan", + "Sudan Południowy", + "Surinam", + "Syria", + "Szwajcaria", + "Szwecja", + "Tadżykistan", + "Tajlandia", + "Tanzania", + "Timor Wschodni", + "Togo", + "Tonga", + "Trynidad i Tobago", + "Tunezja", + "Turcja", + "Turkmenistan", + "Tuvalu", + "Funafuti", + "Uganda", + "Ukraina", + "Urugwaj", + 2008, + "Uzbekistan", + "Vanuatu", + "Watykan", + "Wenezuela", + "Węgry", + "Wielka Brytania", + "Wietnam", + "Włochy", + "Wybrzeże Kości Słoniowej", + "Wyspy Marshalla", + "Wyspy Salomona", + "Wyspy Świętego Tomasza i Książęca", + "Zambia", + "Zimbabwe", + "Zjednoczone Emiraty Arabskie" +]; + +},{}],789:[function(require,module,exports){ +module["exports"] = [ + "Polska" +]; + +},{}],790:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_prefix = require("./street_prefix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":785,"./city":786,"./city_name":787,"./country":788,"./default_country":789,"./postcode":791,"./secondary_address":792,"./state":793,"./state_abbr":794,"./street_address":795,"./street_name":796,"./street_prefix":797}],791:[function(require,module,exports){ +module["exports"] = [ + "##-###" +]; + +},{}],792:[function(require,module,exports){ +arguments[4][116][0].apply(exports,arguments) +},{"dup":116}],793:[function(require,module,exports){ +module["exports"] = [ + "Dolnośląskie", + "Kujawsko-pomorskie", + "Lubelskie", + "Lubuskie", + "Łódzkie", + "Małopolskie", + "Mazowieckie", + "Opolskie", + "Podkarpackie", + "Podlaskie", + "Pomorskie", + "Śląskie", + "Świętokrzyskie", + "Warmińsko-mazurskie", + "Wielkopolskie", + "Zachodniopomorskie" +]; + +},{}],794:[function(require,module,exports){ +module["exports"] = [ + "DŚ", + "KP", + "LB", + "LS", + "ŁD", + "MP", + "MZ", + "OP", + "PK", + "PL", + "PM", + "ŚL", + "ŚK", + "WM", + "WP", + "ZP" +]; + +},{}],795:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],796:[function(require,module,exports){ +module["exports"] = [ + "#{street_prefix} #{Name.last_name}" +]; + +},{}],797:[function(require,module,exports){ +module["exports"] = [ + "ul.", + "al." +]; + +},{}],798:[function(require,module,exports){ +module["exports"] = [ + "50-###-##-##", + "51-###-##-##", + "53-###-##-##", + "57-###-##-##", + "60-###-##-##", + "66-###-##-##", + "69-###-##-##", + "72-###-##-##", + "73-###-##-##", + "78-###-##-##", + "79-###-##-##", + "88-###-##-##" +]; + +},{}],799:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":798,"dup":167}],800:[function(require,module,exports){ +arguments[4][123][0].apply(exports,arguments) +},{"dup":123}],801:[function(require,module,exports){ +arguments[4][267][0].apply(exports,arguments) +},{"dup":267}],802:[function(require,module,exports){ +arguments[4][268][0].apply(exports,arguments) +},{"dup":268}],803:[function(require,module,exports){ +arguments[4][125][0].apply(exports,arguments) +},{"dup":125}],804:[function(require,module,exports){ +arguments[4][126][0].apply(exports,arguments) +},{"dup":126}],805:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.suffix = require("./suffix"); +company.adjetive = require("./adjetive"); +company.descriptor = require("./descriptor"); +company.noun = require("./noun"); +company.bs_verb = require("./bs_verb"); +company.bs_adjective = require("./bs_adjective"); +company.bs_noun = require("./bs_noun"); +company.name = require("./name"); + +},{"./adjetive":800,"./bs_adjective":801,"./bs_noun":802,"./bs_verb":803,"./descriptor":804,"./name":806,"./noun":807,"./suffix":808}],806:[function(require,module,exports){ +arguments[4][272][0].apply(exports,arguments) +},{"dup":272}],807:[function(require,module,exports){ +arguments[4][129][0].apply(exports,arguments) +},{"dup":129}],808:[function(require,module,exports){ +arguments[4][274][0].apply(exports,arguments) +},{"dup":274}],809:[function(require,module,exports){ +var pl = {}; +module['exports'] = pl; +pl.title = "Polish"; +pl.name = require("./name"); +pl.address = require("./address"); +pl.company = require("./company"); +pl.internet = require("./internet"); +pl.lorem = require("./lorem"); +pl.phone_number = require("./phone_number"); +pl.cell_phone = require("./cell_phone"); + +},{"./address":790,"./cell_phone":799,"./company":805,"./internet":812,"./lorem":813,"./name":817,"./phone_number":823}],810:[function(require,module,exports){ +module["exports"] = [ + "com", + "pl", + "com.pl", + "net", + "org" +]; + +},{}],811:[function(require,module,exports){ +arguments[4][174][0].apply(exports,arguments) +},{"dup":174}],812:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":810,"./free_email":811,"dup":98}],813:[function(require,module,exports){ +arguments[4][138][0].apply(exports,arguments) +},{"./supplemental":814,"./words":815,"dup":138}],814:[function(require,module,exports){ +arguments[4][139][0].apply(exports,arguments) +},{"dup":139}],815:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],816:[function(require,module,exports){ +module["exports"] = [ + "Aaron", + "Abraham", + "Adam", + "Adrian", + "Atanazy", + "Agaton", + "Alan", + "Albert", + "Aleksander", + "Aleksy", + "Alfred", + "Alwar", + "Ambroży", + "Anatol", + "Andrzej", + "Antoni", + "Apollinary", + "Apollo", + "Arkady", + "Arkadiusz", + "Archibald", + "Arystarch", + "Arnold", + "Arseniusz", + "Artur", + "August", + "Baldwin", + "Bazyli", + "Benedykt", + "Beniamin", + "Bernard", + "Bertrand", + "Bertram", + "Borys", + "Brajan", + "Bruno", + "Cezary", + "Cecyliusz", + "Karol", + "Krystian", + "Krzysztof", + "Klarencjusz", + "Klaudiusz", + "Klemens", + "Konrad", + "Konstanty", + "Konstantyn", + "Kornel", + "Korneliusz", + "Korneli", + "Cyryl", + "Cyrus", + "Damian", + "Daniel", + "Dariusz", + "Dawid", + "Dionizy", + "Demetriusz", + "Dominik", + "Donald", + "Dorian", + "Edgar", + "Edmund", + "Edward", + "Edwin", + "Efrem", + "Efraim", + "Eliasz", + "Eleazar", + "Emil", + "Emanuel", + "Erast", + "Ernest", + "Eugeniusz", + "Eustracjusz", + "Fabian", + "Feliks", + "Florian", + "Franciszek", + "Fryderyk", + "Gabriel", + "Gedeon", + "Galfryd", + "Jerzy", + "Gerald", + "Gerazym", + "Gilbert", + "Gonsalwy", + "Grzegorz", + "Gwido", + "Harald", + "Henryk", + "Herbert", + "Herman", + "Hilary", + "Horacy", + "Hubert", + "Hugo", + "Ignacy", + "Igor", + "Hilarion", + "Innocenty", + "Hipolit", + "Ireneusz", + "Erwin", + "Izaak", + "Izajasz", + "Izydor", + "Jakub", + "Jeremi", + "Jeremiasz", + "Hieronim", + "Gerald", + "Joachim", + "Jan", + "Janusz", + "Jonatan", + "Józef", + "Jozue", + "Julian", + "Juliusz", + "Justyn", + "Kalistrat", + "Kazimierz", + "Wawrzyniec", + "Laurenty", + "Laurencjusz", + "Łazarz", + "Leon", + "Leonard", + "Leonid", + "Leon", + "Ludwik", + "Łukasz", + "Lucjan", + "Magnus", + "Makary", + "Marceli", + "Marek", + "Marcin", + "Mateusz", + "Maurycy", + "Maksym", + "Maksymilian", + "Michał", + "Miron", + "Modest", + "Mojżesz", + "Natan", + "Natanael", + "Nazariusz", + "Nazary", + "Nestor", + "Mikołaj", + "Nikodem", + "Olaf", + "Oleg", + "Oliwier", + "Onufry", + "Orestes", + "Oskar", + "Ansgary", + "Osmund", + "Pankracy", + "Pantaleon", + "Patryk", + "Patrycjusz", + "Patrycy", + "Paweł", + "Piotr", + "Filemon", + "Filip", + "Platon", + "Polikarp", + "Porfiry", + "Porfiriusz", + "Prokles", + "Prokul", + "Prokop", + "Kwintyn", + "Randolf", + "Rafał", + "Rajmund", + "Reginald", + "Rajnold", + "Ryszard", + "Robert", + "Roderyk", + "Roger", + "Roland", + "Roman", + "Romeo", + "Reginald", + "Rudolf", + "Samson", + "Samuel", + "Salwator", + "Sebastian", + "Serafin", + "Sergiusz", + "Seweryn", + "Zygmunt", + "Sylwester", + "Szymon", + "Salomon", + "Spirydion", + "Stanisław", + "Szczepan", + "Stefan", + "Terencjusz", + "Teodor", + "Tomasz", + "Tymoteusz", + "Tobiasz", + "Walenty", + "Walentyn", + "Walerian", + "Walery", + "Wiktor", + "Wincenty", + "Witalis", + "Włodzimierz", + "Władysław", + "Błażej", + "Walter", + "Walgierz", + "Wacław", + "Wilfryd", + "Wilhelm", + "Ksawery", + "Ksenofont", + "Jerzy", + "Zachariasz", + "Zachary", + "Ada", + "Adelajda", + "Agata", + "Agnieszka", + "Agrypina", + "Aida", + "Aleksandra", + "Alicja", + "Alina", + "Amanda", + "Anastazja", + "Angela", + "Andżelika", + "Angelina", + "Anna", + "Hanna", + "—", + "Antonina", + "Ariadna", + "Aurora", + "Barbara", + "Beatrycze", + "Berta", + "Brygida", + "Kamila", + "Karolina", + "Karolina", + "Kornelia", + "Katarzyna", + "Cecylia", + "Karolina", + "Chloe", + "Krystyna", + "Klara", + "Klaudia", + "Klementyna", + "Konstancja", + "Koralia", + "Daria", + "Diana", + "Dina", + "Dorota", + "Edyta", + "Eleonora", + "Eliza", + "Elżbieta", + "Izabela", + "Elwira", + "Emilia", + "Estera", + "Eudoksja", + "Eudokia", + "Eugenia", + "Ewa", + "Ewelina", + "Ferdynanda", + "Florencja", + "Franciszka", + "Gabriela", + "Gertruda", + "Gloria", + "Gracja", + "Jadwiga", + "Helena", + "Henryka", + "Nadzieja", + "Ida", + "Ilona", + "Helena", + "Irena", + "Irma", + "Izabela", + "Izolda", + "Jakubina", + "Joanna", + "Janina", + "Żaneta", + "Joanna", + "Ginewra", + "Józefina", + "Judyta", + "Julia", + "Julia", + "Julita", + "Justyna", + "Kira", + "Cyra", + "Kleopatra", + "Larysa", + "Laura", + "Laurencja", + "Laurentyna", + "Lea", + "Leila", + "Eleonora", + "Liliana", + "Lilianna", + "Lilia", + "Lilla", + "Liza", + "Eliza", + "Laura", + "Ludwika", + "Luiza", + "Łucja", + "Lucja", + "Lidia", + "Amabela", + "Magdalena", + "Malwina", + "Małgorzata", + "Greta", + "Marianna", + "Maryna", + "Marta", + "Martyna", + "Maria", + "Matylda", + "Maja", + "Maja", + "Melania", + "Michalina", + "Monika", + "Nadzieja", + "Noemi", + "Natalia", + "Nikola", + "Nina", + "Olga", + "Olimpia", + "Oliwia", + "Ofelia", + "Patrycja", + "Paula", + "Pelagia", + "Penelopa", + "Filipa", + "Paulina", + "Rachela", + "Rebeka", + "Regina", + "Renata", + "Rozalia", + "Róża", + "Roksana", + "Rufina", + "Ruta", + "Sabina", + "Sara", + "Serafina", + "Sybilla", + "Sylwia", + "Zofia", + "Stella", + "Stefania", + "Zuzanna", + "Tamara", + "Tacjana", + "Tekla", + "Teodora", + "Teresa", + "Walentyna", + "Waleria", + "Wanesa", + "Wiara", + "Weronika", + "Wiktoria", + "Wirginia", + "Bibiana", + "Bibianna", + "Wanda", + "Wilhelmina", + "Ksawera", + "Ksenia", + "Zoe" +]; + +},{}],817:[function(require,module,exports){ +arguments[4][548][0].apply(exports,arguments) +},{"./first_name":816,"./last_name":818,"./name":819,"./prefix":820,"./title":821,"dup":548}],818:[function(require,module,exports){ +module["exports"] = [ + "Adamczak", + "Adamczyk", + "Adamek", + "Adamiak", + "Adamiec", + "Adamowicz", + "Adamski", + "Adamus", + "Aleksandrowicz", + "Andrzejczak", + "Andrzejewski", + "Antczak", + "Augustyn", + "Augustyniak", + "Bagiński", + "Balcerzak", + "Banach", + "Banasiak", + "Banasik", + "Banaś", + "Baran", + "Baranowski", + "Barański", + "Bartczak", + "Bartkowiak", + "Bartnik", + "Bartosik", + "Bednarczyk", + "Bednarek", + "Bednarski", + "Bednarz", + "Białas", + "Białek", + "Białkowski", + "Bielak", + "Bielawski", + "Bielecki", + "Bielski", + "Bieniek", + "Biernacki", + "Biernat", + "Bieńkowski", + "Bilski", + "Bober", + "Bochenek", + "Bogucki", + "Bogusz", + "Borek", + "Borkowski", + "Borowiec", + "Borowski", + "Bożek", + "Broda", + "Brzeziński", + "Brzozowski", + "Buczek", + "Buczkowski", + "Buczyński", + "Budziński", + "Budzyński", + "Bujak", + "Bukowski", + "Burzyński", + "Bąk", + "Bąkowski", + "Błaszczak", + "Błaszczyk", + "Cebula", + "Chmiel", + "Chmielewski", + "Chmura", + "Chojnacki", + "Chojnowski", + "Cholewa", + "Chrzanowski", + "Chudzik", + "Cichocki", + "Cichoń", + "Cichy", + "Ciesielski", + "Cieśla", + "Cieślak", + "Cieślik", + "Ciszewski", + "Cybulski", + "Cygan", + "Czaja", + "Czajka", + "Czajkowski", + "Czapla", + "Czarnecki", + "Czech", + "Czechowski", + "Czekaj", + "Czerniak", + "Czerwiński", + "Czyż", + "Czyżewski", + "Dec", + "Dobosz", + "Dobrowolski", + "Dobrzyński", + "Domagała", + "Domański", + "Dominiak", + "Drabik", + "Drozd", + "Drozdowski", + "Drzewiecki", + "Dróżdż", + "Dubiel", + "Duda", + "Dudek", + "Dudziak", + "Dudzik", + "Dudziński", + "Duszyński", + "Dziedzic", + "Dziuba", + "Dąbek", + "Dąbkowski", + "Dąbrowski", + "Dębowski", + "Dębski", + "Długosz", + "Falkowski", + "Fijałkowski", + "Filipek", + "Filipiak", + "Filipowicz", + "Flak", + "Flis", + "Florczak", + "Florek", + "Frankowski", + "Frąckowiak", + "Frączek", + "Frątczak", + "Furman", + "Gadomski", + "Gajda", + "Gajewski", + "Gaweł", + "Gawlik", + "Gawron", + "Gawroński", + "Gałka", + "Gałązka", + "Gil", + "Godlewski", + "Golec", + "Gołąb", + "Gołębiewski", + "Gołębiowski", + "Grabowski", + "Graczyk", + "Grochowski", + "Grudzień", + "Gruszczyński", + "Gruszka", + "Grzegorczyk", + "Grzelak", + "Grzesiak", + "Grzesik", + "Grześkowiak", + "Grzyb", + "Grzybowski", + "Grzywacz", + "Gutowski", + "Guzik", + "Gwóźdź", + "Góra", + "Góral", + "Górecki", + "Górka", + "Górniak", + "Górny", + "Górski", + "Gąsior", + "Gąsiorowski", + "Głogowski", + "Głowacki", + "Głąb", + "Hajduk", + "Herman", + "Iwański", + "Izdebski", + "Jabłoński", + "Jackowski", + "Jagielski", + "Jagiełło", + "Jagodziński", + "Jakubiak", + "Jakubowski", + "Janas", + "Janiak", + "Janicki", + "Janik", + "Janiszewski", + "Jankowiak", + "Jankowski", + "Janowski", + "Janus", + "Janusz", + "Januszewski", + "Jaros", + "Jarosz", + "Jarząbek", + "Jasiński", + "Jastrzębski", + "Jaworski", + "Jaśkiewicz", + "Jezierski", + "Jurek", + "Jurkiewicz", + "Jurkowski", + "Juszczak", + "Jóźwiak", + "Jóźwik", + "Jędrzejczak", + "Jędrzejczyk", + "Jędrzejewski", + "Kacprzak", + "Kaczmarczyk", + "Kaczmarek", + "Kaczmarski", + "Kaczor", + "Kaczorowski", + "Kaczyński", + "Kaleta", + "Kalinowski", + "Kalisz", + "Kamiński", + "Kania", + "Kaniewski", + "Kapusta", + "Karaś", + "Karczewski", + "Karpiński", + "Karwowski", + "Kasperek", + "Kasprzak", + "Kasprzyk", + "Kaszuba", + "Kawa", + "Kawecki", + "Kałuża", + "Kaźmierczak", + "Kiełbasa", + "Kisiel", + "Kita", + "Klimczak", + "Klimek", + "Kmiecik", + "Kmieć", + "Knapik", + "Kobus", + "Kogut", + "Kolasa", + "Komorowski", + "Konieczna", + "Konieczny", + "Konopka", + "Kopczyński", + "Koper", + "Kopeć", + "Korzeniowski", + "Kos", + "Kosiński", + "Kosowski", + "Kostecki", + "Kostrzewa", + "Kot", + "Kotowski", + "Kowal", + "Kowalczuk", + "Kowalczyk", + "Kowalewski", + "Kowalik", + "Kowalski", + "Koza", + "Kozak", + "Kozieł", + "Kozioł", + "Kozłowski", + "Kołakowski", + "Kołodziej", + "Kołodziejczyk", + "Kołodziejski", + "Krajewski", + "Krakowiak", + "Krawczyk", + "Krawiec", + "Kruk", + "Krukowski", + "Krupa", + "Krupiński", + "Kruszewski", + "Krysiak", + "Krzemiński", + "Krzyżanowski", + "Król", + "Królikowski", + "Książek", + "Kubacki", + "Kubiak", + "Kubica", + "Kubicki", + "Kubik", + "Kuc", + "Kucharczyk", + "Kucharski", + "Kuchta", + "Kuciński", + "Kuczyński", + "Kujawa", + "Kujawski", + "Kula", + "Kulesza", + "Kulig", + "Kulik", + "Kuliński", + "Kurek", + "Kurowski", + "Kuś", + "Kwaśniewski", + "Kwiatkowski", + "Kwiecień", + "Kwieciński", + "Kędzierski", + "Kędziora", + "Kępa", + "Kłos", + "Kłosowski", + "Lach", + "Laskowski", + "Lasota", + "Lech", + "Lenart", + "Lesiak", + "Leszczyński", + "Lewandowski", + "Lewicki", + "Leśniak", + "Leśniewski", + "Lipiński", + "Lipka", + "Lipski", + "Lis", + "Lisiecki", + "Lisowski", + "Maciejewski", + "Maciąg", + "Mackiewicz", + "Madej", + "Maj", + "Majcher", + "Majchrzak", + "Majewski", + "Majka", + "Makowski", + "Malec", + "Malicki", + "Malinowski", + "Maliszewski", + "Marchewka", + "Marciniak", + "Marcinkowski", + "Marczak", + "Marek", + "Markiewicz", + "Markowski", + "Marszałek", + "Marzec", + "Masłowski", + "Matusiak", + "Matuszak", + "Matuszewski", + "Matysiak", + "Mazur", + "Mazurek", + "Mazurkiewicz", + "Maćkowiak", + "Małecki", + "Małek", + "Maślanka", + "Michalak", + "Michalczyk", + "Michalik", + "Michalski", + "Michałek", + "Michałowski", + "Mielczarek", + "Mierzejewski", + "Mika", + "Mikołajczak", + "Mikołajczyk", + "Mikulski", + "Milczarek", + "Milewski", + "Miller", + "Misiak", + "Misztal", + "Miśkiewicz", + "Modzelewski", + "Molenda", + "Morawski", + "Motyka", + "Mroczek", + "Mroczkowski", + "Mrozek", + "Mróz", + "Mucha", + "Murawski", + "Musiał", + "Muszyński", + "Młynarczyk", + "Napierała", + "Nawrocki", + "Nawrot", + "Niedziela", + "Niedzielski", + "Niedźwiecki", + "Niemczyk", + "Niemiec", + "Niewiadomski", + "Noga", + "Nowacki", + "Nowaczyk", + "Nowak", + "Nowakowski", + "Nowicki", + "Nowiński", + "Olczak", + "Olejniczak", + "Olejnik", + "Olszewski", + "Orzechowski", + "Orłowski", + "Osiński", + "Ossowski", + "Ostrowski", + "Owczarek", + "Paczkowski", + "Pająk", + "Pakuła", + "Paluch", + "Panek", + "Partyka", + "Pasternak", + "Paszkowski", + "Pawelec", + "Pawlak", + "Pawlicki", + "Pawlik", + "Pawlikowski", + "Pawłowski", + "Pałka", + "Piasecki", + "Piechota", + "Piekarski", + "Pietras", + "Pietruszka", + "Pietrzak", + "Pietrzyk", + "Pilarski", + "Pilch", + "Piotrowicz", + "Piotrowski", + "Piwowarczyk", + "Piórkowski", + "Piątek", + "Piątkowski", + "Piłat", + "Pluta", + "Podgórski", + "Polak", + "Popławski", + "Porębski", + "Prokop", + "Prus", + "Przybylski", + "Przybysz", + "Przybył", + "Przybyła", + "Ptak", + "Puchalski", + "Pytel", + "Płonka", + "Raczyński", + "Radecki", + "Radomski", + "Rak", + "Rakowski", + "Ratajczak", + "Robak", + "Rogala", + "Rogalski", + "Rogowski", + "Rojek", + "Romanowski", + "Rosa", + "Rosiak", + "Rosiński", + "Ruciński", + "Rudnicki", + "Rudziński", + "Rudzki", + "Rusin", + "Rutkowski", + "Rybak", + "Rybarczyk", + "Rybicki", + "Rzepka", + "Różański", + "Różycki", + "Sadowski", + "Sawicki", + "Serafin", + "Siedlecki", + "Sienkiewicz", + "Sieradzki", + "Sikora", + "Sikorski", + "Sitek", + "Siwek", + "Skalski", + "Skiba", + "Skibiński", + "Skoczylas", + "Skowron", + "Skowronek", + "Skowroński", + "Skrzypczak", + "Skrzypek", + "Skóra", + "Smoliński", + "Sobczak", + "Sobczyk", + "Sobieraj", + "Sobolewski", + "Socha", + "Sochacki", + "Sokołowski", + "Sokół", + "Sosnowski", + "Sowa", + "Sowiński", + "Sołtys", + "Sołtysiak", + "Sroka", + "Stachowiak", + "Stachowicz", + "Stachura", + "Stachurski", + "Stanek", + "Staniszewski", + "Stanisławski", + "Stankiewicz", + "Stasiak", + "Staszewski", + "Stawicki", + "Stec", + "Stefaniak", + "Stefański", + "Stelmach", + "Stolarczyk", + "Stolarski", + "Strzelczyk", + "Strzelecki", + "Stępień", + "Stępniak", + "Surma", + "Suski", + "Szafrański", + "Szatkowski", + "Szczepaniak", + "Szczepanik", + "Szczepański", + "Szczerba", + "Szcześniak", + "Szczygieł", + "Szczęsna", + "Szczęsny", + "Szeląg", + "Szewczyk", + "Szostak", + "Szulc", + "Szwarc", + "Szwed", + "Szydłowski", + "Szymański", + "Szymczak", + "Szymczyk", + "Szymkowiak", + "Szyszka", + "Sławiński", + "Słowik", + "Słowiński", + "Tarnowski", + "Tkaczyk", + "Tokarski", + "Tomala", + "Tomaszewski", + "Tomczak", + "Tomczyk", + "Tracz", + "Trojanowski", + "Trzciński", + "Trzeciak", + "Turek", + "Twardowski", + "Urban", + "Urbanek", + "Urbaniak", + "Urbanowicz", + "Urbańczyk", + "Urbański", + "Walczak", + "Walkowiak", + "Warchoł", + "Wasiak", + "Wasilewski", + "Wawrzyniak", + "Wesołowski", + "Wieczorek", + "Wierzbicki", + "Wilczek", + "Wilczyński", + "Wilk", + "Winiarski", + "Witczak", + "Witek", + "Witkowski", + "Wiącek", + "Więcek", + "Więckowski", + "Wiśniewski", + "Wnuk", + "Wojciechowski", + "Wojtas", + "Wojtasik", + "Wojtczak", + "Wojtkowiak", + "Wolak", + "Woliński", + "Wolny", + "Wolski", + "Woś", + "Woźniak", + "Wrona", + "Wroński", + "Wróbel", + "Wróblewski", + "Wypych", + "Wysocki", + "Wyszyński", + "Wójcicki", + "Wójcik", + "Wójtowicz", + "Wąsik", + "Węgrzyn", + "Włodarczyk", + "Włodarski", + "Zaborowski", + "Zabłocki", + "Zagórski", + "Zając", + "Zajączkowski", + "Zakrzewski", + "Zalewski", + "Zaremba", + "Zarzycki", + "Zaręba", + "Zawada", + "Zawadzki", + "Zdunek", + "Zieliński", + "Zielonka", + "Ziółkowski", + "Zięba", + "Ziętek", + "Zwoliński", + "Zych", + "Zygmunt", + "Łapiński", + "Łuczak", + "Łukasiewicz", + "Łukasik", + "Łukaszewski", + "Śliwa", + "Śliwiński", + "Ślusarczyk", + "Świderski", + "Świerczyński", + "Świątek", + "Żak", + "Żebrowski", + "Żmuda", + "Żuk", + "Żukowski", + "Żurawski", + "Żurek", + "Żyła" +]; + +},{}],819:[function(require,module,exports){ +arguments[4][593][0].apply(exports,arguments) +},{"dup":593}],820:[function(require,module,exports){ +module["exports"] = [ + "Pan", + "Pani" +]; + +},{}],821:[function(require,module,exports){ +arguments[4][319][0].apply(exports,arguments) +},{"dup":319}],822:[function(require,module,exports){ +module["exports"] = [ + "12-###-##-##", + "13-###-##-##", + "14-###-##-##", + "15-###-##-##", + "16-###-##-##", + "17-###-##-##", + "18-###-##-##", + "22-###-##-##", + "23-###-##-##", + "24-###-##-##", + "25-###-##-##", + "29-###-##-##", + "32-###-##-##", + "33-###-##-##", + "34-###-##-##", + "41-###-##-##", + "42-###-##-##", + "43-###-##-##", + "44-###-##-##", + "46-###-##-##", + "48-###-##-##", + "52-###-##-##", + "54-###-##-##", + "55-###-##-##", + "56-###-##-##", + "58-###-##-##", + "59-###-##-##", + "61-###-##-##", + "62-###-##-##", + "63-###-##-##", + "65-###-##-##", + "67-###-##-##", + "68-###-##-##", + "71-###-##-##", + "74-###-##-##", + "75-###-##-##", + "76-###-##-##", + "77-###-##-##", + "81-###-##-##", + "82-###-##-##", + "83-###-##-##", + "84-###-##-##", + "85-###-##-##", + "86-###-##-##", + "87-###-##-##", + "89-###-##-##", + "91-###-##-##", + "94-###-##-##", + "95-###-##-##" +]; + +},{}],823:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":822,"dup":108}],824:[function(require,module,exports){ +arguments[4][234][0].apply(exports,arguments) +},{"dup":234}],825:[function(require,module,exports){ +module["exports"] = [ + "Nova", + "Velha", + "Grande", + "Vila", + "Município de" +]; + +},{}],826:[function(require,module,exports){ +module["exports"] = [ + "do Descoberto", + "de Nossa Senhora", + "do Norte", + "do Sul" +]; + +},{}],827:[function(require,module,exports){ +module["exports"] = [ + "Afeganistão", + "Albânia", + "Algéria", + "Samoa", + "Andorra", + "Angola", + "Anguilla", + "Antigua and Barbada", + "Argentina", + "Armênia", + "Aruba", + "Austrália", + "Áustria", + "Alzerbajão", + "Bahamas", + "Barém", + "Bangladesh", + "Barbado", + "Belgrado", + "Bélgica", + "Belize", + "Benin", + "Bermuda", + "Bhutan", + "Bolívia", + "Bôsnia", + "Botuasuna", + "Bouvetoia", + "Brasil", + "Arquipélago de Chagos", + "Ilhas Virgens", + "Brunei", + "Bulgária", + "Burkina Faso", + "Burundi", + "Cambójia", + "Camarões", + "Canadá", + "Cabo Verde", + "Ilhas Caiman", + "República da África Central", + "Chad", + "Chile", + "China", + "Ilhas Natal", + "Ilhas Cocos", + "Colômbia", + "Comoros", + "Congo", + "Ilhas Cook", + "Costa Rica", + "Costa do Marfim", + "Croácia", + "Cuba", + "Cyprus", + "República Tcheca", + "Dinamarca", + "Djibouti", + "Dominica", + "República Dominicana", + "Equador", + "Egito", + "El Salvador", + "Guiné Equatorial", + "Eritrea", + "Estônia", + "Etiópia", + "Ilhas Faroe", + "Malvinas", + "Fiji", + "Finlândia", + "França", + "Guiné Francesa", + "Polinésia Francesa", + "Gabão", + "Gâmbia", + "Georgia", + "Alemanha", + "Gana", + "Gibraltar", + "Grécia", + "Groelândia", + "Granada", + "Guadalupe", + "Guano", + "Guatemala", + "Guernsey", + "Guiné", + "Guiné-Bissau", + "Guiana", + "Haiti", + "Heard Island and McDonald Islands", + "Vaticano", + "Honduras", + "Hong Kong", + "Hungria", + "Iceland", + "Índia", + "Indonésia", + "Irã", + "Iraque", + "Irlanda", + "Ilha de Man", + "Israel", + "Itália", + "Jamaica", + "Japão", + "Jersey", + "Jordânia", + "Cazaquistão", + "Quênia", + "Kiribati", + "Coreia do Norte", + "Coreia do Sul", + "Kuwait", + "Kyrgyz Republic", + "República Democrática de Lao People", + "Latvia", + "Líbano", + "Lesotho", + "Libéria", + "Libyan Arab Jamahiriya", + "Liechtenstein", + "Lituânia", + "Luxemburgo", + "Macao", + "Macedônia", + "Madagascar", + "Malawi", + "Malásia", + "Maldives", + "Mali", + "Malta", + "Ilhas Marshall", + "Martinica", + "Mauritânia", + "Mauritius", + "Mayotte", + "México", + "Micronésia", + "Moldova", + "Mônaco", + "Mongólia", + "Montenegro", + "Montserrat", + "Marrocos", + "Moçambique", + "Myanmar", + "Namibia", + "Nauru", + "Nepal", + "Antilhas Holandesas", + "Holanda", + "Nova Caledonia", + "Nova Zelândia", + "Nicarágua", + "Nigéria", + "Niue", + "Ilha Norfolk", + "Northern Mariana Islands", + "Noruega", + "Oman", + "Paquistão", + "Palau", + "Território da Palestina", + "Panamá", + "Nova Guiné Papua", + "Paraguai", + "Peru", + "Filipinas", + "Polônia", + "Portugal", + "Puerto Rico", + "Qatar", + "Romênia", + "Rússia", + "Ruanda", + "São Bartolomeu", + "Santa Helena", + "Santa Lúcia", + "Saint Martin", + "Saint Pierre and Miquelon", + "Saint Vincent and the Grenadines", + "Samoa", + "San Marino", + "Sao Tomé e Príncipe", + "Arábia Saudita", + "Senegal", + "Sérvia", + "Seychelles", + "Serra Leoa", + "Singapura", + "Eslováquia", + "Eslovênia", + "Ilhas Salomão", + "Somália", + "África do Sul", + "South Georgia and the South Sandwich Islands", + "Spanha", + "Sri Lanka", + "Sudão", + "Suriname", + "Svalbard & Jan Mayen Islands", + "Swaziland", + "Suécia", + "Suíça", + "Síria", + "Taiwan", + "Tajiquistão", + "Tanzânia", + "Tailândia", + "Timor-Leste", + "Togo", + "Tokelau", + "Tonga", + "Trinidá e Tobago", + "Tunísia", + "Turquia", + "Turcomenistão", + "Turks and Caicos Islands", + "Tuvalu", + "Uganda", + "Ucrânia", + "Emirados Árabes Unidos", + "Reino Unido", + "Estados Unidos da América", + "Estados Unidos das Ilhas Virgens", + "Uruguai", + "Uzbequistão", + "Vanuatu", + "Venezuela", + "Vietnã", + "Wallis and Futuna", + "Sahara", + "Yemen", + "Zâmbia", + "Zimbábue" +]; + +},{}],828:[function(require,module,exports){ +module["exports"] = [ + "Brasil" +]; + +},{}],829:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.default_country = require("./default_country"); + +},{"./building_number":824,"./city_prefix":825,"./city_suffix":826,"./country":827,"./default_country":828,"./postcode":830,"./secondary_address":831,"./state":832,"./state_abbr":833,"./street_suffix":834}],830:[function(require,module,exports){ +module["exports"] = [ + "#####", + "#####-###" +]; + +},{}],831:[function(require,module,exports){ +module["exports"] = [ + "Apto. ###", + "Sobrado ##", + "Casa #", + "Lote ##", + "Quadra ##" +]; + +},{}],832:[function(require,module,exports){ +module["exports"] = [ + "Acre", + "Alagoas", + "Amapá", + "Amazonas", + "Bahia", + "Ceará", + "Distrito Federal", + "Espírito Santo", + "Goiás", + "Maranhão", + "Mato Grosso", + "Mato Grosso do Sul", + "Minas Gerais", + "Pará", + "Paraíba", + "Paraná", + "Pernambuco", + "Piauí", + "Rio de Janeiro", + "Rio Grande do Norte", + "Rio Grande do Sul", + "Rondônia", + "Roraima", + "Santa Catarina", + "São Paulo", + "Sergipe", + "Tocantins" +]; + +},{}],833:[function(require,module,exports){ +module["exports"] = [ + "AC", + "AL", + "AP", + "AM", + "BA", + "CE", + "DF", + "ES", + "GO", + "MA", + "MT", + "MS", + "PA", + "PB", + "PR", + "PE", + "PI", + "RJ", + "RN", + "RS", + "RO", + "RR", + "SC", + "SP" +]; + +},{}],834:[function(require,module,exports){ +module["exports"] = [ + "Rua", + "Avenida", + "Travessa", + "Ponte", + "Alameda", + "Marginal", + "Viela", + "Rodovia" +]; + +},{}],835:[function(require,module,exports){ +arguments[4][221][0].apply(exports,arguments) +},{"./name":836,"./suffix":837,"dup":221}],836:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name}-#{Name.last_name}", + "#{Name.last_name}, #{Name.last_name} e #{Name.last_name}" +]; + +},{}],837:[function(require,module,exports){ +module["exports"] = [ + "S.A.", + "LTDA", + "e Associados", + "Comércio" +]; + +},{}],838:[function(require,module,exports){ +var pt_BR = {}; +module['exports'] = pt_BR; +pt_BR.title = "Portuguese (Brazil)"; +pt_BR.address = require("./address"); +pt_BR.company = require("./company"); +pt_BR.internet = require("./internet"); +pt_BR.lorem = require("./lorem"); +pt_BR.name = require("./name"); +pt_BR.phone_number = require("./phone_number"); + +},{"./address":829,"./company":835,"./internet":841,"./lorem":842,"./name":845,"./phone_number":850}],839:[function(require,module,exports){ +module["exports"] = [ + "br", + "com", + "biz", + "info", + "name", + "net", + "org" +]; + +},{}],840:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "yahoo.com", + "hotmail.com", + "live.com", + "bol.com.br" +]; + +},{}],841:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":839,"./free_email":840,"dup":98}],842:[function(require,module,exports){ +arguments[4][176][0].apply(exports,arguments) +},{"./words":843,"dup":176}],843:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],844:[function(require,module,exports){ +module["exports"] = [ + "Alessandro", + "Alessandra", + "Alexandre", + "Aline", + "Antônio", + "Breno", + "Bruna", + "Carlos", + "Carla", + "Célia", + "Cecília", + "César", + "Danilo", + "Dalila", + "Deneval", + "Eduardo", + "Eduarda", + "Esther", + "Elísio", + "Fábio", + "Fabrício", + "Fabrícia", + "Félix", + "Felícia", + "Feliciano", + "Frederico", + "Fabiano", + "Gustavo", + "Guilherme", + "Gúbio", + "Heitor", + "Hélio", + "Hugo", + "Isabel", + "Isabela", + "Ígor", + "João", + "Joana", + "Júlio César", + "Júlio", + "Júlia", + "Janaína", + "Karla", + "Kléber", + "Lucas", + "Lorena", + "Lorraine", + "Larissa", + "Ladislau", + "Marcos", + "Meire", + "Marcelo", + "Marcela", + "Margarida", + "Mércia", + "Márcia", + "Marli", + "Morgana", + "Maria", + "Norberto", + "Natália", + "Nataniel", + "Núbia", + "Ofélia", + "Paulo", + "Paula", + "Pablo", + "Pedro", + "Raul", + "Rafael", + "Rafaela", + "Ricardo", + "Roberto", + "Roberta", + "Sílvia", + "Sílvia", + "Silas", + "Suélen", + "Sara", + "Salvador", + "Sirineu", + "Talita", + "Tertuliano", + "Vicente", + "Víctor", + "Vitória", + "Yango", + "Yago", + "Yuri", + "Washington", + "Warley" +]; + +},{}],845:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); + +},{"./first_name":844,"./last_name":846,"./prefix":847,"./suffix":848}],846:[function(require,module,exports){ +module["exports"] = [ + "Silva", + "Souza", + "Carvalho", + "Santos", + "Reis", + "Xavier", + "Franco", + "Braga", + "Macedo", + "Batista", + "Barros", + "Moraes", + "Costa", + "Pereira", + "Carvalho", + "Melo", + "Saraiva", + "Nogueira", + "Oliveira", + "Martins", + "Moreira", + "Albuquerque" +]; + +},{}],847:[function(require,module,exports){ +module["exports"] = [ + "Sr.", + "Sra.", + "Srta.", + "Dr." +]; + +},{}],848:[function(require,module,exports){ +module["exports"] = [ + "Jr.", + "Neto", + "Filho" +]; + +},{}],849:[function(require,module,exports){ +module["exports"] = [ + "(##) ####-####", + "+55 (##) ####-####", + "(##) #####-####" +]; + +},{}],850:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":849,"dup":108}],851:[function(require,module,exports){ +arguments[4][71][0].apply(exports,arguments) +},{"dup":71}],852:[function(require,module,exports){ +arguments[4][72][0].apply(exports,arguments) +},{"dup":72}],853:[function(require,module,exports){ +module["exports"] = [ + "Москва", + "Владимир", + "Санкт-Петербург", + "Новосибирск", + "Екатеринбург", + "Нижний Новгород", + "Самара", + "Казань", + "Омск", + "Челябинск", + "Ростов-на-Дону", + "Уфа", + "Волгоград", + "Пермь", + "Красноярск", + "Воронеж", + "Саратов", + "Краснодар", + "Тольятти", + "Ижевск", + "Барнаул", + "Ульяновск", + "Тюмень", + "Иркутск", + "Владивосток", + "Ярославль", + "Хабаровск", + "Махачкала", + "Оренбург", + "Новокузнецк", + "Томск", + "Кемерово", + "Рязань", + "Астрахань", + "Пенза", + "Липецк", + "Тула", + "Киров", + "Чебоксары", + "Курск", + "Брянскm Магнитогорск", + "Иваново", + "Тверь", + "Ставрополь", + "Белгород", + "Сочи" +]; + +},{}],854:[function(require,module,exports){ +module["exports"] = [ + "Австралия", + "Австрия", + "Азербайджан", + "Албания", + "Алжир", + "Американское Самоа (не признана)", + "Ангилья", + "Ангола", + "Андорра", + "Антарктика (не признана)", + "Антигуа и Барбуда", + "Антильские Острова (не признана)", + "Аомынь (не признана)", + "Аргентина", + "Армения", + "Афганистан", + "Багамские Острова", + "Бангладеш", + "Барбадос", + "Бахрейн", + "Беларусь", + "Белиз", + "Бельгия", + "Бенин", + "Болгария", + "Боливия", + "Босния и Герцеговина", + "Ботсвана", + "Бразилия", + "Бруней", + "Буркина-Фасо", + "Бурунди", + "Бутан", + "Вануату", + "Ватикан", + "Великобритания", + "Венгрия", + "Венесуэла", + "Восточный Тимор", + "Вьетнам", + "Габон", + "Гаити", + "Гайана", + "Гамбия", + "Гана", + "Гваделупа (не признана)", + "Гватемала", + "Гвиана (не признана)", + "Гвинея", + "Гвинея-Бисау", + "Германия", + "Гондурас", + "Гренада", + "Греция", + "Грузия", + "Дания", + "Джибути", + "Доминика", + "Доминиканская Республика", + "Египет", + "Замбия", + "Зимбабве", + "Израиль", + "Индия", + "Индонезия", + "Иордания", + "Ирак", + "Иран", + "Ирландия", + "Исландия", + "Испания", + "Италия", + "Йемен", + "Кабо-Верде", + "Казахстан", + "Камбоджа", + "Камерун", + "Канада", + "Катар", + "Кения", + "Кипр", + "Кирибати", + "Китай", + "Колумбия", + "Коморские Острова", + "Конго", + "Демократическая Республика", + "Корея (Северная)", + "Корея (Южная)", + "Косово", + "Коста-Рика", + "Кот-д'Ивуар", + "Куба", + "Кувейт", + "Кука острова", + "Кыргызстан", + "Лаос", + "Латвия", + "Лесото", + "Либерия", + "Ливан", + "Ливия", + "Литва", + "Лихтенштейн", + "Люксембург", + "Маврикий", + "Мавритания", + "Мадагаскар", + "Македония", + "Малави", + "Малайзия", + "Мали", + "Мальдивы", + "Мальта", + "Маршалловы Острова", + "Мексика", + "Микронезия", + "Мозамбик", + "Молдова", + "Монако", + "Монголия", + "Марокко", + "Мьянма", + "Намибия", + "Науру", + "Непал", + "Нигер", + "Нигерия", + "Нидерланды", + "Никарагуа", + "Новая Зеландия", + "Норвегия", + "Объединенные Арабские Эмираты", + "Оман", + "Пакистан", + "Палау", + "Панама", + "Папуа — Новая Гвинея", + "Парагвай", + "Перу", + "Польша", + "Португалия", + "Республика Конго", + "Россия", + "Руанда", + "Румыния", + "Сальвадор", + "Самоа", + "Сан-Марино", + "Сан-Томе и Принсипи", + "Саудовская Аравия", + "Свазиленд", + "Сейшельские острова", + "Сенегал", + "Сент-Винсент и Гренадины", + "Сент-Киттс и Невис", + "Сент-Люсия", + "Сербия", + "Сингапур", + "Сирия", + "Словакия", + "Словения", + "Соединенные Штаты Америки", + "Соломоновы Острова", + "Сомали", + "Судан", + "Суринам", + "Сьерра-Леоне", + "Таджикистан", + "Таиланд", + "Тайвань (не признана)", + "Тамил-Илам (не признана)", + "Танзания", + "Тёркс и Кайкос (не признана)", + "Того", + "Токелау (не признана)", + "Тонга", + "Тринидад и Тобаго", + "Тувалу", + "Тунис", + "Турецкая Республика Северного Кипра (не признана)", + "Туркменистан", + "Турция", + "Уганда", + "Узбекистан", + "Украина", + "Уругвай", + "Фарерские Острова (не признана)", + "Фиджи", + "Филиппины", + "Финляндия", + "Франция", + "Французская Полинезия (не признана)", + "Хорватия", + "Центральноафриканская Республика", + "Чад", + "Черногория", + "Чехия", + "Чили", + "Швейцария", + "Швеция", + "Шри-Ланка", + "Эквадор", + "Экваториальная Гвинея", + "Эритрея", + "Эстония", + "Эфиопия", + "Южно-Африканская Республика", + "Ямайка", + "Япония" +]; + +},{}],855:[function(require,module,exports){ +module["exports"] = [ + "Россия" +]; + +},{}],856:[function(require,module,exports){ +arguments[4][76][0].apply(exports,arguments) +},{"./building_number":851,"./city":852,"./city_name":853,"./country":854,"./default_country":855,"./postcode":857,"./secondary_address":858,"./state":859,"./street_address":860,"./street_name":861,"./street_suffix":862,"./street_title":863,"dup":76}],857:[function(require,module,exports){ +module["exports"] = [ + "######" +]; + +},{}],858:[function(require,module,exports){ +module["exports"] = [ + "кв. ###" +]; + +},{}],859:[function(require,module,exports){ +module["exports"] = [ + "Республика Адыгея", + "Республика Башкортостан", + "Республика Бурятия", + "Республика Алтай Республика Дагестан", + "Республика Ингушетия", + "Кабардино-Балкарская Республика", + "Республика Калмыкия", + "Республика Карачаево-Черкессия", + "Республика Карелия", + "Республика Коми", + "Республика Марий Эл", + "Республика Мордовия", + "Республика Саха (Якутия)", + "Республика Северная Осетия-Алания", + "Республика Татарстан", + "Республика Тыва", + "Удмуртская Республика", + "Республика Хакасия", + "Чувашская Республика", + "Алтайский край", + "Краснодарский край", + "Красноярский край", + "Приморский край", + "Ставропольский край", + "Хабаровский край", + "Амурская область", + "Архангельская область", + "Астраханская область", + "Белгородская область", + "Брянская область", + "Владимирская область", + "Волгоградская область", + "Вологодская область", + "Воронежская область", + "Ивановская область", + "Иркутская область", + "Калиниградская область", + "Калужская область", + "Камчатская область", + "Кемеровская область", + "Кировская область", + "Костромская область", + "Курганская область", + "Курская область", + "Ленинградская область", + "Липецкая область", + "Магаданская область", + "Московская область", + "Мурманская область", + "Нижегородская область", + "Новгородская область", + "Новосибирская область", + "Омская область", + "Оренбургская область", + "Орловская область", + "Пензенская область", + "Пермская область", + "Псковская область", + "Ростовская область", + "Рязанская область", + "Самарская область", + "Саратовская область", + "Сахалинская область", + "Свердловская область", + "Смоленская область", + "Тамбовская область", + "Тверская область", + "Томская область", + "Тульская область", + "Тюменская область", + "Ульяновская область", + "Челябинская область", + "Читинская область", + "Ярославская область", + "Еврейская автономная область", + "Агинский Бурятский авт. округ", + "Коми-Пермяцкий автономный округ", + "Корякский автономный округ", + "Ненецкий автономный округ", + "Таймырский (Долгано-Ненецкий) автономный округ", + "Усть-Ордынский Бурятский автономный округ", + "Ханты-Мансийский автономный округ", + "Чукотский автономный округ", + "Эвенкийский автономный округ", + "Ямало-Ненецкий автономный округ", + "Чеченская Республика" +]; + +},{}],860:[function(require,module,exports){ +arguments[4][80][0].apply(exports,arguments) +},{"dup":80}],861:[function(require,module,exports){ +arguments[4][81][0].apply(exports,arguments) +},{"dup":81}],862:[function(require,module,exports){ +module["exports"] = [ + "ул.", + "улица", + "проспект", + "пр.", + "площадь", + "пл." +]; + +},{}],863:[function(require,module,exports){ +module["exports"] = [ + "Советская", + "Молодежная", + "Центральная", + "Школьная", + "Новая", + "Садовая", + "Лесная", + "Набережная", + "Ленина", + "Мира", + "Октябрьская", + "Зеленая", + "Комсомольская", + "Заречная", + "Первомайская", + "Гагарина", + "Полевая", + "Луговая", + "Пионерская", + "Кирова", + "Юбилейная", + "Северная", + "Пролетарская", + "Степная", + "Пушкина", + "Калинина", + "Южная", + "Колхозная", + "Рабочая", + "Солнечная", + "Железнодорожная", + "Восточная", + "Заводская", + "Чапаева", + "Нагорная", + "Строителей", + "Береговая", + "Победы", + "Горького", + "Кооперативная", + "Красноармейская", + "Совхозная", + "Речная", + "Школьный", + "Спортивная", + "Озерная", + "Строительная", + "Парковая", + "Чкалова", + "Мичурина", + "речень улиц", + "Подгорная", + "Дружбы", + "Почтовая", + "Партизанская", + "Вокзальная", + "Лермонтова", + "Свободы", + "Дорожная", + "Дачная", + "Маяковского", + "Западная", + "Фрунзе", + "Дзержинского", + "Московская", + "Свердлова", + "Некрасова", + "Гоголя", + "Красная", + "Трудовая", + "Шоссейная", + "Чехова", + "Коммунистическая", + "Труда", + "Комарова", + "Матросова", + "Островского", + "Сосновая", + "Клубная", + "Куйбышева", + "Крупской", + "Березовая", + "Карла Маркса", + "8 Марта", + "Больничная", + "Садовый", + "Интернациональная", + "Суворова", + "Цветочная", + "Трактовая", + "Ломоносова", + "Горная", + "Космонавтов", + "Энергетиков", + "Шевченко", + "Весенняя", + "Механизаторов", + "Коммунальная", + "Лесной", + "40 лет Победы", + "Майская" +]; + +},{}],864:[function(require,module,exports){ +module["exports"] = [ + "красный", + "зеленый", + "синий", + "желтый", + "багровый", + "мятный", + "зеленовато-голубой", + "белый", + "черный", + "оранжевый", + "розовый", + "серый", + "красно-коричневый", + "фиолетовый", + "бирюзовый", + "желто-коричневый", + "небесно голубой", + "оранжево-розовый", + "темно-фиолетовый", + "орхидный", + "оливковый", + "пурпурный", + "лимонный", + "кремовый", + "сине-фиолетовый", + "золотой", + "красно-пурпурный", + "голубой", + "лазурный", + "лиловый", + "серебряный" +]; + +},{}],865:[function(require,module,exports){ +module["exports"] = [ + "Книги", + "Фильмы", + "музыка", + "игры", + "Электроника", + "компьютеры", + "Дом", + "садинструмент", + "Бакалея", + "здоровье", + "красота", + "Игрушки", + "детское", + "для малышей", + "Одежда", + "обувь", + "украшения", + "Спорт", + "туризм", + "Автомобильное", + "промышленное" +]; + +},{}],866:[function(require,module,exports){ +arguments[4][86][0].apply(exports,arguments) +},{"./color":864,"./department":865,"./product_name":867,"dup":86}],867:[function(require,module,exports){ +module["exports"] = { + "adjective": [ + "Маленький", + "Эргономичный", + "Грубый", + "Интеллектуальный", + "Великолепный", + "Невероятный", + "Фантастический", + "Практчиный", + "Лоснящийся", + "Потрясающий" + ], + "material": [ + "Стальной", + "Деревянный", + "Бетонный", + "Пластиковый", + "Хлопковый", + "Гранитный", + "Резиновый" + ], + "product": [ + "Стул", + "Автомобиль", + "Компьютер", + "Берет", + "Кулон", + "Стол", + "Свитер", + "Ремень", + "Ботинок" + ] +}; + +},{}],868:[function(require,module,exports){ +arguments[4][88][0].apply(exports,arguments) +},{"./name":869,"./prefix":870,"./suffix":871,"dup":88}],869:[function(require,module,exports){ +arguments[4][89][0].apply(exports,arguments) +},{"dup":89}],870:[function(require,module,exports){ +module["exports"] = [ + "ИП", + "ООО", + "ЗАО", + "ОАО", + "НКО", + "ТСЖ", + "ОП" +]; + +},{}],871:[function(require,module,exports){ +module["exports"] = [ + "Снаб", + "Торг", + "Пром", + "Трейд", + "Сбыт" +]; + +},{}],872:[function(require,module,exports){ +arguments[4][92][0].apply(exports,arguments) +},{"./month":873,"./weekday":874,"dup":92}],873:[function(require,module,exports){ +// source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/ru.xml#L1734 +module["exports"] = { + wide: [ + "январь", + "февраль", + "март", + "апрель", + "май", + "июнь", + "июль", + "август", + "сентябрь", + "октябрь", + "ноябрь", + "декабрь" + ], + wide_context: [ + "января", + "февраля", + "марта", + "апреля", + "мая", + "июня", + "июля", + "августа", + "сентября", + "октября", + "ноября", + "декабря" + ], + abbr: [ + "янв.", + "февр.", + "март", + "апр.", + "май", + "июнь", + "июль", + "авг.", + "сент.", + "окт.", + "нояб.", + "дек." + ], + abbr_context: [ + "янв.", + "февр.", + "марта", + "апр.", + "мая", + "июня", + "июля", + "авг.", + "сент.", + "окт.", + "нояб.", + "дек." + ] +}; + +},{}],874:[function(require,module,exports){ +// source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/ru.xml#L1825 +module["exports"] = { + wide: [ + "Воскресенье", + "Понедельник", + "Вторник", + "Среда", + "Четверг", + "Пятница", + "Суббота" + ], + wide_context: [ + "воскресенье", + "понедельник", + "вторник", + "среда", + "четверг", + "пятница", + "суббота" + ], + abbr: [ + "Вс", + "Пн", + "Вт", + "Ср", + "Чт", + "Пт", + "Сб" + ], + abbr_context: [ + "вс", + "пн", + "вт", + "ср", + "чт", + "пт", + "сб" + ] +}; + +},{}],875:[function(require,module,exports){ +var ru = {}; +module['exports'] = ru; +ru.title = "Russian"; +ru.separator = " и "; +ru.address = require("./address"); +ru.internet = require("./internet"); +ru.name = require("./name"); +ru.phone_number = require("./phone_number"); +ru.commerce = require("./commerce"); +ru.company = require("./company"); +ru.date = require("./date"); + +},{"./address":856,"./commerce":866,"./company":868,"./date":872,"./internet":878,"./name":882,"./phone_number":890}],876:[function(require,module,exports){ +module["exports"] = [ + "com", + "ru", + "info", + "рф", + "net", + "org" +]; + +},{}],877:[function(require,module,exports){ +module["exports"] = [ + "yandex.ru", + "ya.ru", + "mail.ru", + "gmail.com", + "yahoo.com", + "hotmail.com" +]; + +},{}],878:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":876,"./free_email":877,"dup":98}],879:[function(require,module,exports){ +module["exports"] = [ + "Анна", + "Алёна", + "Алевтина", + "Александра", + "Алина", + "Алла", + "Анастасия", + "Ангелина", + "Анжела", + "Анжелика", + "Антонида", + "Антонина", + "Анфиса", + "Арина", + "Валентина", + "Валерия", + "Варвара", + "Василиса", + "Вера", + "Вероника", + "Виктория", + "Галина", + "Дарья", + "Евгения", + "Екатерина", + "Елена", + "Елизавета", + "Жанна", + "Зинаида", + "Зоя", + "Ирина", + "Кира", + "Клавдия", + "Ксения", + "Лариса", + "Лидия", + "Любовь", + "Людмила", + "Маргарита", + "Марина", + "Мария", + "Надежда", + "Наталья", + "Нина", + "Оксана", + "Ольга", + "Раиса", + "Регина", + "Римма", + "Светлана", + "София", + "Таисия", + "Тамара", + "Татьяна", + "Ульяна", + "Юлия" +]; + +},{}],880:[function(require,module,exports){ +module["exports"] = [ + "Смирнова", + "Иванова", + "Кузнецова", + "Попова", + "Соколова", + "Лебедева", + "Козлова", + "Новикова", + "Морозова", + "Петрова", + "Волкова", + "Соловьева", + "Васильева", + "Зайцева", + "Павлова", + "Семенова", + "Голубева", + "Виноградова", + "Богданова", + "Воробьева", + "Федорова", + "Михайлова", + "Беляева", + "Тарасова", + "Белова", + "Комарова", + "Орлова", + "Киселева", + "Макарова", + "Андреева", + "Ковалева", + "Ильина", + "Гусева", + "Титова", + "Кузьмина", + "Кудрявцева", + "Баранова", + "Куликова", + "Алексеева", + "Степанова", + "Яковлева", + "Сорокина", + "Сергеева", + "Романова", + "Захарова", + "Борисова", + "Королева", + "Герасимова", + "Пономарева", + "Григорьева", + "Лазарева", + "Медведева", + "Ершова", + "Никитина", + "Соболева", + "Рябова", + "Полякова", + "Цветкова", + "Данилова", + "Жукова", + "Фролова", + "Журавлева", + "Николаева", + "Крылова", + "Максимова", + "Сидорова", + "Осипова", + "Белоусова", + "Федотова", + "Дорофеева", + "Егорова", + "Матвеева", + "Боброва", + "Дмитриева", + "Калинина", + "Анисимова", + "Петухова", + "Антонова", + "Тимофеева", + "Никифорова", + "Веселова", + "Филиппова", + "Маркова", + "Большакова", + "Суханова", + "Миронова", + "Ширяева", + "Александрова", + "Коновалова", + "Шестакова", + "Казакова", + "Ефимова", + "Денисова", + "Громова", + "Фомина", + "Давыдова", + "Мельникова", + "Щербакова", + "Блинова", + "Колесникова", + "Карпова", + "Афанасьева", + "Власова", + "Маслова", + "Исакова", + "Тихонова", + "Аксенова", + "Гаврилова", + "Родионова", + "Котова", + "Горбунова", + "Кудряшова", + "Быкова", + "Зуева", + "Третьякова", + "Савельева", + "Панова", + "Рыбакова", + "Суворова", + "Абрамова", + "Воронова", + "Мухина", + "Архипова", + "Трофимова", + "Мартынова", + "Емельянова", + "Горшкова", + "Чернова", + "Овчинникова", + "Селезнева", + "Панфилова", + "Копылова", + "Михеева", + "Галкина", + "Назарова", + "Лобанова", + "Лукина", + "Белякова", + "Потапова", + "Некрасова", + "Хохлова", + "Жданова", + "Наумова", + "Шилова", + "Воронцова", + "Ермакова", + "Дроздова", + "Игнатьева", + "Савина", + "Логинова", + "Сафонова", + "Капустина", + "Кириллова", + "Моисеева", + "Елисеева", + "Кошелева", + "Костина", + "Горбачева", + "Орехова", + "Ефремова", + "Исаева", + "Евдокимова", + "Калашникова", + "Кабанова", + "Носкова", + "Юдина", + "Кулагина", + "Лапина", + "Прохорова", + "Нестерова", + "Харитонова", + "Агафонова", + "Муравьева", + "Ларионова", + "Федосеева", + "Зимина", + "Пахомова", + "Шубина", + "Игнатова", + "Филатова", + "Крюкова", + "Рогова", + "Кулакова", + "Терентьева", + "Молчанова", + "Владимирова", + "Артемьева", + "Гурьева", + "Зиновьева", + "Гришина", + "Кононова", + "Дементьева", + "Ситникова", + "Симонова", + "Мишина", + "Фадеева", + "Комиссарова", + "Мамонтова", + "Носова", + "Гуляева", + "Шарова", + "Устинова", + "Вишнякова", + "Евсеева", + "Лаврентьева", + "Брагина", + "Константинова", + "Корнилова", + "Авдеева", + "Зыкова", + "Бирюкова", + "Шарапова", + "Никонова", + "Щукина", + "Дьячкова", + "Одинцова", + "Сазонова", + "Якушева", + "Красильникова", + "Гордеева", + "Самойлова", + "Князева", + "Беспалова", + "Уварова", + "Шашкова", + "Бобылева", + "Доронина", + "Белозерова", + "Рожкова", + "Самсонова", + "Мясникова", + "Лихачева", + "Бурова", + "Сысоева", + "Фомичева", + "Русакова", + "Стрелкова", + "Гущина", + "Тетерина", + "Колобова", + "Субботина", + "Фокина", + "Блохина", + "Селиверстова", + "Пестова", + "Кондратьева", + "Силина", + "Меркушева", + "Лыткина", + "Турова" +]; + +},{}],881:[function(require,module,exports){ +module["exports"] = [ + "Александровна", + "Алексеевна", + "Альбертовна", + "Анатольевна", + "Андреевна", + "Антоновна", + "Аркадьевна", + "Арсеньевна", + "Артёмовна", + "Борисовна", + "Вадимовна", + "Валентиновна", + "Валерьевна", + "Васильевна", + "Викторовна", + "Витальевна", + "Владимировна", + "Владиславовна", + "Вячеславовна", + "Геннадьевна", + "Георгиевна", + "Германовна", + "Григорьевна", + "Данииловна", + "Денисовна", + "Дмитриевна", + "Евгеньевна", + "Егоровна", + "Ивановна", + "Игнатьевна", + "Игоревна", + "Ильинична", + "Константиновна", + "Лаврентьевна", + "Леонидовна", + "Макаровна", + "Максимовна", + "Матвеевна", + "Михайловна", + "Никитична", + "Николаевна", + "Олеговна", + "Романовна", + "Семёновна", + "Сергеевна", + "Станиславовна", + "Степановна", + "Фёдоровна", + "Эдуардовна", + "Юрьевна", + "Ярославовна" +]; + +},{}],882:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.male_first_name = require("./male_first_name"); +name.male_middle_name = require("./male_middle_name"); +name.male_last_name = require("./male_last_name"); +name.female_first_name = require("./female_first_name"); +name.female_middle_name = require("./female_middle_name"); +name.female_last_name = require("./female_last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.name = require("./name"); + +},{"./female_first_name":879,"./female_last_name":880,"./female_middle_name":881,"./male_first_name":883,"./male_last_name":884,"./male_middle_name":885,"./name":886,"./prefix":887,"./suffix":888}],883:[function(require,module,exports){ +module["exports"] = [ + "Александр", + "Алексей", + "Альберт", + "Анатолий", + "Андрей", + "Антон", + "Аркадий", + "Арсений", + "Артём", + "Борис", + "Вадим", + "Валентин", + "Валерий", + "Василий", + "Виктор", + "Виталий", + "Владимир", + "Владислав", + "Вячеслав", + "Геннадий", + "Георгий", + "Герман", + "Григорий", + "Даниил", + "Денис", + "Дмитрий", + "Евгений", + "Егор", + "Иван", + "Игнатий", + "Игорь", + "Илья", + "Константин", + "Лаврентий", + "Леонид", + "Лука", + "Макар", + "Максим", + "Матвей", + "Михаил", + "Никита", + "Николай", + "Олег", + "Роман", + "Семён", + "Сергей", + "Станислав", + "Степан", + "Фёдор", + "Эдуард", + "Юрий", + "Ярослав" +]; + +},{}],884:[function(require,module,exports){ +module["exports"] = [ + "Смирнов", + "Иванов", + "Кузнецов", + "Попов", + "Соколов", + "Лебедев", + "Козлов", + "Новиков", + "Морозов", + "Петров", + "Волков", + "Соловьев", + "Васильев", + "Зайцев", + "Павлов", + "Семенов", + "Голубев", + "Виноградов", + "Богданов", + "Воробьев", + "Федоров", + "Михайлов", + "Беляев", + "Тарасов", + "Белов", + "Комаров", + "Орлов", + "Киселев", + "Макаров", + "Андреев", + "Ковалев", + "Ильин", + "Гусев", + "Титов", + "Кузьмин", + "Кудрявцев", + "Баранов", + "Куликов", + "Алексеев", + "Степанов", + "Яковлев", + "Сорокин", + "Сергеев", + "Романов", + "Захаров", + "Борисов", + "Королев", + "Герасимов", + "Пономарев", + "Григорьев", + "Лазарев", + "Медведев", + "Ершов", + "Никитин", + "Соболев", + "Рябов", + "Поляков", + "Цветков", + "Данилов", + "Жуков", + "Фролов", + "Журавлев", + "Николаев", + "Крылов", + "Максимов", + "Сидоров", + "Осипов", + "Белоусов", + "Федотов", + "Дорофеев", + "Егоров", + "Матвеев", + "Бобров", + "Дмитриев", + "Калинин", + "Анисимов", + "Петухов", + "Антонов", + "Тимофеев", + "Никифоров", + "Веселов", + "Филиппов", + "Марков", + "Большаков", + "Суханов", + "Миронов", + "Ширяев", + "Александров", + "Коновалов", + "Шестаков", + "Казаков", + "Ефимов", + "Денисов", + "Громов", + "Фомин", + "Давыдов", + "Мельников", + "Щербаков", + "Блинов", + "Колесников", + "Карпов", + "Афанасьев", + "Власов", + "Маслов", + "Исаков", + "Тихонов", + "Аксенов", + "Гаврилов", + "Родионов", + "Котов", + "Горбунов", + "Кудряшов", + "Быков", + "Зуев", + "Третьяков", + "Савельев", + "Панов", + "Рыбаков", + "Суворов", + "Абрамов", + "Воронов", + "Мухин", + "Архипов", + "Трофимов", + "Мартынов", + "Емельянов", + "Горшков", + "Чернов", + "Овчинников", + "Селезнев", + "Панфилов", + "Копылов", + "Михеев", + "Галкин", + "Назаров", + "Лобанов", + "Лукин", + "Беляков", + "Потапов", + "Некрасов", + "Хохлов", + "Жданов", + "Наумов", + "Шилов", + "Воронцов", + "Ермаков", + "Дроздов", + "Игнатьев", + "Савин", + "Логинов", + "Сафонов", + "Капустин", + "Кириллов", + "Моисеев", + "Елисеев", + "Кошелев", + "Костин", + "Горбачев", + "Орехов", + "Ефремов", + "Исаев", + "Евдокимов", + "Калашников", + "Кабанов", + "Носков", + "Юдин", + "Кулагин", + "Лапин", + "Прохоров", + "Нестеров", + "Харитонов", + "Агафонов", + "Муравьев", + "Ларионов", + "Федосеев", + "Зимин", + "Пахомов", + "Шубин", + "Игнатов", + "Филатов", + "Крюков", + "Рогов", + "Кулаков", + "Терентьев", + "Молчанов", + "Владимиров", + "Артемьев", + "Гурьев", + "Зиновьев", + "Гришин", + "Кононов", + "Дементьев", + "Ситников", + "Симонов", + "Мишин", + "Фадеев", + "Комиссаров", + "Мамонтов", + "Носов", + "Гуляев", + "Шаров", + "Устинов", + "Вишняков", + "Евсеев", + "Лаврентьев", + "Брагин", + "Константинов", + "Корнилов", + "Авдеев", + "Зыков", + "Бирюков", + "Шарапов", + "Никонов", + "Щукин", + "Дьячков", + "Одинцов", + "Сазонов", + "Якушев", + "Красильников", + "Гордеев", + "Самойлов", + "Князев", + "Беспалов", + "Уваров", + "Шашков", + "Бобылев", + "Доронин", + "Белозеров", + "Рожков", + "Самсонов", + "Мясников", + "Лихачев", + "Буров", + "Сысоев", + "Фомичев", + "Русаков", + "Стрелков", + "Гущин", + "Тетерин", + "Колобов", + "Субботин", + "Фокин", + "Блохин", + "Селиверстов", + "Пестов", + "Кондратьев", + "Силин", + "Меркушев", + "Лыткин", + "Туров" +]; + +},{}],885:[function(require,module,exports){ +module["exports"] = [ + "Александрович", + "Алексеевич", + "Альбертович", + "Анатольевич", + "Андреевич", + "Антонович", + "Аркадьевич", + "Арсеньевич", + "Артёмович", + "Борисович", + "Вадимович", + "Валентинович", + "Валерьевич", + "Васильевич", + "Викторович", + "Витальевич", + "Владимирович", + "Владиславович", + "Вячеславович", + "Геннадьевич", + "Георгиевич", + "Германович", + "Григорьевич", + "Даниилович", + "Денисович", + "Дмитриевич", + "Евгеньевич", + "Егорович", + "Иванович", + "Игнатьевич", + "Игоревич", + "Ильич", + "Константинович", + "Лаврентьевич", + "Леонидович", + "Лукич", + "Макарович", + "Максимович", + "Матвеевич", + "Михайлович", + "Никитич", + "Николаевич", + "Олегович", + "Романович", + "Семёнович", + "Сергеевич", + "Станиславович", + "Степанович", + "Фёдорович", + "Эдуардович", + "Юрьевич", + "Ярославович" +]; + +},{}],886:[function(require,module,exports){ +module["exports"] = [ + "#{male_first_name} #{male_last_name}", + "#{male_last_name} #{male_first_name}", + "#{male_first_name} #{male_middle_name} #{male_last_name}", + "#{male_last_name} #{male_first_name} #{male_middle_name}", + "#{female_first_name} #{female_last_name}", + "#{female_last_name} #{female_first_name}", + "#{female_first_name} #{female_middle_name} #{female_last_name}", + "#{female_last_name} #{female_first_name} #{female_middle_name}" +]; + +},{}],887:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],888:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],889:[function(require,module,exports){ +arguments[4][107][0].apply(exports,arguments) +},{"dup":107}],890:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":889,"dup":108}],891:[function(require,module,exports){ +arguments[4][109][0].apply(exports,arguments) +},{"dup":109}],892:[function(require,module,exports){ +arguments[4][110][0].apply(exports,arguments) +},{"dup":110}],893:[function(require,module,exports){ +module["exports"] = [ + "Bánovce nad Bebravou", + "Banská Bystrica", + "Banská Štiavnica", + "Bardejov", + "Bratislava I", + "Bratislava II", + "Bratislava III", + "Bratislava IV", + "Bratislava V", + "Brezno", + "Bytča", + "Čadca", + "Detva", + "Dolný Kubín", + "Dunajská Streda", + "Galanta", + "Gelnica", + "Hlohovec", + "Humenné", + "Ilava", + "Kežmarok", + "Komárno", + "Košice I", + "Košice II", + "Košice III", + "Košice IV", + "Košice-okolie", + "Krupina", + "Kysucké Nové Mesto", + "Levice", + "Levoča", + "Liptovský Mikuláš", + "Lučenec", + "Malacky", + "Martin", + "Medzilaborce", + "Michalovce", + "Myjava", + "Námestovo", + "Nitra", + "Nové Mesto n.Váhom", + "Nové Zámky", + "Partizánske", + "Pezinok", + "Piešťany", + "Poltár", + "Poprad", + "Považská Bystrica", + "Prešov", + "Prievidza", + "Púchov", + "Revúca", + "Rimavská Sobota", + "Rožňava", + "Ružomberok", + "Sabinov", + "Šaľa", + "Senec", + "Senica", + "Skalica", + "Snina", + "Sobrance", + "Spišská Nová Ves", + "Stará Ľubovňa", + "Stropkov", + "Svidník", + "Topoľčany", + "Trebišov", + "Trenčín", + "Trnava", + "Turčianske Teplice", + "Tvrdošín", + "Veľký Krtíš", + "Vranov nad Topľou", + "Žarnovica", + "Žiar nad Hronom", + "Žilina", + "Zlaté Moravce", + "Zvolen" +]; + +},{}],894:[function(require,module,exports){ +arguments[4][236][0].apply(exports,arguments) +},{"dup":236}],895:[function(require,module,exports){ +arguments[4][237][0].apply(exports,arguments) +},{"dup":237}],896:[function(require,module,exports){ +module["exports"] = [ + "Afganistan", + "Afgánsky islamský štát", + "Albánsko", + "Albánska republika", + "Alžírsko", + "Alžírska demokratická ľudová republika", + "Andorra", + "Andorrské kniežatsvo", + "Angola", + "Angolská republika", + "Antigua a Barbuda", + "Antigua a Barbuda", + "Argentína", + "Argentínska republika", + "Arménsko", + "Arménska republika", + "Austrália", + "Austrálsky zväz", + "Azerbajdžan", + "Azerbajdžanská republika", + "Bahamy", + "Bahamské spoločenstvo", + "Bahrajn", + "Bahrajnské kráľovstvo", + "Bangladéš", + "Bangladéšska ľudová republika", + "Barbados", + "Barbados", + "Belgicko", + "Belgické kráľovstvo", + "Belize", + "Belize", + "Benin", + "Beninská republika", + "Bhután", + "Bhutánske kráľovstvo", + "Bielorusko", + "Bieloruská republika", + "Bolívia", + "Bolívijská republika", + "Bosna a Hercegovina", + "Republika Bosny a Hercegoviny", + "Botswana", + "Botswanská republika", + "Brazília", + "Brazílska federatívna republika", + "Brunej", + "Brunejský sultanát", + "Bulharsko", + "Bulharská republika", + "Burkina Faso", + "Burkina Faso", + "Burundi", + "Burundská republika", + "Cyprus", + "Cyperská republika", + "Čad", + "Republika Čad", + "Česko", + "Česká republika", + "Čína", + "Čínska ľudová republika", + "Dánsko", + "Dánsko kráľovstvo", + "Dominika", + "Spoločenstvo Dominika", + "Dominikánska republika", + "Dominikánska republika", + "Džibutsko", + "Džibutská republika", + "Egypt", + "Egyptská arabská republika", + "Ekvádor", + "Ekvádorská republika", + "Eritrea", + "Eritrejský štát", + "Estónsko", + "Estónska republika", + "Etiópia", + "Etiópska federatívna demokratická republika", + "Fidži", + "Republika ostrovy Fidži", + "Filipíny", + "Filipínska republika", + "Fínsko", + "Fínska republika", + "Francúzsko", + "Francúzska republika", + "Gabon", + "Gabonská republika", + "Gambia", + "Gambijská republika", + "Ghana", + "Ghanská republika", + "Grécko", + "Helénska republika", + "Grenada", + "Grenada", + "Gruzínsko", + "Gruzínsko", + "Guatemala", + "Guatemalská republika", + "Guinea", + "Guinejská republika", + "Guinea-Bissau", + "Republika Guinea-Bissau", + "Guayana", + "Guayanská republika", + "Haiti", + "Republika Haiti", + "Holandsko", + "Holandské kráľovstvo", + "Honduras", + "Honduraská republika", + "Chile", + "Čílska republika", + "Chorvátsko", + "Chorvátska republika", + "India", + "Indická republika", + "Indonézia", + "Indonézska republika", + "Irak", + "Iracká republika", + "Irán", + "Iránska islamská republika", + "Island", + "Islandská republika", + "Izrael", + "Štát Izrael", + "Írsko", + "Írska republika", + "Jamajka", + "Jamajka", + "Japonsko", + "Japonsko", + "Jemen", + "Jemenská republika", + "Jordánsko", + "Jordánske hášimovské kráľovstvo", + "Južná Afrika", + "Juhoafrická republika", + "Kambodža", + "Kambodžské kráľovstvo", + "Kamerun", + "Kamerunská republika", + "Kanada", + "Kanada", + "Kapverdy", + "Kapverdská republika", + "Katar", + "Štát Katar", + "Kazachstan", + "Kazašská republika", + "Keňa", + "Kenská republika", + "Kirgizsko", + "Kirgizská republika", + "Kiribati", + "Kiribatská republika", + "Kolumbia", + "Kolumbijská republika", + "Komory", + "Komorská únia", + "Kongo", + "Konžská demokratická republika", + "Kongo (\"Brazzaville\")", + "Konžská republika", + "Kórea (\"Južná\")", + "Kórejská republika", + "Kórea (\"Severná\")", + "Kórejská ľudovodemokratická republika", + "Kostarika", + "Kostarická republika", + "Kuba", + "Kubánska republika", + "Kuvajt", + "Kuvajtský štát", + "Laos", + "Laoská ľudovodemokratická republika", + "Lesotho", + "Lesothské kráľovstvo", + "Libanon", + "Libanonská republika", + "Libéria", + "Libérijská republika", + "Líbya", + "Líbyjská arabská ľudová socialistická džamáhírija", + "Lichtenštajnsko", + "Lichtenštajnské kniežatstvo", + "Litva", + "Litovská republika", + "Lotyšsko", + "Lotyšská republika", + "Luxembursko", + "Luxemburské veľkovojvodstvo", + "Macedónsko", + "Macedónska republika", + "Madagaskar", + "Madagaskarská republika", + "Maďarsko", + "Maďarská republika", + "Malajzia", + "Malajzia", + "Malawi", + "Malawijská republika", + "Maldivy", + "Maldivská republika", + "Mali", + "Malijská republika", + "Malta", + "Malta", + "Maroko", + "Marocké kráľovstvo", + "Marshallove ostrovy", + "Republika Marshallových ostrovy", + "Mauritánia", + "Mauritánska islamská republika", + "Maurícius", + "Maurícijská republika", + "Mexiko", + "Spojené štáty mexické", + "Mikronézia", + "Mikronézske federatívne štáty", + "Mjanmarsko", + "Mjanmarský zväz", + "Moldavsko", + "Moldavská republika", + "Monako", + "Monacké kniežatstvo", + "Mongolsko", + "Mongolsko", + "Mozambik", + "Mozambická republika", + "Namíbia", + "Namíbijská republika", + "Nauru", + "Naurská republika", + "Nemecko", + "Nemecká spolková republika", + "Nepál", + "Nepálske kráľovstvo", + "Niger", + "Nigerská republika", + "Nigéria", + "Nigérijská federatívna republika", + "Nikaragua", + "Nikaragujská republika", + "Nový Zéland", + "Nový Zéland", + "Nórsko", + "Nórske kráľovstvo", + "Omán", + "Ománsky sultanát", + "Pakistan", + "Pakistanská islamská republika", + "Palau", + "Palauská republika", + "Panama", + "Panamská republika", + "Papua-Nová Guinea", + "Nezávislý štát Papua-Nová Guinea", + "Paraguaj", + "Paraguajská republika", + "Peru", + "Peruánska republika", + "Pobrežie Slonoviny", + "Republika Pobrežie Slonoviny", + "Poľsko", + "Poľská republika", + "Portugalsko", + "Portugalská republika", + "Rakúsko", + "Rakúska republika", + "Rovníková Guinea", + "Republika Rovníková Guinea", + "Rumunsko", + "Rumunsko", + "Rusko", + "Ruská federácia", + "Rwanda", + "Rwandská republika", + "Salvádor", + "Salvádorská republika", + "Samoa", + "Nezávislý štát Samoa", + "San Maríno", + "Sanmarínska republika", + "Saudská Arábia", + "Kráľovstvo Saudskej Arábie", + "Senegal", + "Senegalská republika", + "Seychely", + "Seychelská republika", + "Sierra Leone", + "Republika Sierra Leone", + "Singapur", + "Singapurska republika", + "Slovensko", + "Slovenská republika", + "Slovinsko", + "Slovinská republika", + "Somálsko", + "Somálska demokratická republika", + "Spojené arabské emiráty", + "Spojené arabské emiráty", + "Spojené štáty americké", + "Spojené štáty americké", + "Srbsko a Čierna Hora", + "Srbsko a Čierna Hora", + "Srí Lanka", + "Demokratická socialistická republika Srí Lanka", + "Stredoafrická republika", + "Stredoafrická republika", + "Sudán", + "Sudánska republika", + "Surinam", + "Surinamská republika", + "Svazijsko", + "Svazijské kráľovstvo", + "Svätá Lucia", + "Svätá Lucia", + "Svätý Krištof a Nevis", + "Federácia Svätý Krištof a Nevis", + "Sv. Tomáš a Princov Ostrov", + "Demokratická republika Svätý Tomáš a Princov Ostrov", + "Sv. Vincent a Grenadíny", + "Svätý Vincent a Grenadíny", + "Sýria", + "Sýrska arabská republika", + "Šalamúnove ostrovy", + "Šalamúnove ostrovy", + "Španielsko", + "Španielske kráľovstvo", + "Švajčiarsko", + "Švajčiarska konfederácia", + "Švédsko", + "Švédske kráľovstvo", + "Tadžikistan", + "Tadžická republika", + "Taliansko", + "Talianska republika", + "Tanzánia", + "Tanzánijská zjednotená republika", + "Thajsko", + "Thajské kráľovstvo", + "Togo", + "Tožská republika", + "Tonga", + "Tonžské kráľovstvo", + "Trinidad a Tobago", + "Republika Trinidad a Tobago", + "Tunisko", + "Tuniská republika", + "Turecko", + "Turecká republika", + "Turkménsko", + "Turkménsko", + "Tuvalu", + "Tuvalu", + "Uganda", + "Ugandská republika", + "Ukrajina", + "Uruguaj", + "Uruguajská východná republika", + "Uzbekistan", + "Vanuatu", + "Vanuatská republika", + "Vatikán", + "Svätá Stolica", + "Veľká Británia", + "Spojené kráľovstvo Veľkej Británie a Severného Írska", + "Venezuela", + "Venezuelská bolívarovská republika", + "Vietnam", + "Vietnamská socialistická republika", + "Východný Timor", + "Demokratická republika Východný Timor", + "Zambia", + "Zambijská republika", + "Zimbabwe", + "Zimbabwianska republika" +]; + +},{}],897:[function(require,module,exports){ +module["exports"] = [ + "Slovensko" +]; + +},{}],898:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.country = require("./country"); +address.building_number = require("./building_number"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.time_zone = require("./time_zone"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.street = require("./street"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":891,"./city":892,"./city_name":893,"./city_prefix":894,"./city_suffix":895,"./country":896,"./default_country":897,"./postcode":899,"./secondary_address":900,"./state":901,"./state_abbr":902,"./street":903,"./street_address":904,"./street_name":905,"./time_zone":906}],899:[function(require,module,exports){ +module["exports"] = [ + "#####", + "### ##", + "## ###" +]; + +},{}],900:[function(require,module,exports){ +arguments[4][116][0].apply(exports,arguments) +},{"dup":116}],901:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],902:[function(require,module,exports){ +arguments[4][105][0].apply(exports,arguments) +},{"dup":105}],903:[function(require,module,exports){ +module["exports"] = [ + "Adámiho", + "Ahoj", + "Albína Brunovského", + "Albrechtova", + "Alejová", + "Alešova", + "Alibernetová", + "Alžbetínska", + "Alžbety Gwerkovej", + "Ambroseho", + "Ambrušova", + "Americká", + "Americké námestie", + "Americké námestie", + "Andreja Mráza", + "Andreja Plávku", + "Andrusovova", + "Anenská", + "Anenská", + "Antolská", + "Astronomická", + "Astrová", + "Azalková", + "Azovská", + "Babuškova", + "Bachova", + "Bajkalská", + "Bajkalská", + "Bajkalská", + "Bajkalská", + "Bajkalská", + "Bajkalská", + "Bajzova", + "Bancíkovej", + "Banícka", + "Baníkova", + "Banskobystrická", + "Banšelova", + "Bardejovská", + "Bartókova", + "Bartoňova", + "Bartoškova", + "Baštová", + "Bazová", + "Bažantia", + "Beblavého", + "Beckovská", + "Bedľová", + "Belániková", + "Belehradská", + "Belinského", + "Belopotockého", + "Beňadická", + "Bencúrova", + "Benediktiho", + "Beniakova", + "Bernolákova", + "Beskydská", + "Betliarska", + "Bezručova", + "Biela", + "Bielkova", + "Björnsonova", + "Blagoevova", + "Blatnická", + "Blumentálska", + "Blyskáčová", + "Bočná", + "Bohrova", + "Bohúňova", + "Bojnická", + "Borodáčova", + "Borská", + "Bosákova", + "Botanická", + "Bottova", + "Boženy Němcovej", + "Bôrik", + "Bradáčova", + "Bradlianska", + "Brančská", + "Bratská", + "Brestová", + "Brezovská", + "Briežky", + "Brnianska", + "Brodná", + "Brodská", + "Broskyňová", + "Břeclavská", + "Budatínska", + "Budatínska", + "Budatínska", + "Búdkova cesta", + "Budovateľská", + "Budyšínska", + "Budyšínska", + "Buková", + "Bukureštská", + "Bulharská", + "Bulíkova", + "Bystrého", + "Bzovícka", + "Cablkova", + "Cesta na Červený most", + "Cesta na Červený most", + "Cesta na Senec", + "Cikkerova", + "Cintorínska", + "Cintulova", + "Cukrová", + "Cyrilova", + "Čajakova", + "Čajkovského", + "Čaklovská", + "Čalovská", + "Čapajevova", + "Čapkova", + "Čárskeho", + "Čavojského", + "Čečinová", + "Čelakovského", + "Čerešňová", + "Černyševského", + "Červeňova", + "Česká", + "Československých par", + "Čipkárska", + "Čmelíkova", + "Čmeľovec", + "Čulenova", + "Daliborovo námestie", + "Dankovského", + "Dargovská", + "Ďatelinová", + "Daxnerovo námestie", + "Devínska cesta", + "Dlhé diely I.", + "Dlhé diely II.", + "Dlhé diely III.", + "Dobrovičova", + "Dobrovičova", + "Dobrovského", + "Dobšinského", + "Dohnalova", + "Dohnányho", + "Doležalova", + "Dolná", + "Dolnozemská cesta", + "Domkárska", + "Domové role", + "Donnerova", + "Donovalova", + "Dostojevského rad", + "Dr. Vladimíra Clemen", + "Drevená", + "Drieňová", + "Drieňová", + "Drieňová", + "Drotárska cesta", + "Drotárska cesta", + "Drotárska cesta", + "Družicová", + "Družstevná", + "Dubnická", + "Dubová", + "Dúbravská cesta", + "Dudova", + "Dulovo námestie", + "Dulovo námestie", + "Dunajská", + "Dvořákovo nábrežie", + "Edisonova", + "Einsteinova", + "Elektrárenská", + "Exnárova", + "F. Kostku", + "Fadruszova", + "Fajnorovo nábrežie", + "Fándlyho", + "Farebná", + "Farská", + "Farského", + "Fazuľová", + "Fedinova", + "Ferienčíkova", + "Fialkové údolie", + "Fibichova", + "Filiálne nádražie", + "Flöglova", + "Floriánske námestie", + "Fraňa Kráľa", + "Francisciho", + "Francúzskych partizá", + "Františkánska", + "Františkánske námest", + "Furdekova", + "Furdekova", + "Gabčíkova", + "Gagarinova", + "Gagarinova", + "Gagarinova", + "Gajova", + "Galaktická", + "Galandova", + "Gallova", + "Galvaniho", + "Gašparíkova", + "Gaštanová", + "Gavlovičova", + "Gemerská", + "Gercenova", + "Gessayova", + "Gettingová", + "Godrova", + "Gogoľova", + "Goláňova", + "Gondova", + "Goralská", + "Gorazdova", + "Gorkého", + "Gregorovej", + "Grösslingova", + "Gruzínska", + "Gunduličova", + "Gusevova", + "Haanova", + "Haburská", + "Halašova", + "Hálkova", + "Hálova", + "Hamuliakova", + "Hanácka", + "Handlovská", + "Hany Meličkovej", + "Harmanecká", + "Hasičská", + "Hattalova", + "Havlíčkova", + "Havrania", + "Haydnova", + "Herlianska", + "Herlianska", + "Heydukova", + "Hlaváčikova", + "Hlavatého", + "Hlavné námestie", + "Hlboká cesta", + "Hlboká cesta", + "Hlivová", + "Hlučínska", + "Hodálova", + "Hodžovo námestie", + "Holekova", + "Holíčska", + "Hollého", + "Holubyho", + "Hontianska", + "Horárska", + "Horné Židiny", + "Horská", + "Horská", + "Hrad", + "Hradné údolie", + "Hrachová", + "Hraničná", + "Hrebendova", + "Hríbová", + "Hriňovská", + "Hrobákova", + "Hrobárska", + "Hroboňova", + "Hudecova", + "Humenské námestie", + "Hummelova", + "Hurbanovo námestie", + "Hurbanovo námestie", + "Hviezdoslavovo námes", + "Hýrošova", + "Chalupkova", + "Chemická", + "Chlumeckého", + "Chorvátska", + "Chorvátska", + "Iľjušinova", + "Ilkovičova", + "Inovecká", + "Inovecká", + "Iskerníková", + "Ivana Horvátha", + "Ivánska cesta", + "J.C.Hronského", + "Jabloňová", + "Jadrová", + "Jakabova", + "Jakubovo námestie", + "Jamnického", + "Jána Stanislava", + "Janáčkova", + "Jančova", + "Janíkove role", + "Jankolova", + "Jánošíkova", + "Jánoškova", + "Janotova", + "Jánska", + "Jantárová cesta", + "Jarabinková", + "Jarná", + "Jaroslavova", + "Jarošova", + "Jaseňová", + "Jasná", + "Jasovská", + "Jastrabia", + "Jašíkova", + "Javorinská", + "Javorová", + "Jazdecká", + "Jedlíkova", + "Jégého", + "Jelačičova", + "Jelenia", + "Jesenná", + "Jesenského", + "Jiráskova", + "Jiskrova", + "Jozefská", + "Junácka", + "Jungmannova", + "Jurigovo námestie", + "Jurovského", + "Jurská", + "Justičná", + "K lomu", + "K Železnej studienke", + "Kalinčiakova", + "Kamenárska", + "Kamenné námestie", + "Kapicova", + "Kapitulská", + "Kapitulský dvor", + "Kapucínska", + "Kapušianska", + "Karadžičova", + "Karadžičova", + "Karadžičova", + "Karadžičova", + "Karloveská", + "Karloveské rameno", + "Karpatská", + "Kašmírska", + "Kaštielska", + "Kaukazská", + "Kempelenova", + "Kežmarské námestie", + "Kladnianska", + "Klariská", + "Kláštorská", + "Klatovská", + "Klatovská", + "Klemensova", + "Klincová", + "Klobučnícka", + "Klokočova", + "Kľukatá", + "Kmeťovo námestie", + "Koceľova", + "Kočánkova", + "Kohútova", + "Kolárska", + "Kolískova", + "Kollárovo námestie", + "Kollárovo námestie", + "Kolmá", + "Komárňanská", + "Komárnická", + "Komárnická", + "Komenského námestie", + "Kominárska", + "Komonicová", + "Konopná", + "Konvalinková", + "Konventná", + "Kopanice", + "Kopčianska", + "Koperníkova", + "Korabinského", + "Koreničova", + "Kostlivého", + "Kostolná", + "Košická", + "Košická", + "Košická", + "Kováčska", + "Kovorobotnícka", + "Kozia", + "Koziarka", + "Kozmonautická", + "Krajná", + "Krakovská", + "Kráľovské údolie", + "Krasinského", + "Kraskova", + "Krásna", + "Krásnohorská", + "Krasovského", + "Krátka", + "Krčméryho", + "Kremnická", + "Kresánkova", + "Krivá", + "Križkova", + "Krížna", + "Krížna", + "Krížna", + "Krížna", + "Krmanova", + "Krompašská", + "Krupinská", + "Krupkova", + "Kubániho", + "Kubínska", + "Kuklovská", + "Kukučínova", + "Kukuričná", + "Kulíškova", + "Kultúrna", + "Kupeckého", + "Kúpeľná", + "Kutlíkova", + "Kutuzovova", + "Kuzmányho", + "Kvačalova", + "Kvetná", + "Kýčerského", + "Kyjevská", + "Kysucká", + "Laborecká", + "Lackova", + "Ladislava Sáru", + "Ľadová", + "Lachova", + "Ľaliová", + "Lamačská cesta", + "Lamačská cesta", + "Lamanského", + "Landererova", + "Langsfeldova", + "Ľanová", + "Laskomerského", + "Laučekova", + "Laurinská", + "Lazaretská", + "Lazaretská", + "Legerského", + "Legionárska", + "Legionárska", + "Lehockého", + "Lehockého", + "Lenardova", + "Lermontovova", + "Lesná", + "Leškova", + "Letecká", + "Letisko M.R.Štefánik", + "Letná", + "Levárska", + "Levická", + "Levočská", + "Lidická", + "Lietavská", + "Lichardova", + "Lipová", + "Lipovinová", + "Liptovská", + "Listová", + "Líščie nivy", + "Líščie údolie", + "Litovská", + "Lodná", + "Lombardiniho", + "Lomonosovova", + "Lopenícka", + "Lovinského", + "Ľubietovská", + "Ľubinská", + "Ľubľanská", + "Ľubochnianska", + "Ľubovnianska", + "Lúčna", + "Ľudové námestie", + "Ľudovíta Fullu", + "Luhačovická", + "Lužická", + "Lužná", + "Lýcejná", + "Lykovcová", + "M. Hella", + "Magnetová", + "Macharova", + "Majakovského", + "Majerníkova", + "Májkova", + "Májová", + "Makovického", + "Malá", + "Malé pálenisko", + "Malinová", + "Malý Draždiak", + "Malý trh", + "Mamateyova", + "Mamateyova", + "Mánesovo námestie", + "Mariánska", + "Marie Curie-Sklodows", + "Márie Medveďovej", + "Markova", + "Marótyho", + "Martákovej", + "Martinčekova", + "Martinčekova", + "Martinengova", + "Martinská", + "Mateja Bela", + "Matejkova", + "Matičná", + "Matúšova", + "Medená", + "Medzierka", + "Medzilaborecká", + "Merlotová", + "Mesačná", + "Mestská", + "Meteorová", + "Metodova", + "Mickiewiczova", + "Mierová", + "Michalská", + "Mikovíniho", + "Mikulášska", + "Miletičova", + "Miletičova", + "Mišíkova", + "Mišíkova", + "Mišíkova", + "Mliekárenská", + "Mlynarovičova", + "Mlynská dolina", + "Mlynská dolina", + "Mlynská dolina", + "Mlynské luhy", + "Mlynské nivy", + "Mlynské nivy", + "Mlynské nivy", + "Mlynské nivy", + "Mlynské nivy", + "Mlyny", + "Modranská", + "Mojmírova", + "Mokráň záhon", + "Mokrohájska cesta", + "Moldavská", + "Molecova", + "Moravská", + "Moskovská", + "Most SNP", + "Mostová", + "Mošovského", + "Motýlia", + "Moyzesova", + "Mozartova", + "Mraziarenská", + "Mudroňova", + "Mudroňova", + "Mudroňova", + "Muchovo námestie", + "Murgašova", + "Muškátová", + "Muštová", + "Múzejná", + "Myjavská", + "Mýtna", + "Mýtna", + "Na Baránku", + "Na Brezinách", + "Na Hrebienku", + "Na Kalvárii", + "Na Kampárke", + "Na kopci", + "Na križovatkách", + "Na lánoch", + "Na paši", + "Na piesku", + "Na Riviére", + "Na Sitine", + "Na Slavíne", + "Na stráni", + "Na Štyridsiatku", + "Na úvrati", + "Na vŕšku", + "Na výslní", + "Nábělkova", + "Nábrežie arm. gen. L", + "Nábrežná", + "Nad Dunajom", + "Nad lomom", + "Nad lúčkami", + "Nad lúčkami", + "Nad ostrovom", + "Nad Sihoťou", + "Námestie 1. mája", + "Námestie Alexandra D", + "Námestie Biely kríž", + "Námestie Hraničiarov", + "Námestie Jána Pavla", + "Námestie Ľudovíta Št", + "Námestie Martina Ben", + "Nám. M.R.Štefánika", + "Námestie slobody", + "Námestie slobody", + "Námestie SNP", + "Námestie SNP", + "Námestie sv. Františ", + "Narcisová", + "Nedbalova", + "Nekrasovova", + "Neronetová", + "Nerudova", + "Nevädzová", + "Nezábudková", + "Niťová", + "Nitrianska", + "Nížinná", + "Nobelova", + "Nobelovo námestie", + "Nová", + "Nová Rožňavská", + "Novackého", + "Nové pálenisko", + "Nové záhrady I", + "Nové záhrady II", + "Nové záhrady III", + "Nové záhrady IV", + "Nové záhrady V", + "Nové záhrady VI", + "Nové záhrady VII", + "Novinárska", + "Novobanská", + "Novohradská", + "Novosvetská", + "Novosvetská", + "Novosvetská", + "Obežná", + "Obchodná", + "Očovská", + "Odbojárov", + "Odborárska", + "Odborárske námestie", + "Odborárske námestie", + "Ohnicová", + "Okánikova", + "Okružná", + "Olbrachtova", + "Olejkárska", + "Ondavská", + "Ondrejovova", + "Oravská", + "Orechová cesta", + "Orechový rad", + "Oriešková", + "Ormisova", + "Osadná", + "Ostravská", + "Ostredková", + "Osuského", + "Osvetová", + "Otonelská", + "Ovručská", + "Ovsištské námestie", + "Pajštúnska", + "Palackého", + "Palárikova", + "Palárikova", + "Pálavská", + "Palisády", + "Palisády", + "Palisády", + "Palkovičova", + "Panenská", + "Pankúchova", + "Panónska cesta", + "Panská", + "Papánkovo námestie", + "Papraďová", + "Páričkova", + "Parková", + "Partizánska", + "Pasienky", + "Paulínyho", + "Pavlovičova", + "Pavlovova", + "Pavlovská", + "Pažického", + "Pažítková", + "Pečnianska", + "Pernecká", + "Pestovateľská", + "Peterská", + "Petzvalova", + "Pezinská", + "Piesočná", + "Piešťanská", + "Pifflova", + "Pilárikova", + "Pionierska", + "Pivoňková", + "Planckova", + "Planét", + "Plátenícka", + "Pluhová", + "Plynárenská", + "Plzenská", + "Pobrežná", + "Pod Bôrikom", + "Pod Kalváriou", + "Pod lesom", + "Pod Rovnicami", + "Pod vinicami", + "Podhorského", + "Podjavorinskej", + "Podlučinského", + "Podniková", + "Podtatranského", + "Pohronská", + "Polárna", + "Poloreckého", + "Poľná", + "Poľská", + "Poludníková", + "Porubského", + "Poštová", + "Považská", + "Povraznícka", + "Povraznícka", + "Pražská", + "Predstaničné námesti", + "Prepoštská", + "Prešernova", + "Prešovská", + "Prešovská", + "Prešovská", + "Pri Bielom kríži", + "Pri dvore", + "Pri Dynamitke", + "Pri Habánskom mlyne", + "Pri hradnej studni", + "Pri seči", + "Pri Starej Prachárni", + "Pri Starom háji", + "Pri Starom Mýte", + "Pri strelnici", + "Pri Suchom mlyne", + "Pri zvonici", + "Pribinova", + "Pribinova", + "Pribinova", + "Pribišova", + "Pribylinská", + "Priečna", + "Priekopy", + "Priemyselná", + "Priemyselná", + "Prievozská", + "Prievozská", + "Prievozská", + "Príkopova", + "Primaciálne námestie", + "Prístav", + "Prístavná", + "Prokofievova", + "Prokopa Veľkého", + "Prokopova", + "Prúdová", + "Prvosienková", + "Púpavová", + "Pustá", + "Puškinova", + "Račianska", + "Račianska", + "Račianske mýto", + "Radarová", + "Rádiová", + "Radlinského", + "Radničná", + "Radničné námestie", + "Radvanská", + "Rajská", + "Raketová", + "Rákosová", + "Rastislavova", + "Rázusovo nábrežie", + "Repná", + "Rešetkova", + "Revolučná", + "Révová", + "Revúcka", + "Rezedová", + "Riazanská", + "Riazanská", + "Ribayová", + "Riečna", + "Rigeleho", + "Rízlingová", + "Riznerova", + "Robotnícka", + "Romanova", + "Röntgenova", + "Rosná", + "Rovná", + "Rovniankova", + "Rovníková", + "Rozmarínová", + "Rožňavská", + "Rožňavská", + "Rožňavská", + "Rubinsteinova", + "Rudnayovo námestie", + "Rumančeková", + "Rusovská cesta", + "Ružičková", + "Ružinovská", + "Ružinovská", + "Ružinovská", + "Ružomberská", + "Ružová dolina", + "Ružová dolina", + "Rybárska brána", + "Rybné námestie", + "Rýdziková", + "Sabinovská", + "Sabinovská", + "Sad Janka Kráľa", + "Sadová", + "Sartorisova", + "Sasinkova", + "Seberíniho", + "Sečovská", + "Sedlárska", + "Sedmokrásková", + "Segnerova", + "Sekulská", + "Semianova", + "Senická", + "Senná", + "Schillerova", + "Schody pri starej vo", + "Sibírska", + "Sienkiewiczova", + "Silvánska", + "Sinokvetná", + "Skalická cesta", + "Skalná", + "Sklenárova", + "Sklenárska", + "Sládkovičova", + "Sladová", + "Slávičie údolie", + "Slavín", + "Slepá", + "Sliačska", + "Sliezska", + "Slivková", + "Slnečná", + "Slovanská", + "Slovinská", + "Slovnaftská", + "Slowackého", + "Smetanova", + "Smikova", + "Smolenická", + "Smolnícka", + "Smrečianska", + "Soferove schody", + "Socháňova", + "Sokolská", + "Solivarská", + "Sološnická", + "Somolického", + "Somolického", + "Sosnová", + "Spišská", + "Spojná", + "Spoločenská", + "Sputniková", + "Sreznevského", + "Srnčia", + "Stachanovská", + "Stálicová", + "Staničná", + "Stará Černicová", + "Stará Ivánska cesta", + "Stará Prievozská", + "Stará Vajnorská", + "Stará vinárska", + "Staré Grunty", + "Staré ihrisko", + "Staré záhrady", + "Starhradská", + "Starohájska", + "Staromestská", + "Staroturský chodník", + "Staviteľská", + "Stodolova", + "Stoklasová", + "Strakova", + "Strážnická", + "Strážny dom", + "Strečnianska", + "Stredná", + "Strelecká", + "Strmá cesta", + "Strojnícka", + "Stropkovská", + "Struková", + "Studená", + "Stuhová", + "Súbežná", + "Súhvezdná", + "Suché mýto", + "Suchohradská", + "Súkennícka", + "Súľovská", + "Sumbalova", + "Súmračná", + "Súťažná", + "Svätého Vincenta", + "Svätoplukova", + "Svätoplukova", + "Svätovojtešská", + "Svetlá", + "Svíbová", + "Svidnícka", + "Svoradova", + "Svrčia", + "Syslia", + "Šafárikovo námestie", + "Šafárikovo námestie", + "Šafránová", + "Šagátova", + "Šalviová", + "Šancová", + "Šancová", + "Šancová", + "Šancová", + "Šándorova", + "Šarišská", + "Šášovská", + "Šaštínska", + "Ševčenkova", + "Šintavská", + "Šípková", + "Škarniclova", + "Školská", + "Škovránčia", + "Škultétyho", + "Šoltésovej", + "Špieszova", + "Špitálska", + "Športová", + "Šrobárovo námestie", + "Šťastná", + "Štedrá", + "Štefánikova", + "Štefánikova", + "Štefánikova", + "Štefanovičova", + "Štefunkova", + "Štetinova", + "Štiavnická", + "Štúrova", + "Štyndlova", + "Šulekova", + "Šulekova", + "Šulekova", + "Šumavská", + "Šuňavcova", + "Šustekova", + "Švabinského", + "Tabaková", + "Tablicova", + "Táborská", + "Tajovského", + "Tallerova", + "Tehelná", + "Technická", + "Tekovská", + "Telocvičná", + "Tematínska", + "Teplická", + "Terchovská", + "Teslova", + "Tetmayerova", + "Thurzova", + "Tichá", + "Tilgnerova", + "Timravina", + "Tobrucká", + "Tokajícka", + "Tolstého", + "Tománkova", + "Tomášikova", + "Tomášikova", + "Tomášikova", + "Tomášikova", + "Tomášikova", + "Topoľčianska", + "Topoľová", + "Továrenská", + "Trebišovská", + "Trebišovská", + "Trebišovská", + "Trenčianska", + "Treskoňova", + "Trnavská cesta", + "Trnavská cesta", + "Trnavská cesta", + "Trnavská cesta", + "Trnavská cesta", + "Trnavské mýto", + "Tŕňová", + "Trojdomy", + "Tučkova", + "Tupolevova", + "Turbínova", + "Turčianska", + "Turnianska", + "Tvarožkova", + "Tylova", + "Tyršovo nábrežie", + "Údernícka", + "Údolná", + "Uhorková", + "Ukrajinská", + "Ulica 29. augusta", + "Ulica 29. augusta", + "Ulica 29. augusta", + "Ulica 29. augusta", + "Ulica Imricha Karvaš", + "Ulica Jozefa Krónera", + "Ulica Viktora Tegelh", + "Úprkova", + "Úradnícka", + "Uránová", + "Urbánkova", + "Ursínyho", + "Uršulínska", + "Úzka", + "V záhradách", + "Vajanského nábrežie", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Vajnorská", + "Valašská", + "Valchárska", + "Vansovej", + "Vápenná", + "Varínska", + "Varšavská", + "Varšavská", + "Vavilovova", + "Vavrínova", + "Vazovova", + "Včelárska", + "Velehradská", + "Veltlínska", + "Ventúrska", + "Veterná", + "Veternicová", + "Vetvová", + "Viedenská cesta", + "Viedenská cesta", + "Vietnamská", + "Vígľašská", + "Vihorlatská", + "Viktorínova", + "Vilová", + "Vincenta Hložníka", + "Vínna", + "Vlastenecké námestie", + "Vlčkova", + "Vlčkova", + "Vlčkova", + "Vodný vrch", + "Votrubova", + "Vrábeľská", + "Vrakunská cesta", + "Vranovská", + "Vretenová", + "Vrchná", + "Vrútocká", + "Vyhliadka", + "Vyhnianska cesta", + "Vysoká", + "Vyšehradská", + "Vyšná", + "Wattova", + "Wilsonova", + "Wolkrova", + "Za Kasárňou", + "Za sokolovňou", + "Za Stanicou", + "Za tehelňou", + "Záborského", + "Zadunajská cesta", + "Záhorácka", + "Záhradnícka", + "Záhradnícka", + "Záhradnícka", + "Záhradnícka", + "Záhrebská", + "Záhrebská", + "Zálužická", + "Zámocká", + "Zámocké schody", + "Zámočnícka", + "Západná", + "Západný rad", + "Záporožská", + "Zátišie", + "Závodníkova", + "Zelená", + "Zelinárska", + "Zimná", + "Zlaté piesky", + "Zlaté schody", + "Znievska", + "Zohorská", + "Zochova", + "Zrinského", + "Zvolenská", + "Žabí majer", + "Žabotova", + "Žehrianska", + "Železná", + "Železničiarska", + "Žellova", + "Žiarska", + "Židovská", + "Žilinská", + "Žilinská", + "Živnostenská", + "Žižkova", + "Župné námestie" +]; + +},{}],904:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],905:[function(require,module,exports){ +arguments[4][121][0].apply(exports,arguments) +},{"dup":121}],906:[function(require,module,exports){ +arguments[4][122][0].apply(exports,arguments) +},{"dup":122}],907:[function(require,module,exports){ +arguments[4][123][0].apply(exports,arguments) +},{"dup":123}],908:[function(require,module,exports){ +arguments[4][124][0].apply(exports,arguments) +},{"dup":124}],909:[function(require,module,exports){ +arguments[4][125][0].apply(exports,arguments) +},{"dup":125}],910:[function(require,module,exports){ +arguments[4][126][0].apply(exports,arguments) +},{"dup":126}],911:[function(require,module,exports){ +arguments[4][127][0].apply(exports,arguments) +},{"./adjective":907,"./bs_noun":908,"./bs_verb":909,"./descriptor":910,"./name":912,"./noun":913,"./suffix":914,"dup":127}],912:[function(require,module,exports){ +arguments[4][128][0].apply(exports,arguments) +},{"dup":128}],913:[function(require,module,exports){ +arguments[4][129][0].apply(exports,arguments) +},{"dup":129}],914:[function(require,module,exports){ +arguments[4][130][0].apply(exports,arguments) +},{"dup":130}],915:[function(require,module,exports){ +var sk = {}; +module['exports'] = sk; +sk.title = "Slovakian"; +sk.address = require("./address"); +sk.company = require("./company"); +sk.internet = require("./internet"); +sk.lorem = require("./lorem"); +sk.name = require("./name"); +sk.phone_number = require("./phone_number"); + +},{"./address":898,"./company":911,"./internet":918,"./lorem":919,"./name":924,"./phone_number":932}],916:[function(require,module,exports){ +module["exports"] = [ + "sk", + "com", + "net", + "eu", + "org" +]; + +},{}],917:[function(require,module,exports){ +module["exports"] = [ + "gmail.com", + "zoznam.sk", + "azet.sk" +]; + +},{}],918:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":916,"./free_email":917,"dup":98}],919:[function(require,module,exports){ +arguments[4][138][0].apply(exports,arguments) +},{"./supplemental":920,"./words":921,"dup":138}],920:[function(require,module,exports){ +arguments[4][139][0].apply(exports,arguments) +},{"dup":139}],921:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],922:[function(require,module,exports){ +module["exports"] = [ + "Alexandra", + "Karina", + "Daniela", + "Andrea", + "Antónia", + "Bohuslava", + "Dáša", + "Malvína", + "Kristína", + "Nataša", + "Bohdana", + "Drahomíra", + "Sára", + "Zora", + "Tamara", + "Ema", + "Tatiana", + "Erika", + "Veronika", + "Agáta", + "Dorota", + "Vanda", + "Zoja", + "Gabriela", + "Perla", + "Ida", + "Liana", + "Miloslava", + "Vlasta", + "Lívia", + "Eleonóra", + "Etela", + "Romana", + "Zlatica", + "Anežka", + "Bohumila", + "Františka", + "Angela", + "Matilda", + "Svetlana", + "Ľubica", + "Alena", + "Soňa", + "Vieroslava", + "Zita", + "Miroslava", + "Irena", + "Milena", + "Estera", + "Justína", + "Dana", + "Danica", + "Jela", + "Jaroslava", + "Jarmila", + "Lea", + "Anastázia", + "Galina", + "Lesana", + "Hermína", + "Monika", + "Ingrida", + "Viktória", + "Blažena", + "Žofia", + "Sofia", + "Gizela", + "Viola", + "Gertrúda", + "Zina", + "Júlia", + "Juliana", + "Želmíra", + "Ela", + "Vanesa", + "Iveta", + "Vilma", + "Petronela", + "Žaneta", + "Xénia", + "Karolína", + "Lenka", + "Laura", + "Stanislava", + "Margaréta", + "Dobroslava", + "Blanka", + "Valéria", + "Paulína", + "Sidónia", + "Adriána", + "Beáta", + "Petra", + "Melánia", + "Diana", + "Berta", + "Patrícia", + "Lujza", + "Amália", + "Milota", + "Nina", + "Margita", + "Kamila", + "Dušana", + "Magdaléna", + "Oľga", + "Anna", + "Hana", + "Božena", + "Marta", + "Libuša", + "Božidara", + "Dominika", + "Hortenzia", + "Jozefína", + "Štefánia", + "Ľubomíra", + "Zuzana", + "Darina", + "Marcela", + "Milica", + "Elena", + "Helena", + "Lýdia", + "Anabela", + "Jana", + "Silvia", + "Nikola", + "Ružena", + "Nora", + "Drahoslava", + "Linda", + "Melinda", + "Rebeka", + "Rozália", + "Regína", + "Alica", + "Marianna", + "Miriama", + "Martina", + "Mária", + "Jolana", + "Ľudomila", + "Ľudmila", + "Olympia", + "Eugénia", + "Ľuboslava", + "Zdenka", + "Edita", + "Michaela", + "Stela", + "Viera", + "Natália", + "Eliška", + "Brigita", + "Valentína", + "Terézia", + "Vladimíra", + "Hedviga", + "Uršuľa", + "Alojza", + "Kvetoslava", + "Sabína", + "Dobromila", + "Klára", + "Simona", + "Aurélia", + "Denisa", + "Renáta", + "Irma", + "Agnesa", + "Klaudia", + "Alžbeta", + "Elvíra", + "Cecília", + "Emília", + "Katarína", + "Henrieta", + "Bibiána", + "Barbora", + "Marína", + "Izabela", + "Hilda", + "Otília", + "Lucia", + "Branislava", + "Bronislava", + "Ivica", + "Albína", + "Kornélia", + "Sláva", + "Slávka", + "Judita", + "Dagmara", + "Adela", + "Nadežda", + "Eva", + "Filoména", + "Ivana", + "Milada" +]; + +},{}],923:[function(require,module,exports){ +module["exports"] = [ + "Antalová", + "Babková", + "Bahnová", + "Balážová", + "Baranová", + "Baranková", + "Bartovičová", + "Bartošová", + "Bačová", + "Bernoláková", + "Beňová", + "Biceková", + "Bieliková", + "Blahová", + "Bondrová", + "Bosáková", + "Bošková", + "Brezinová", + "Bukovská", + "Chalupková", + "Chudíková", + "Cibulová", + "Cibulková", + "Cyprichová", + "Cígerová", + "Danková", + "Daňková", + "Daňová", + "Debnárová", + "Dejová", + "Dekýšová", + "Doležalová", + "Dočolomanská", + "Droppová", + "Dubovská", + "Dudeková", + "Dulová", + "Dullová", + "Dusíková", + "Dvončová", + "Dzurjaninová", + "Dávidová", + "Fabianová", + "Fabiánová", + "Fajnorová", + "Farkašovská", + "Ficová", + "Filcová", + "Filipová", + "Finková", + "Ftoreková", + "Gašparová", + "Gašparovičová", + "Gocníková", + "Gregorová", + "Gregušová", + "Grznárová", + "Habláková", + "Habšudová", + "Haldová", + "Halušková", + "Haláková", + "Hanková", + "Hanzalová", + "Haščáková", + "Heretiková", + "Hečková", + "Hlaváčeková", + "Hlinková", + "Holubová", + "Holubyová", + "Hossová", + "Hozová", + "Hrašková", + "Hricová", + "Hrmová", + "Hrušovská", + "Hubová", + "Ihnačáková", + "Janečeková", + "Janošková", + "Jantošovičová", + "Janíková", + "Jančeková", + "Jedľovská", + "Jendeková", + "Jonatová", + "Jurinová", + "Jurkovičová", + "Juríková", + "Jánošíková", + "Kafendová", + "Kaliská", + "Karulová", + "Kenížová", + "Klapková", + "Kmeťová", + "Kolesárová", + "Kollárová", + "Kolniková", + "Kolníková", + "Kolárová", + "Korecová", + "Kostkaová", + "Kostrecová", + "Kováčová", + "Kováčiková", + "Kozová", + "Kočišová", + "Krajíčeková", + "Krajčová", + "Krajčovičová", + "Krajčírová", + "Králiková", + "Krúpová", + "Kubíková", + "Kyseľová", + "Kállayová", + "Labudová", + "Lepšíková", + "Liptáková", + "Lisická", + "Lubinová", + "Lukáčová", + "Luptáková", + "Líšková", + "Madejová", + "Majeská", + "Malachovská", + "Malíšeková", + "Mamojková", + "Marcinková", + "Mariánová", + "Masaryková", + "Maslová", + "Matiašková", + "Medveďová", + "Melcerová", + "Mečiarová", + "Michalíková", + "Mihaliková", + "Mihálová", + "Miháliková", + "Miklošková", + "Mikulíková", + "Mikušová", + "Mikúšová", + "Milotová", + "Mináčová", + "Mišíková", + "Mojžišová", + "Mokrošová", + "Morová", + "Moravčíková", + "Mydlová", + "Nemcová", + "Nováková", + "Obšutová", + "Ondrušová", + "Otčenášová", + "Pauková", + "Pavlikovská", + "Pavúková", + "Pašeková", + "Pašková", + "Pelikánová", + "Petrovická", + "Petrušková", + "Pešková", + "Plchová", + "Plekanecová", + "Podhradská", + "Podkonická", + "Poliaková", + "Pupáková", + "Raková", + "Repiská", + "Romančíková", + "Rusová", + "Ružičková", + "Rybníčeková", + "Rybárová", + "Rybáriková", + "Samsonová", + "Sedliaková", + "Senková", + "Sklenková", + "Skokanová", + "Skutecká", + "Slašťanová", + "Slobodová", + "Slobodníková", + "Slotová", + "Slováková", + "Smreková", + "Stodolová", + "Straková", + "Strnisková", + "Svrbíková", + "Sámelová", + "Sýkorová", + "Tatarová", + "Tatarková", + "Tatárová", + "Tatárkaová", + "Thomková", + "Tomečeková", + "Tomková", + "Trubenová", + "Turčoková", + "Uramová", + "Urblíková", + "Vajcíková", + "Vajdová", + "Valachová", + "Valachovičová", + "Valentová", + "Valušková", + "Vaneková", + "Veselová", + "Vicenová", + "Višňovská", + "Vlachová", + "Vojteková", + "Vydarená", + "Zajacová", + "Zimová", + "Zimková", + "Záborská", + "Zúbriková", + "Čapkovičová", + "Čaplovičová", + "Čarnogurská", + "Čierná", + "Čobrdová", + "Ďaďová", + "Ďuricová", + "Ďurišová", + "Šidlová", + "Šimonovičová", + "Škriniarová", + "Škultétyová", + "Šmajdová", + "Šoltésová", + "Šoltýsová", + "Štefanová", + "Štefanková", + "Šulcová", + "Šurková", + "Švehlová", + "Šťastná" +]; + +},{}],924:[function(require,module,exports){ +arguments[4][143][0].apply(exports,arguments) +},{"./female_first_name":922,"./female_last_name":923,"./male_first_name":925,"./male_last_name":926,"./name":927,"./prefix":928,"./suffix":929,"./title":930,"dup":143}],925:[function(require,module,exports){ +module["exports"] = [ + "Drahoslav", + "Severín", + "Alexej", + "Ernest", + "Rastislav", + "Radovan", + "Dobroslav", + "Dalibor", + "Vincent", + "Miloš", + "Timotej", + "Gejza", + "Bohuš", + "Alfonz", + "Gašpar", + "Emil", + "Erik", + "Blažej", + "Zdenko", + "Dezider", + "Arpád", + "Valentín", + "Pravoslav", + "Jaromír", + "Roman", + "Matej", + "Frederik", + "Viktor", + "Alexander", + "Radomír", + "Albín", + "Bohumil", + "Kazimír", + "Fridrich", + "Radoslav", + "Tomáš", + "Alan", + "Branislav", + "Bruno", + "Gregor", + "Vlastimil", + "Boleslav", + "Eduard", + "Jozef", + "Víťazoslav", + "Blahoslav", + "Beňadik", + "Adrián", + "Gabriel", + "Marián", + "Emanuel", + "Miroslav", + "Benjamín", + "Hugo", + "Richard", + "Izidor", + "Zoltán", + "Albert", + "Igor", + "Július", + "Aleš", + "Fedor", + "Rudolf", + "Valér", + "Marcel", + "Ervín", + "Slavomír", + "Vojtech", + "Juraj", + "Marek", + "Jaroslav", + "Žigmund", + "Florián", + "Roland", + "Pankrác", + "Servác", + "Bonifác", + "Svetozár", + "Bernard", + "Júlia", + "Urban", + "Dušan", + "Viliam", + "Ferdinand", + "Norbert", + "Róbert", + "Medard", + "Zlatko", + "Anton", + "Vasil", + "Vít", + "Adolf", + "Vratislav", + "Alfréd", + "Alojz", + "Ján", + "Tadeáš", + "Ladislav", + "Peter", + "Pavol", + "Miloslav", + "Prokop", + "Cyril", + "Metod", + "Patrik", + "Oliver", + "Ivan", + "Kamil", + "Henrich", + "Drahomír", + "Bohuslav", + "Iľja", + "Daniel", + "Vladimír", + "Jakub", + "Krištof", + "Ignác", + "Gustáv", + "Jerguš", + "Dominik", + "Oskar", + "Vavrinec", + "Ľubomír", + "Mojmír", + "Leonard", + "Tichomír", + "Filip", + "Bartolomej", + "Ľudovít", + "Samuel", + "Augustín", + "Belo", + "Oleg", + "Bystrík", + "Ctibor", + "Ľudomil", + "Konštantín", + "Ľuboslav", + "Matúš", + "Móric", + "Ľuboš", + "Ľubor", + "Vladislav", + "Cyprián", + "Václav", + "Michal", + "Jarolím", + "Arnold", + "Levoslav", + "František", + "Dionýz", + "Maximilián", + "Koloman", + "Boris", + "Lukáš", + "Kristián", + "Vendelín", + "Sergej", + "Aurel", + "Demeter", + "Denis", + "Hubert", + "Karol", + "Imrich", + "René", + "Bohumír", + "Teodor", + "Tibor", + "Maroš", + "Martin", + "Svätopluk", + "Stanislav", + "Leopold", + "Eugen", + "Félix", + "Klement", + "Kornel", + "Milan", + "Vratko", + "Ondrej", + "Andrej", + "Edmund", + "Oldrich", + "Oto", + "Mikuláš", + "Ambróz", + "Radúz", + "Bohdan", + "Adam", + "Štefan", + "Dávid", + "Silvester" +]; + +},{}],926:[function(require,module,exports){ +module["exports"] = [ + "Antal", + "Babka", + "Bahna", + "Bahno", + "Baláž", + "Baran", + "Baranka", + "Bartovič", + "Bartoš", + "Bača", + "Bernolák", + "Beňo", + "Bicek", + "Bielik", + "Blaho", + "Bondra", + "Bosák", + "Boška", + "Brezina", + "Bukovský", + "Chalupka", + "Chudík", + "Cibula", + "Cibulka", + "Cibuľa", + "Cyprich", + "Cíger", + "Danko", + "Daňko", + "Daňo", + "Debnár", + "Dej", + "Dekýš", + "Doležal", + "Dočolomanský", + "Droppa", + "Dubovský", + "Dudek", + "Dula", + "Dulla", + "Dusík", + "Dvonč", + "Dzurjanin", + "Dávid", + "Fabian", + "Fabián", + "Fajnor", + "Farkašovský", + "Fico", + "Filc", + "Filip", + "Finka", + "Ftorek", + "Gašpar", + "Gašparovič", + "Gocník", + "Gregor", + "Greguš", + "Grznár", + "Hablák", + "Habšuda", + "Halda", + "Haluška", + "Halák", + "Hanko", + "Hanzal", + "Haščák", + "Heretik", + "Hečko", + "Hlaváček", + "Hlinka", + "Holub", + "Holuby", + "Hossa", + "Hoza", + "Hraško", + "Hric", + "Hrmo", + "Hrušovský", + "Huba", + "Ihnačák", + "Janeček", + "Janoška", + "Jantošovič", + "Janík", + "Janček", + "Jedľovský", + "Jendek", + "Jonata", + "Jurina", + "Jurkovič", + "Jurík", + "Jánošík", + "Kafenda", + "Kaliský", + "Karul", + "Keníž", + "Klapka", + "Kmeť", + "Kolesár", + "Kollár", + "Kolnik", + "Kolník", + "Kolár", + "Korec", + "Kostka", + "Kostrec", + "Kováč", + "Kováčik", + "Koza", + "Kočiš", + "Krajíček", + "Krajči", + "Krajčo", + "Krajčovič", + "Krajčír", + "Králik", + "Krúpa", + "Kubík", + "Kyseľ", + "Kállay", + "Labuda", + "Lepšík", + "Lipták", + "Lisický", + "Lubina", + "Lukáč", + "Lupták", + "Líška", + "Madej", + "Majeský", + "Malachovský", + "Malíšek", + "Mamojka", + "Marcinko", + "Marián", + "Masaryk", + "Maslo", + "Matiaško", + "Medveď", + "Melcer", + "Mečiar", + "Michalík", + "Mihalik", + "Mihál", + "Mihálik", + "Mikloško", + "Mikulík", + "Mikuš", + "Mikúš", + "Milota", + "Mináč", + "Mišík", + "Mojžiš", + "Mokroš", + "Mora", + "Moravčík", + "Mydlo", + "Nemec", + "Nitra", + "Novák", + "Obšut", + "Ondruš", + "Otčenáš", + "Pauko", + "Pavlikovský", + "Pavúk", + "Pašek", + "Paška", + "Paško", + "Pelikán", + "Petrovický", + "Petruška", + "Peško", + "Plch", + "Plekanec", + "Podhradský", + "Podkonický", + "Poliak", + "Pupák", + "Rak", + "Repiský", + "Romančík", + "Rus", + "Ružička", + "Rybníček", + "Rybár", + "Rybárik", + "Samson", + "Sedliak", + "Senko", + "Sklenka", + "Skokan", + "Skutecký", + "Slašťan", + "Sloboda", + "Slobodník", + "Slota", + "Slovák", + "Smrek", + "Stodola", + "Straka", + "Strnisko", + "Svrbík", + "Sámel", + "Sýkora", + "Tatar", + "Tatarka", + "Tatár", + "Tatárka", + "Thomka", + "Tomeček", + "Tomka", + "Tomko", + "Truben", + "Turčok", + "Uram", + "Urblík", + "Vajcík", + "Vajda", + "Valach", + "Valachovič", + "Valent", + "Valuška", + "Vanek", + "Vesel", + "Vicen", + "Višňovský", + "Vlach", + "Vojtek", + "Vydarený", + "Zajac", + "Zima", + "Zimka", + "Záborský", + "Zúbrik", + "Čapkovič", + "Čaplovič", + "Čarnogurský", + "Čierny", + "Čobrda", + "Ďaďo", + "Ďurica", + "Ďuriš", + "Šidlo", + "Šimonovič", + "Škriniar", + "Škultéty", + "Šmajda", + "Šoltés", + "Šoltýs", + "Štefan", + "Štefanka", + "Šulc", + "Šurka", + "Švehla", + "Šťastný" +]; + +},{}],927:[function(require,module,exports){ +arguments[4][146][0].apply(exports,arguments) +},{"dup":146}],928:[function(require,module,exports){ +arguments[4][147][0].apply(exports,arguments) +},{"dup":147}],929:[function(require,module,exports){ +arguments[4][148][0].apply(exports,arguments) +},{"dup":148}],930:[function(require,module,exports){ +arguments[4][319][0].apply(exports,arguments) +},{"dup":319}],931:[function(require,module,exports){ +module["exports"] = [ + "09## ### ###", + "0## #### ####", + "0# #### ####", + "+421 ### ### ###" +]; + +},{}],932:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":931,"dup":108}],933:[function(require,module,exports){ +arguments[4][566][0].apply(exports,arguments) +},{"dup":566}],934:[function(require,module,exports){ +module["exports"] = [ + "#{city_prefix}#{city_suffix}" +]; + +},{}],935:[function(require,module,exports){ +module["exports"] = [ + "Söder", + "Norr", + "Väst", + "Öster", + "Aling", + "Ar", + "Av", + "Bo", + "Br", + "Bå", + "Ek", + "En", + "Esk", + "Fal", + "Gäv", + "Göte", + "Ha", + "Helsing", + "Karl", + "Krist", + "Kram", + "Kung", + "Kö", + "Lyck", + "Ny" +]; + +},{}],936:[function(require,module,exports){ +module["exports"] = [ + "stad", + "land", + "sås", + "ås", + "holm", + "tuna", + "sta", + "berg", + "löv", + "borg", + "mora", + "hamn", + "fors", + "köping", + "by", + "hult", + "torp", + "fred", + "vik" +]; + +},{}],937:[function(require,module,exports){ +module["exports"] = [ + "s Väg", + "s Gata" +]; + +},{}],938:[function(require,module,exports){ +module["exports"] = [ + "Ryssland", + "Kanada", + "Kina", + "USA", + "Brasilien", + "Australien", + "Indien", + "Argentina", + "Kazakstan", + "Algeriet", + "DR Kongo", + "Danmark", + "Färöarna", + "Grönland", + "Saudiarabien", + "Mexiko", + "Indonesien", + "Sudan", + "Libyen", + "Iran", + "Mongoliet", + "Peru", + "Tchad", + "Niger", + "Angola", + "Mali", + "Sydafrika", + "Colombia", + "Etiopien", + "Bolivia", + "Mauretanien", + "Egypten", + "Tanzania", + "Nigeria", + "Venezuela", + "Namibia", + "Pakistan", + "Moçambique", + "Turkiet", + "Chile", + "Zambia", + "Marocko", + "Västsahara", + "Burma", + "Afghanistan", + "Somalia", + "Centralafrikanska republiken", + "Sydsudan", + "Ukraina", + "Botswana", + "Madagaskar", + "Kenya", + "Frankrike", + "Franska Guyana", + "Jemen", + "Thailand", + "Spanien", + "Turkmenistan", + "Kamerun", + "Papua Nya Guinea", + "Sverige", + "Uzbekistan", + "Irak", + "Paraguay", + "Zimbabwe", + "Japan", + "Tyskland", + "Kongo", + "Finland", + "Malaysia", + "Vietnam", + "Norge", + "Svalbard", + "Jan Mayen", + "Elfenbenskusten", + "Polen", + "Italien", + "Filippinerna", + "Ecuador", + "Burkina Faso", + "Nya Zeeland", + "Gabon", + "Guinea", + "Storbritannien", + "Ghana", + "Rumänien", + "Laos", + "Uganda", + "Guyana", + "Oman", + "Vitryssland", + "Kirgizistan", + "Senegal", + "Syrien", + "Kambodja", + "Uruguay", + "Tunisien", + "Surinam", + "Nepal", + "Bangladesh", + "Tadzjikistan", + "Grekland", + "Nicaragua", + "Eritrea", + "Nordkorea", + "Malawi", + "Benin", + "Honduras", + "Liberia", + "Bulgarien", + "Kuba", + "Guatemala", + "Island", + "Sydkorea", + "Ungern", + "Portugal", + "Jordanien", + "Serbien", + "Azerbajdzjan", + "Österrike", + "Förenade Arabemiraten", + "Tjeckien", + "Panama", + "Sierra Leone", + "Irland", + "Georgien", + "Sri Lanka", + "Litauen", + "Lettland", + "Togo", + "Kroatien", + "Bosnien och Hercegovina", + "Costa Rica", + "Slovakien", + "Dominikanska republiken", + "Bhutan", + "Estland", + "Danmark", + "Färöarna", + "Grönland", + "Nederländerna", + "Schweiz", + "Guinea-Bissau", + "Taiwan", + "Moldavien", + "Belgien", + "Lesotho", + "Armenien", + "Albanien", + "Salomonöarna", + "Ekvatorialguinea", + "Burundi", + "Haiti", + "Rwanda", + "Makedonien", + "Djibouti", + "Belize", + "Israel", + "El Salvador", + "Slovenien", + "Fiji", + "Kuwait", + "Swaziland", + "Timor-Leste", + "Montenegro", + "Bahamas", + "Vanuatu", + "Qatar", + "Gambia", + "Jamaica", + "Kosovo", + "Libanon", + "Cypern", + "Brunei", + "Trinidad och Tobago", + "Kap Verde", + "Samoa", + "Luxemburg", + "Komorerna", + "Mauritius", + "São Tomé och Príncipe", + "Kiribati", + "Dominica", + "Tonga", + "Mikronesiens federerade stater", + "Singapore", + "Bahrain", + "Saint Lucia", + "Andorra", + "Palau", + "Seychellerna", + "Antigua och Barbuda", + "Barbados", + "Saint Vincent och Grenadinerna", + "Grenada", + "Malta", + "Maldiverna", + "Saint Kitts och Nevis", + "Marshallöarna", + "Liechtenstein", + "San Marino", + "Tuvalu", + "Nauru", + "Monaco", + "Vatikanstaten" +]; + +},{}],939:[function(require,module,exports){ +module["exports"] = [ + "Sverige" +]; + +},{}],940:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.country = require("./country"); +address.common_street_suffix = require("./common_street_suffix"); +address.street_prefix = require("./street_prefix"); +address.street_root = require("./street_root"); +address.street_suffix = require("./street_suffix"); +address.state = require("./state"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.postcode = require("./postcode"); +address.building_number = require("./building_number"); +address.secondary_address = require("./secondary_address"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":933,"./city":934,"./city_prefix":935,"./city_suffix":936,"./common_street_suffix":937,"./country":938,"./default_country":939,"./postcode":941,"./secondary_address":942,"./state":943,"./street_address":944,"./street_name":945,"./street_prefix":946,"./street_root":947,"./street_suffix":948}],941:[function(require,module,exports){ +arguments[4][434][0].apply(exports,arguments) +},{"dup":434}],942:[function(require,module,exports){ +module["exports"] = [ + "Lgh. ###", + "Hus ###" +]; + +},{}],943:[function(require,module,exports){ +module["exports"] = [ + "Blekinge", + "Dalarna", + "Gotland", + "Gävleborg", + "Göteborg", + "Halland", + "Jämtland", + "Jönköping", + "Kalmar", + "Kronoberg", + "Norrbotten", + "Skaraborg", + "Skåne", + "Stockholm", + "Södermanland", + "Uppsala", + "Värmland", + "Västerbotten", + "Västernorrland", + "Västmanland", + "Älvsborg", + "Örebro", + "Östergötland" +]; + +},{}],944:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],945:[function(require,module,exports){ +arguments[4][718][0].apply(exports,arguments) +},{"dup":718}],946:[function(require,module,exports){ +module["exports"] = [ + "Västra", + "Östra", + "Norra", + "Södra", + "Övre", + "Undre" +]; + +},{}],947:[function(require,module,exports){ +module["exports"] = [ + "Björk", + "Järnvägs", + "Ring", + "Skol", + "Skogs", + "Ny", + "Gran", + "Idrotts", + "Stor", + "Kyrk", + "Industri", + "Park", + "Strand", + "Skol", + "Trädgård", + "Ängs", + "Kyrko", + "Villa", + "Ek", + "Kvarn", + "Stations", + "Back", + "Furu", + "Gen", + "Fabriks", + "Åker", + "Bäck", + "Asp" +]; + +},{}],948:[function(require,module,exports){ +module["exports"] = [ + "vägen", + "gatan", + "gränden", + "gärdet", + "allén" +]; + +},{}],949:[function(require,module,exports){ +module["exports"] = [ + 56, + 62, + 59 +]; + +},{}],950:[function(require,module,exports){ +module["exports"] = [ + "#{common_cell_prefix}-###-####" +]; + +},{}],951:[function(require,module,exports){ +var cell_phone = {}; +module['exports'] = cell_phone; +cell_phone.common_cell_prefix = require("./common_cell_prefix"); +cell_phone.formats = require("./formats"); + +},{"./common_cell_prefix":949,"./formats":950}],952:[function(require,module,exports){ +module["exports"] = [ + "vit", + "silver", + "grå", + "svart", + "röd", + "grön", + "blå", + "gul", + "lila", + "indigo", + "guld", + "brun", + "rosa", + "purpur", + "korall" +]; + +},{}],953:[function(require,module,exports){ +module["exports"] = [ + "Böcker", + "Filmer", + "Musik", + "Spel", + "Elektronik", + "Datorer", + "Hem", + "Trädgård", + "Verktyg", + "Livsmedel", + "Hälsa", + "Skönhet", + "Leksaker", + "Klädsel", + "Skor", + "Smycken", + "Sport" +]; + +},{}],954:[function(require,module,exports){ +arguments[4][86][0].apply(exports,arguments) +},{"./color":952,"./department":953,"./product_name":955,"dup":86}],955:[function(require,module,exports){ +module["exports"] = { + "adjective": [ + "Liten", + "Ergonomisk", + "Robust", + "Intelligent", + "Söt", + "Otrolig", + "Fatastisk", + "Praktisk", + "Slimmad", + "Grym" + ], + "material": [ + "Stål", + "Metall", + "Trä", + "Betong", + "Plast", + "Bomul", + "Grnit", + "Gummi", + "Latex" + ], + "product": [ + "Stol", + "Bil", + "Dator", + "Handskar", + "Pants", + "Shirt", + "Table", + "Shoes", + "Hat" + ] +}; + +},{}],956:[function(require,module,exports){ +arguments[4][221][0].apply(exports,arguments) +},{"./name":957,"./suffix":958,"dup":221}],957:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name} #{suffix}", + "#{Name.last_name}-#{Name.last_name}", + "#{Name.last_name}, #{Name.last_name} #{suffix}" +]; + +},{}],958:[function(require,module,exports){ +module["exports"] = [ + "Gruppen", + "AB", + "HB", + "Group", + "Investment", + "Kommanditbolag", + "Aktiebolag" +]; + +},{}],959:[function(require,module,exports){ +arguments[4][92][0].apply(exports,arguments) +},{"./month":960,"./weekday":961,"dup":92}],960:[function(require,module,exports){ +// Source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/en.xml#L1799 +module["exports"] = { + wide: [ + "januari", + "februari", + "mars", + "april", + "maj", + "juni", + "juli", + "augusti", + "september", + "oktober", + "november", + "december" + ], + abbr: [ + "jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "aug", + "sep", + "okt", + "nov", + "dec" + ] +}; + +},{}],961:[function(require,module,exports){ +// Source: http://unicode.org/cldr/trac/browser/tags/release-27/common/main/en.xml#L1847 +module["exports"] = { + wide: [ + "söndag", + "måndag", + "tisdag", + "onsdag", + "torsdag", + "fredag", + "lördag" + ], + abbr: [ + "sön", + "mån", + "tis", + "ons", + "tor", + "fre", + "lör" + ] +}; + +},{}],962:[function(require,module,exports){ +var sv = {}; +module['exports'] = sv; +sv.title = "Swedish"; +sv.address = require("./address"); +sv.company = require("./company"); +sv.internet = require("./internet"); +sv.name = require("./name"); +sv.phone_number = require("./phone_number"); +sv.cell_phone = require("./cell_phone"); +sv.commerce = require("./commerce"); +sv.team = require("./team"); +sv.date = require("./date"); + +},{"./address":940,"./cell_phone":951,"./commerce":954,"./company":956,"./date":959,"./internet":964,"./name":967,"./phone_number":973,"./team":974}],963:[function(require,module,exports){ +module["exports"] = [ + "se", + "nu", + "info", + "com", + "org" +]; + +},{}],964:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":963,"dup":226}],965:[function(require,module,exports){ +module["exports"] = [ + "Erik", + "Lars", + "Karl", + "Anders", + "Per", + "Johan", + "Nils", + "Lennart", + "Emil", + "Hans" +]; + +},{}],966:[function(require,module,exports){ +module["exports"] = [ + "Maria", + "Anna", + "Margareta", + "Elisabeth", + "Eva", + "Birgitta", + "Kristina", + "Karin", + "Elisabet", + "Marie" +]; + +},{}],967:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name_women = require("./first_name_women"); +name.first_name_men = require("./first_name_men"); +name.last_name = require("./last_name"); +name.prefix = require("./prefix"); +name.title = require("./title"); +name.name = require("./name"); + +},{"./first_name_men":965,"./first_name_women":966,"./last_name":968,"./name":969,"./prefix":970,"./title":971}],968:[function(require,module,exports){ +module["exports"] = [ + "Johansson", + "Andersson", + "Karlsson", + "Nilsson", + "Eriksson", + "Larsson", + "Olsson", + "Persson", + "Svensson", + "Gustafsson" +]; + +},{}],969:[function(require,module,exports){ +module["exports"] = [ + "#{first_name_women} #{last_name}", + "#{first_name_men} #{last_name}", + "#{first_name_women} #{last_name}", + "#{first_name_men} #{last_name}", + "#{first_name_women} #{last_name}", + "#{first_name_men} #{last_name}", + "#{prefix} #{first_name_men} #{last_name}", + "#{prefix} #{first_name_women} #{last_name}" +]; + +},{}],970:[function(require,module,exports){ +module["exports"] = [ + "Dr.", + "Prof.", + "PhD." +]; + +},{}],971:[function(require,module,exports){ +arguments[4][319][0].apply(exports,arguments) +},{"dup":319}],972:[function(require,module,exports){ +module["exports"] = [ + "####-#####", + "####-######" +]; + +},{}],973:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":972,"dup":108}],974:[function(require,module,exports){ +var team = {}; +module['exports'] = team; +team.suffix = require("./suffix"); +team.name = require("./name"); + +},{"./name":975,"./suffix":976}],975:[function(require,module,exports){ +module["exports"] = [ + "#{Address.city} #{suffix}" +]; + +},{}],976:[function(require,module,exports){ +module["exports"] = [ + "IF", + "FF", + "BK", + "HK", + "AIF", + "SK", + "FC", + "SK", + "BoIS", + "FK", + "BIS", + "FIF", + "IK" +]; + +},{}],977:[function(require,module,exports){ +arguments[4][152][0].apply(exports,arguments) +},{"dup":152}],978:[function(require,module,exports){ +module["exports"] = [ + "Adana", + "Adıyaman", + "Afyon", + "Ağrı", + "Amasya", + "Ankara", + "Antalya", + "Artvin", + "Aydın", + "Balıkesir", + "Bilecik", + "Bingöl", + "Bitlis", + "Bolu", + "Burdur", + "Bursa", + "Çanakkale", + "Çankırı", + "Çorum", + "Denizli", + "Diyarbakır", + "Edirne", + "Elazığ", + "Erzincan", + "Erzurum", + "Eskişehir", + "Gaziantep", + "Giresun", + "Gümüşhane", + "Hakkari", + "Hatay", + "Isparta", + "İçel (Mersin)", + "İstanbul", + "İzmir", + "Kars", + "Kastamonu", + "Kayseri", + "Kırklareli", + "Kırşehir", + "Kocaeli", + "Konya", + "Kütahya", + "Malatya", + "Manisa", + "K.maraş", + "Mardin", + "Muğla", + "Muş", + "Nevşehir", + "Niğde", + "Ordu", + "Rize", + "Sakarya", + "Samsun", + "Siirt", + "Sinop", + "Sivas", + "Tekirdağ", + "Tokat", + "Trabzon", + "Tunceli", + "Şanlıurfa", + "Uşak", + "Van", + "Yozgat", + "Zonguldak", + "Aksaray", + "Bayburt", + "Karaman", + "Kırıkkale", + "Batman", + "Şırnak", + "Bartın", + "Ardahan", + "Iğdır", + "Yalova", + "Karabük", + "Kilis", + "Osmaniye", + "Düzce" +]; + +},{}],979:[function(require,module,exports){ +module["exports"] = [ + "Afganistan", + "Almanya", + "Amerika Birleşik Devletleri", + "Amerikan Samoa", + "Andorra", + "Angola", + "Anguilla, İngiltere", + "Antigua ve Barbuda", + "Arjantin", + "Arnavutluk", + "Aruba, Hollanda", + "Avustralya", + "Avusturya", + "Azerbaycan", + "Bahama Adaları", + "Bahreyn", + "Bangladeş", + "Barbados", + "Belçika", + "Belize", + "Benin", + "Bermuda, İngiltere", + "Beyaz Rusya", + "Bhutan", + "Birleşik Arap Emirlikleri", + "Birmanya (Myanmar)", + "Bolivya", + "Bosna Hersek", + "Botswana", + "Brezilya", + "Brunei", + "Bulgaristan", + "Burkina Faso", + "Burundi", + "Cape Verde", + "Cayman Adaları, İngiltere", + "Cebelitarık, İngiltere", + "Cezayir", + "Christmas Adası , Avusturalya", + "Cibuti", + "Çad", + "Çek Cumhuriyeti", + "Çin", + "Danimarka", + "Doğu Timor", + "Dominik Cumhuriyeti", + "Dominika", + "Ekvator", + "Ekvator Ginesi", + "El Salvador", + "Endonezya", + "Eritre", + "Ermenistan", + "Estonya", + "Etiyopya", + "Fas", + "Fiji", + "Fildişi Sahili", + "Filipinler", + "Filistin", + "Finlandiya", + "Folkland Adaları, İngiltere", + "Fransa", + "Fransız Guyanası", + "Fransız Güney Eyaletleri (Kerguelen Adaları)", + "Fransız Polinezyası", + "Gabon", + "Galler", + "Gambiya", + "Gana", + "Gine", + "Gine-Bissau", + "Grenada", + "Grönland", + "Guadalup, Fransa", + "Guam, Amerika", + "Guatemala", + "Guyana", + "Güney Afrika", + "Güney Georgia ve Güney Sandviç Adaları, İngiltere", + "Güney Kıbrıs Rum Yönetimi", + "Güney Kore", + "Gürcistan H", + "Haiti", + "Hırvatistan", + "Hindistan", + "Hollanda", + "Hollanda Antilleri", + "Honduras", + "Irak", + "İngiltere", + "İran", + "İrlanda", + "İspanya", + "İsrail", + "İsveç", + "İsviçre", + "İtalya", + "İzlanda", + "Jamaika", + "Japonya", + "Johnston Atoll, Amerika", + "K.K.T.C.", + "Kamboçya", + "Kamerun", + "Kanada", + "Kanarya Adaları", + "Karadağ", + "Katar", + "Kazakistan", + "Kenya", + "Kırgızistan", + "Kiribati", + "Kolombiya", + "Komorlar", + "Kongo", + "Kongo Demokratik Cumhuriyeti", + "Kosova", + "Kosta Rika", + "Kuveyt", + "Kuzey İrlanda", + "Kuzey Kore", + "Kuzey Maryana Adaları", + "Küba", + "Laos", + "Lesotho", + "Letonya", + "Liberya", + "Libya", + "Liechtenstein", + "Litvanya", + "Lübnan", + "Lüksemburg", + "Macaristan", + "Madagaskar", + "Makau (Makao)", + "Makedonya", + "Malavi", + "Maldiv Adaları", + "Malezya", + "Mali", + "Malta", + "Marşal Adaları", + "Martinik, Fransa", + "Mauritius", + "Mayotte, Fransa", + "Meksika", + "Mısır", + "Midway Adaları, Amerika", + "Mikronezya", + "Moğolistan", + "Moldavya", + "Monako", + "Montserrat", + "Moritanya", + "Mozambik", + "Namibia", + "Nauru", + "Nepal", + "Nijer", + "Nijerya", + "Nikaragua", + "Niue, Yeni Zelanda", + "Norveç", + "Orta Afrika Cumhuriyeti", + "Özbekistan", + "Pakistan", + "Palau Adaları", + "Palmyra Atoll, Amerika", + "Panama", + "Papua Yeni Gine", + "Paraguay", + "Peru", + "Polonya", + "Portekiz", + "Porto Riko, Amerika", + "Reunion, Fransa", + "Romanya", + "Ruanda", + "Rusya Federasyonu", + "Saint Helena, İngiltere", + "Saint Martin, Fransa", + "Saint Pierre ve Miquelon, Fransa", + "Samoa", + "San Marino", + "Santa Kitts ve Nevis", + "Santa Lucia", + "Santa Vincent ve Grenadinler", + "Sao Tome ve Principe", + "Senegal", + "Seyşeller", + "Sırbistan", + "Sierra Leone", + "Singapur", + "Slovakya", + "Slovenya", + "Solomon Adaları", + "Somali", + "Sri Lanka", + "Sudan", + "Surinam", + "Suriye", + "Suudi Arabistan", + "Svalbard, Norveç", + "Svaziland", + "Şili", + "Tacikistan", + "Tanzanya", + "Tayland", + "Tayvan", + "Togo", + "Tonga", + "Trinidad ve Tobago", + "Tunus", + "Turks ve Caicos Adaları, İngiltere", + "Tuvalu", + "Türkiye", + "Türkmenistan", + "Uganda", + "Ukrayna", + "Umman", + "Uruguay", + "Ürdün", + "Vallis ve Futuna, Fransa", + "Vanuatu", + "Venezuela", + "Vietnam", + "Virgin Adaları, Amerika", + "Virgin Adaları, İngiltere", + "Wake Adaları, Amerika", + "Yemen", + "Yeni Kaledonya, Fransa", + "Yeni Zelanda", + "Yunanistan", + "Zambiya", + "Zimbabve" +]; + +},{}],980:[function(require,module,exports){ +module["exports"] = [ + "Türkiye" +]; + +},{}],981:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city = require("./city"); +address.street_root = require("./street_root"); +address.country = require("./country"); +address.postcode = require("./postcode"); +address.default_country = require("./default_country"); +address.building_number = require("./building_number"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); + +},{"./building_number":977,"./city":978,"./country":979,"./default_country":980,"./postcode":982,"./street_address":983,"./street_name":984,"./street_root":985}],982:[function(require,module,exports){ +arguments[4][434][0].apply(exports,arguments) +},{"dup":434}],983:[function(require,module,exports){ +arguments[4][120][0].apply(exports,arguments) +},{"dup":120}],984:[function(require,module,exports){ +arguments[4][164][0].apply(exports,arguments) +},{"dup":164}],985:[function(require,module,exports){ +module["exports"] = [ + "Atatürk Bulvarı", + "Alparslan Türkeş Bulvarı", + "Ali Çetinkaya Caddesi", + "Tevfik Fikret Caddesi", + "Kocatepe Caddesi", + "İsmet Paşa Caddesi", + "30 Ağustos Caddesi", + "İsmet Attila Caddesi", + "Namık Kemal Caddesi", + "Lütfi Karadirek Caddesi", + "Sarıkaya Caddesi", + "Yunus Emre Sokak", + "Dar Sokak", + "Fatih Sokak ", + "Harman Yolu Sokak ", + "Ergenekon Sokak ", + "Ülkü Sokak", + "Sağlık Sokak", + "Okul Sokak", + "Harman Altı Sokak", + "Kaldırım Sokak", + "Mevlana Sokak", + "Gül Sokak", + "Sıran Söğüt Sokak", + "Güven Yaka Sokak", + "Saygılı Sokak", + "Menekşe Sokak", + "Dağınık Evler Sokak", + "Sevgi Sokak", + "Afyon Kaya Sokak", + "Oğuzhan Sokak", + "İbn-i Sina Sokak", + "Okul Sokak", + "Bahçe Sokak", + "Köypınar Sokak", + "Kekeçoğlu Sokak", + "Barış Sokak", + "Bayır Sokak", + "Kerimoğlu Sokak", + "Nalbant Sokak", + "Bandak Sokak" +]; + +},{}],986:[function(require,module,exports){ +module["exports"] = [ + "+90-53#-###-##-##", + "+90-54#-###-##-##", + "+90-55#-###-##-##", + "+90-50#-###-##-##" +]; + +},{}],987:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":986,"dup":167}],988:[function(require,module,exports){ +var tr = {}; +module['exports'] = tr; +tr.title = "Turkish"; +tr.address = require("./address"); +tr.internet = require("./internet"); +tr.lorem = require("./lorem"); +tr.phone_number = require("./phone_number"); +tr.cell_phone = require("./cell_phone"); +tr.name = require("./name"); + +},{"./address":981,"./cell_phone":987,"./internet":990,"./lorem":991,"./name":994,"./phone_number":1000}],989:[function(require,module,exports){ +module["exports"] = [ + "com.tr", + "com", + "biz", + "info", + "name", + "gov.tr" +]; + +},{}],990:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":989,"dup":226}],991:[function(require,module,exports){ +arguments[4][176][0].apply(exports,arguments) +},{"./words":992,"dup":176}],992:[function(require,module,exports){ +arguments[4][140][0].apply(exports,arguments) +},{"dup":140}],993:[function(require,module,exports){ +module["exports"] = [ + "Aba", + "Abak", + "Abaka", + "Abakan", + "Abakay", + "Abar", + "Abay", + "Abı", + "Abılay", + "Abluç", + "Abşar", + "Açığ", + "Açık", + "Açuk", + "Adalan", + "Adaldı", + "Adalmış", + "Adar", + "Adaş", + "Adberilgen", + "Adıgüzel", + "Adık", + "Adıkutlu", + "Adıkutlutaş", + "Adlı", + "Adlıbeğ", + "Adraman", + "Adsız", + "Afşar", + "Afşın", + "Ağabay", + "Ağakağan", + "Ağalak", + "Ağlamış", + "Ak", + "Akaş", + "Akata", + "Akbaş", + "Akbay", + "Akboğa", + "Akbörü", + "Akbudak", + "Akbuğra", + "Akbulak", + "Akça", + "Akçakoca", + "Akçora", + "Akdemir", + "Akdoğan", + "Akı", + "Akıbudak", + "Akım", + "Akın", + "Akınçı", + "Akkun", + "Akkunlu", + "Akkurt", + "Akkuş", + "Akpıra", + "Aksungur", + "Aktan", + "Al", + "Ala", + "Alaban", + "Alabörü", + "Aladağ", + "Aladoğan", + "Alakurt", + "Alayunt", + "Alayuntlu", + "Aldemir", + "Aldıgerey", + "Aldoğan", + "Algu", + "Alımga", + "Alka", + "Alkabölük", + "Alkaevli", + "Alkan", + "Alkaşı", + "Alkış", + "Alp", + "Alpagut", + "Alpamış", + "Alparsbeğ", + "Alparslan", + "Alpata", + "Alpay", + "Alpaya", + "Alpaykağan", + "Alpbamsı", + "Alpbilge", + "Alpdirek", + "Alpdoğan", + "Alper", + "Alperen", + "Alpertunga", + "Alpgerey", + "Alpış", + "Alpilig", + "Alpkara", + "Alpkutlu", + "Alpkülük", + "Alpşalçı", + "Alptegin", + "Alptuğrul", + "Alptunga", + "Alpturan", + "Alptutuk", + "Alpuluğ", + "Alpurungu", + "Alpurungututuk", + "Alpyörük", + "Altan", + "Altankağan", + "Altankan", + "Altay", + "Altın", + "Altınkağan", + "Altınkan", + "Altınoba", + "Altıntamgan", + "Altıntamgantarkan", + "Altıntarkan", + "Altıntay", + "Altmışkara", + "Altuga", + "Amaç", + "Amrak", + "Amul", + "Ançuk", + "Andarıman", + "Anıl", + "Ant", + "Apa", + "Apak", + "Apatarkan", + "Aprançur", + "Araboğa", + "Arademir", + "Aral", + "Arbay", + "Arbuz", + "Arçuk", + "Ardıç", + "Argıl", + "Argu", + "Argun", + "Arı", + "Arıboğa", + "Arık", + "Arıkağan", + "Arıkdoruk", + "Arınç", + "Arkın", + "Arkış", + "Armağan", + "Arnaç", + "Arpat", + "Arsal", + "Arsıl", + "Arslan", + "Arslanargun", + "Arslanbörü", + "Arslansungur", + "Arslantegin", + "Arslanyabgu", + "Arşun", + "Artıınal", + "Artuk", + "Artukaç", + "Artut", + "Aruk", + "Asartegin", + "Asığ", + "Asrı", + "Asuğ", + "Aşan", + "Aşanboğa", + "Aşantuğrul", + "Aşantudun", + "Aşıkbulmuş", + "Aşkın", + "Aştaloğul", + "Aşuk", + "Ataç", + "Atakağan", + "Atakan", + "Atalan", + "Ataldı", + "Atalmış", + "Ataman", + "Atasagun", + "Atasu", + "Atberilgen", + "Atıgay", + "Atıkutlu", + "Atıkutlutaş", + "Atıla", + "Atılgan", + "Atım", + "Atımer", + "Atış", + "Atlı", + "Atlıbeğ", + "Atlıkağan", + "Atmaca", + "Atsız", + "Atunçu", + "Avar", + "Avluç", + "Avşar", + "Ay", + "Ayaçı", + "Ayas", + "Ayaş", + "Ayaz", + "Aybalta", + "Ayban", + "Aybars", + "Aybeğ", + "Aydarkağan", + "Aydemir", + "Aydın", + "Aydınalp", + "Aydoğan", + "Aydoğdu", + "Aydoğmuş", + "Aygırak", + "Ayıtmış", + "Ayız", + "Ayızdağ", + "Aykağan", + "Aykan", + "Aykurt", + "Ayluç", + "Ayluçtarkan", + "Ayma", + "Ayruk", + "Aysılığ", + "Aytak", + "Ayyıldız", + "Azak", + "Azban", + "Azgan", + "Azganaz", + "Azıl", + "Babır", + "Babur", + "Baçara", + "Baççayman", + "Baçman", + "Badabul", + "Badruk", + "Badur", + "Bağa", + "Bağaalp", + "Bağaışbara", + "Bağan", + "Bağaşatulu", + "Bağatarkan", + "Bağatengrikağan", + "Bağatur", + "Bağaturçigşi", + "Bağaturgerey", + "Bağaturipi", + "Bağatursepi", + "Bağış", + "Bağtaş", + "Bakağul", + "Bakır", + "Bakırsokum", + "Baksı", + "Bakşı", + "Balaban", + "Balaka", + "Balakatay", + "Balamır", + "Balçar", + "Baldu", + "Balkık", + "Balta", + "Baltacı", + "Baltar", + "Baltır", + "Baltur", + "Bamsı", + "Bangu", + "Barak", + "Baraktöre", + "Baran", + "Barbeğ", + "Barboğa", + "Barbol", + "Barbulsun", + "Barça", + "Barçadoğdu", + "Barçadoğmuş", + "Barçadurdu", + "Barçadurmuş", + "Barçan", + "Barçatoyun", + "Bardıbay", + "Bargan", + "Barımtay", + "Barın", + "Barkan", + "Barkdoğdu", + "Barkdoğmuş", + "Barkdurdu", + "Barkdurmuş", + "Barkın", + "Barlas", + "Barlıbay", + "Barmaklak", + "Barmaklı", + "Barman", + "Bars", + "Barsbeğ", + "Barsboğa", + "Barsgan", + "Barskan", + "Barsurungu", + "Bartu", + "Basademir", + "Basan", + "Basanyalavaç", + "Basar", + "Basat", + "Baskın", + "Basmıl", + "Bastı", + "Bastuğrul", + "Basu", + "Basut", + "Başak", + "Başbuğ", + "Başçı", + "Başgan", + "Başkırt", + "Başkurt", + "Baştar", + "Batrak", + "Batu", + "Batuk", + "Batur", + "Baturalp", + "Bay", + "Bayançar", + "Bayankağan", + "Bayat", + "Bayazıt", + "Baybars", + "Baybayık", + "Baybiçen", + "Bayboğa", + "Baybora", + "Baybüre", + "Baydar", + "Baydemir", + "Baydur", + "Bayık", + "Bayınçur", + "Bayındır", + "Baykal", + "Baykara", + "Baykoca", + "Baykuzu", + "Baymünke", + "Bayna", + "Baynal", + "Baypüre", + "Bayrı", + "Bayraç", + "Bayrak", + "Bayram", + "Bayrın", + "Bayruk", + "Baysungur", + "Baytara", + "Baytaş", + "Bayunçur", + "Bayur", + "Bayurku", + "Bayutmuş", + "Bayuttu", + "Bazır", + "Beçeapa", + "Beçkem", + "Beğ", + "Beğarslan", + "Beğbars", + "Beğbilgeçikşin", + "Beğboğa", + "Beğçur", + "Beğdemir", + "Beğdilli", + "Beğdurmuş", + "Beğkulu", + "Beğtaş", + "Beğtegin", + "Beğtüzün", + "Begi", + "Begil", + "Begine", + "Begitutuk", + "Beglen", + "Begni", + "Bek", + "Bekazıl", + "Bekbekeç", + "Bekeç", + "Bekeçarslan", + "Bekeçarslantegin", + "Bekeçtegin", + "Beker", + "Beklemiş", + "Bektür", + "Belçir", + "Belek", + "Belgi", + "Belgüc", + "Beltir", + "Bengi", + "Bengü", + "Benlidemir", + "Berdibeğ", + "Berendey", + "Bergü", + "Berginsenge", + "Berk", + "Berke", + "Berkiş", + "Berkyaruk", + "Bermek", + "Besentegin", + "Betemir", + "Beyizçi", + "Beyrek", + "Beyrem", + "Bıçkı", + "Bıçkıcı", + "Bıdın", + "Bıtaybıkı", + "Bıtrı", + "Biçek", + "Bilge", + "Bilgebayunçur", + "Bilgebeğ", + "Bilgeçikşin", + "Bilgeışbara", + "Bilgeışbaratamgan", + "Bilgekağan", + "Bilgekan", + "Bilgekutluk", + "Bilgekülüçur", + "Bilgetaçam", + "Bilgetamgacı", + "Bilgetardu", + "Bilgetegin", + "Bilgetonyukuk", + "Bilgez", + "Bilgiç", + "Bilgin", + "Bilig", + "Biligköngülsengün", + "Bilik", + "Binbeği", + "Bindir", + "Boğa", + "Boğaç", + "Boğaçuk", + "Boldaz", + "Bolmuş", + "Bolsun", + "Bolun", + "Boncuk", + "Bongul", + "Bongulboğa", + "Bora", + "Boran", + "Borçul", + "Borlukçu", + "Bornak", + "Boyan", + "Boyankulu", + "Boylabağa", + "Boylabağatarkan", + "Boylakutlutarkan", + "Bozan", + "Bozbörü", + "Bozdoğan", + "Bozkurt", + "Bozkuş", + "Bozok", + "Bögde", + "Böge", + "Bögü", + "Bökde", + "Bökde", + "Böke", + "Bölen", + "Bölükbaşı", + "Bönek", + "Bönge", + "Börü", + "Börübars", + "Börüsengün", + "Börteçine", + "Buçan", + "Buçur", + "Budağ", + "Budak", + "Budunlu", + "Buğday", + "Buğra", + "Buğrakarakağan", + "Bukak", + "Bukaktutuk", + "Bulaçapan", + "Bulak", + "Bulan", + "Buldur", + "Bulgak", + "Bulmaz", + "Bulmuş", + "Buluç", + "Buluğ", + "Buluk", + "Buluş", + "Bulut", + "Bumın", + "Bunsuz", + "Burçak", + "Burguçan", + "Burkay", + "Burslan", + "Burulday", + "Burulgu", + "Burunduk", + "Buşulgan", + "Butak", + "Butuk", + "Buyan", + "Buyançuk", + "Buyandemir", + "Buyankara", + "Buyat", + "Buyraç", + "Buyruç", + "Buyruk", + "Buzaç", + "Buzaçtutuk", + "Büdüs", + "Büdüstudun", + "Bügü", + "Bügdüz", + "Bügdüzemen", + "Büge", + "Büğübilge", + "Bükdüz", + "Büke", + "Bükebuyraç", + "Bükebuyruç", + "Bükey", + "Büktegin", + "Büküşboğa", + "Bümen", + "Bünül", + "Büre", + "Bürgüt", + "Bürkek", + "Bürküt", + "Bürlük", + "Cebe", + "Ceyhun", + "Cılasun", + "Çaba", + "Çabdar", + "Çablı", + "Çabuş", + "Çağan", + "Çağatay", + "Çağlar", + "Çağlayan", + "Çağrı", + "Çağrıbeğ", + "Çağrıtegin", + "Çağru", + "Çalapkulu", + "Çankız", + "Çemen", + "Çemgen", + "Çeykün", + "Çıngır", + "Çiçek", + "Çiçem", + "Çiğdem", + "Çilenti", + "Çimen", + "Çobulmak", + "Çocukbörü", + "Çokramayul", + "Çolman", + "Çolpan", + "Çölü", + "Damla", + "Deniz", + "Dilek", + "Diri", + "Dizik", + "Duru", + "Dururbunsuz", + "Duygu", + "Ebin", + "Ebkızı", + "Ebren", + "Edil", + "Ediz", + "Egemen", + "Eğrim", + "Ekeç", + "Ekim", + "Ekin", + "Elkin", + "Elti", + "Engin", + "Erdem", + "Erdeni", + "Erdeniözük", + "Erdenikatun", + "Erentüz", + "Ergene", + "Ergenekatun", + "Erinç", + "Erke", + "Ermen", + "Erten", + "Ertenözük", + "Esen", + "Esenbike", + "Eser", + "Esin", + "Etil", + "Evin", + "Eyiz", + "Gelin", + "Gelincik", + "Gökbörü", + "Gökçe", + "Gökçegöl", + "Gökçen", + "Gökçiçek", + "Gökşin", + "Gönül", + "Görün", + "Gözde", + "Gülegen", + "Gülemen", + "Güler", + "Gülümser", + "Gümüş", + "Gün", + "Günay", + "Günçiçek", + "Gündoğdu", + "Gündoğmuş", + "Güneş", + "Günyaruk", + "Gürbüz", + "Güvercin", + "Güzey", + "Işığ", + "Işık", + "Işıl", + "Işılay", + "Ila", + "Ilaçın", + "Ilgın", + "Inanç", + "Irmak", + "Isığ", + "Isık", + "Iyık", + "Iyıktağ", + "İdil", + "İkeme", + "İkiçitoyun", + "İlbilge", + "İldike", + "İlgegü", + "İmrem", + "İnci", + "İnç", + "İrinç", + "İrinçköl", + "İrtiş", + "İtil", + "Kancı", + "Kançı", + "Kapgar", + "Karaca", + "Karaça", + "Karak", + "Kargılaç", + "Karlıgaç", + "Katun", + "Katunkız", + "Kayacık", + "Kayaçık", + "Kayça", + "Kaynak", + "Kazanç", + "Kazkatun", + "Kekik", + "Keklik", + "Kepez", + "Kesme", + "Keyken", + "Kezlik", + "Kımız", + "Kımızın", + "Kımızalma", + "Kımızalmıla", + "Kırçiçek", + "Kırgavul", + "Kırlangıç", + "Kıvanç", + "Kıvılcım", + "Kızdurmuş", + "Kızılalma" +]; + +},{}],994:[function(require,module,exports){ +arguments[4][228][0].apply(exports,arguments) +},{"./first_name":993,"./last_name":995,"./name":996,"./prefix":997,"dup":228}],995:[function(require,module,exports){ +module["exports"] = [ + "Abacı", + "Abadan", + "Aclan", + "Adal", + "Adan", + "Adıvar", + "Akal", + "Akan", + "Akar ", + "Akay", + "Akaydın", + "Akbulut", + "Akgül", + "Akışık", + "Akman", + "Akyürek", + "Akyüz", + "Akşit", + "Alnıaçık", + "Alpuğan", + "Alyanak", + "Arıcan", + "Arslanoğlu", + "Atakol", + "Atan", + "Avan", + "Ayaydın", + "Aybar", + "Aydan", + "Aykaç", + "Ayverdi", + "Ağaoğlu", + "Aşıkoğlu", + "Babacan", + "Babaoğlu", + "Bademci", + "Bakırcıoğlu", + "Balaban", + "Balcı", + "Barbarosoğlu", + "Baturalp", + "Baykam", + "Başoğlu", + "Berberoğlu", + "Beşerler", + "Beşok", + "Biçer", + "Bolatlı", + "Dalkıran", + "Dağdaş", + "Dağlaroğlu", + "Demirbaş", + "Demirel", + "Denkel", + "Dizdar ", + "Doğan ", + "Durak ", + "Durmaz", + "Duygulu", + "Düşenkalkar", + "Egeli", + "Ekici", + "Ekşioğlu", + "Eliçin", + "Elmastaşoğlu", + "Elçiboğa", + "Erbay", + "Erberk", + "Erbulak", + "Erdoğan", + "Erez", + "Erginsoy", + "Erkekli", + "Eronat", + "Ertepınar", + "Ertürk", + "Erçetin", + "Evliyaoğlu", + "Gönültaş", + "Gümüşpala", + "Günday", + "Gürmen", + "Hakyemez", + "Hamzaoğlu", + "Ilıcalı", + "Kahveci", + "Kaplangı", + "Karabulut", + "Karaböcek", + "Karadaş", + "Karaduman", + "Karaer", + "Kasapoğlu", + "Kavaklıoğlu", + "Kaya ", + "Keseroğlu", + "Keçeci", + "Kılıççı", + "Kıraç ", + "Kocabıyık", + "Korol", + "Koyuncu", + "Koç", + "Koçoğlu", + "Koçyiğit", + "Kuday", + "Kulaksızoğlu", + "Kumcuoğlu", + "Kunt", + "Kunter", + "Kurutluoğlu", + "Kutlay", + "Kuzucu", + "Körmükçü", + "Köybaşı", + "Köylüoğlu", + "Küçükler", + "Limoncuoğlu", + "Mayhoş", + "Menemencioğlu", + "Mertoğlu", + "Nalbantoğlu", + "Nebioğlu", + "Numanoğlu", + "Okumuş", + "Okur", + "Oraloğlu", + "Orbay", + "Ozansoy", + "Paksüt", + "Pekkan", + "Pektemek", + "Polat", + "Poyrazoğlu", + "Poçan", + "Sadıklar", + "Samancı", + "Sandalcı", + "Sarıoğlu", + "Saygıner", + "Sepetçi", + "Sezek", + "Sinanoğlu", + "Solmaz", + "Sözeri", + "Süleymanoğlu", + "Tahincioğlu", + "Tanrıkulu", + "Tazegül", + "Taşlı", + "Taşçı", + "Tekand", + "Tekelioğlu", + "Tokatlıoğlu", + "Tokgöz", + "Topaloğlu", + "Topçuoğlu", + "Toraman", + "Tunaboylu", + "Tunçeri", + "Tuğlu", + "Tuğluk", + "Türkdoğan", + "Türkyılmaz", + "Tütüncü", + "Tüzün", + "Uca", + "Uluhan", + "Velioğlu", + "Yalçın", + "Yazıcı", + "Yetkiner", + "Yeşilkaya", + "Yıldırım ", + "Yıldızoğlu", + "Yılmazer", + "Yorulmaz", + "Çamdalı", + "Çapanoğlu", + "Çatalbaş", + "Çağıran", + "Çetin", + "Çetiner", + "Çevik", + "Çörekçi", + "Önür", + "Örge", + "Öymen", + "Özberk", + "Özbey", + "Özbir", + "Özdenak", + "Özdoğan", + "Özgörkey", + "Özkara", + "Özkök ", + "Öztonga", + "Öztuna" +]; + +},{}],996:[function(require,module,exports){ +arguments[4][593][0].apply(exports,arguments) +},{"dup":593}],997:[function(require,module,exports){ +module["exports"] = [ + "Bay", + "Bayan", + "Dr.", + "Prof. Dr." +]; + +},{}],998:[function(require,module,exports){ +module["exports"] = [ + "392", + "510", + "512", + "522", + "562", + "564", + "592", + "594", + "800", + "811", + "822", + "850", + "888", + "898", + "900", + "322", + "416", + "272", + "472", + "382", + "358", + "312", + "242", + "478", + "466", + "256", + "266", + "378", + "488", + "458", + "228", + "426", + "434", + "374", + "248", + "224", + "286", + "376", + "364", + "258", + "412", + "380", + "284", + "424", + "446", + "442", + "222", + "342", + "454", + "456", + "438", + "326", + "476", + "246", + "216", + "212", + "232", + "344", + "370", + "338", + "474", + "366", + "352", + "318", + "288", + "386", + "348", + "262", + "332", + "274", + "422", + "236", + "482", + "324", + "252", + "436", + "384", + "388", + "452", + "328", + "464", + "264", + "362", + "484", + "368", + "346", + "414", + "486", + "282", + "356", + "462", + "428", + "276", + "432", + "226", + "354", + "372" +]; + +},{}],999:[function(require,module,exports){ +module["exports"] = [ + "+90-###-###-##-##", + "+90-###-###-#-###" +]; + +},{}],1000:[function(require,module,exports){ +var phone_number = {}; +module['exports'] = phone_number; +phone_number.area_code = require("./area_code"); +phone_number.formats = require("./formats"); + +},{"./area_code":998,"./formats":999}],1001:[function(require,module,exports){ +arguments[4][109][0].apply(exports,arguments) +},{"dup":109}],1002:[function(require,module,exports){ +module["exports"] = [ + "#{city_name}", + "#{city_prefix} #{Name.male_first_name}" +]; + +},{}],1003:[function(require,module,exports){ +module["exports"] = [ + "Алчевськ", + "Артемівськ", + "Бердичів", + "Бердянськ", + "Біла Церква", + "Бровари", + "Вінниця", + "Горлівка", + "Дніпродзержинськ", + "Дніпропетровськ", + "Донецьк", + "Євпаторія", + "Єнакієве", + "Житомир", + "Запоріжжя", + "Івано-Франківськ", + "Ізмаїл", + "Кам’янець-Подільський", + "Керч", + "Київ", + "Кіровоград", + "Конотоп", + "Краматорськ", + "Красний Луч", + "Кременчук", + "Кривий Ріг", + "Лисичанськ", + "Луганськ", + "Луцьк", + "Львів", + "Макіївка", + "Маріуполь", + "Мелітополь", + "Миколаїв", + "Мукачеве", + "Нікополь", + "Одеса", + "Олександрія", + "Павлоград", + "Полтава", + "Рівне", + "Севастополь", + "Сєвєродонецьк", + "Сімферополь", + "Слов’янськ", + "Суми", + "Тернопіль", + "Ужгород", + "Умань", + "Харків", + "Херсон", + "Хмельницький", + "Черкаси", + "Чернівці", + "Чернігів", + "Шостка", + "Ялта" +]; + +},{}],1004:[function(require,module,exports){ +module["exports"] = [ + "Південний", + "Північний", + "Східний", + "Західний" +]; + +},{}],1005:[function(require,module,exports){ +module["exports"] = [ + "град" +]; + +},{}],1006:[function(require,module,exports){ +module["exports"] = [ + "Австралія", + "Австрія", + "Азербайджан", + "Албанія", + "Алжир", + "Ангола", + "Андорра", + "Антигуа і Барбуда", + "Аргентина", + "Афганістан", + "Багамські Острови", + "Бангладеш", + "Барбадос", + "Бахрейн", + "Беліз", + "Бельгія", + "Бенін", + "Білорусь", + "Болгарія", + "Болівія", + "Боснія і Герцеговина", + "Ботсвана", + "Бразилія", + "Бруней", + "Буркіна-Фасо", + "Бурунді", + "Бутан", + "В’єтнам", + "Вануату", + "Ватикан", + "Велика Британія", + "Венесуела", + "Вірменія", + "Габон", + "Гаїті", + "Гайана", + "Гамбія", + "Гана", + "Гватемала", + "Гвінея", + "Гвінея-Бісау", + "Гондурас", + "Гренада", + "Греція", + "Грузія", + "Данія", + "Демократична Республіка Конго", + "Джибуті", + "Домініка", + "Домініканська Республіка", + "Еквадор", + "Екваторіальна Гвінея", + "Еритрея", + "Естонія", + "Ефіопія", + "Єгипет", + "Ємен", + "Замбія", + "Зімбабве", + "Ізраїль", + "Індія", + "Індонезія", + "Ірак", + "Іран", + "Ірландія", + "Ісландія", + "Іспанія", + "Італія", + "Йорданія", + "Кабо-Верде", + "Казахстан", + "Камбоджа", + "Камерун", + "Канада", + "Катар", + "Кенія", + "Киргизстан", + "Китай", + "Кіпр", + "Кірибаті", + "Колумбія", + "Коморські Острови", + "Конго", + "Коста-Рика", + "Кот-д’Івуар", + "Куба", + "Кувейт", + "Лаос", + "Латвія", + "Лесото", + "Литва", + "Ліберія", + "Ліван", + "Лівія", + "Ліхтенштейн", + "Люксембург", + "Маврикій", + "Мавританія", + "Мадаґаскар", + "Македонія", + "Малаві", + "Малайзія", + "Малі", + "Мальдіви", + "Мальта", + "Марокко", + "Маршаллові Острови", + "Мексика", + "Мозамбік", + "Молдова", + "Монако", + "Монголія", + "Намібія", + "Науру", + "Непал", + "Нігер", + "Нігерія", + "Нідерланди", + "Нікарагуа", + "Німеччина", + "Нова Зеландія", + "Норвегія", + "Об’єднані Арабські Емірати", + "Оман", + "Пакистан", + "Палау", + "Панама", + "Папуа-Нова Гвінея", + "Парагвай", + "Перу", + "Південна Корея", + "Південний Судан", + "Південно-Африканська Республіка", + "Північна Корея", + "Польща", + "Португалія", + "Російська Федерація", + "Руанда", + "Румунія", + "Сальвадор", + "Самоа", + "Сан-Марино", + "Сан-Томе і Принсіпі", + "Саудівська Аравія", + "Свазіленд", + "Сейшельські Острови", + "Сенеґал", + "Сент-Вінсент і Гренадини", + "Сент-Кітс і Невіс", + "Сент-Люсія", + "Сербія", + "Сирія", + "Сінгапур", + "Словаччина", + "Словенія", + "Соломонові Острови", + "Сомалі", + "Судан", + "Суринам", + "Східний Тимор", + "США", + "Сьєрра-Леоне", + "Таджикистан", + "Таїланд", + "Танзанія", + "Того", + "Тонга", + "Тринідад і Тобаго", + "Тувалу", + "Туніс", + "Туреччина", + "Туркменістан", + "Уганда", + "Угорщина", + "Узбекистан", + "Україна", + "Уругвай", + "Федеративні Штати Мікронезії", + "Фіджі", + "Філіппіни", + "Фінляндія", + "Франція", + "Хорватія", + "Центральноафриканська Республіка", + "Чад", + "Чехія", + "Чилі", + "Чорногорія", + "Швейцарія", + "Швеція", + "Шрі-Ланка", + "Ямайка", + "Японія" +]; + +},{}],1007:[function(require,module,exports){ +module["exports"] = [ + "Україна" +]; + +},{}],1008:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.country = require("./country"); +address.building_number = require("./building_number"); +address.street_prefix = require("./street_prefix"); +address.street_suffix = require("./street_suffix"); +address.secondary_address = require("./secondary_address"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.street_title = require("./street_title"); +address.city_name = require("./city_name"); +address.city = require("./city"); +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":1001,"./city":1002,"./city_name":1003,"./city_prefix":1004,"./city_suffix":1005,"./country":1006,"./default_country":1007,"./postcode":1009,"./secondary_address":1010,"./state":1011,"./street_address":1012,"./street_name":1013,"./street_prefix":1014,"./street_suffix":1015,"./street_title":1016}],1009:[function(require,module,exports){ +arguments[4][434][0].apply(exports,arguments) +},{"dup":434}],1010:[function(require,module,exports){ +arguments[4][858][0].apply(exports,arguments) +},{"dup":858}],1011:[function(require,module,exports){ +module["exports"] = [ + "АР Крим", + "Вінницька область", + "Волинська область", + "Дніпропетровська область", + "Донецька область", + "Житомирська область", + "Закарпатська область", + "Запорізька область", + "Івано-Франківська область", + "Київська область", + "Кіровоградська область", + "Луганська область", + "Львівська область", + "Миколаївська область", + "Одеська область", + "Полтавська область", + "Рівненська область", + "Сумська область", + "Тернопільська область", + "Харківська область", + "Херсонська область", + "Хмельницька область", + "Черкаська область", + "Чернівецька область", + "Чернігівська область", + "Київ", + "Севастополь" +]; + +},{}],1012:[function(require,module,exports){ +arguments[4][80][0].apply(exports,arguments) +},{"dup":80}],1013:[function(require,module,exports){ +module["exports"] = [ + "#{street_prefix} #{Address.street_title}", + "#{Address.street_title} #{street_suffix}" +]; + +},{}],1014:[function(require,module,exports){ +module["exports"] = [ + "вул.", + "вулиця", + "пр.", + "проспект", + "пл.", + "площа", + "пров.", + "провулок" +]; + +},{}],1015:[function(require,module,exports){ +module["exports"] = [ + "майдан" +]; + +},{}],1016:[function(require,module,exports){ +module["exports"] = [ + "Зелена", + "Молодіжна", + "Городоцька", + "Стрийська", + "Вузька", + "Нижанківського", + "Староміська", + "Ліста", + "Вічева", + "Брюховичів", + "Винників", + "Рудного", + "Коліївщини" +]; + +},{}],1017:[function(require,module,exports){ +arguments[4][88][0].apply(exports,arguments) +},{"./name":1018,"./prefix":1019,"./suffix":1020,"dup":88}],1018:[function(require,module,exports){ +arguments[4][89][0].apply(exports,arguments) +},{"dup":89}],1019:[function(require,module,exports){ +module["exports"] = [ + "ТОВ", + "ПАТ", + "ПрАТ", + "ТДВ", + "КТ", + "ПТ", + "ДП", + "ФОП" +]; + +},{}],1020:[function(require,module,exports){ +module["exports"] = [ + "Постач", + "Торг", + "Пром", + "Трейд", + "Збут" +]; + +},{}],1021:[function(require,module,exports){ +var uk = {}; +module['exports'] = uk; +uk.title = "Ukrainian"; +uk.address = require("./address"); +uk.company = require("./company"); +uk.internet = require("./internet"); +uk.name = require("./name"); +uk.phone_number = require("./phone_number"); + +},{"./address":1008,"./company":1017,"./internet":1024,"./name":1028,"./phone_number":1037}],1022:[function(require,module,exports){ +module["exports"] = [ + "cherkassy.ua", + "cherkasy.ua", + "ck.ua", + "cn.ua", + "com.ua", + "crimea.ua", + "cv.ua", + "dn.ua", + "dnepropetrovsk.ua", + "dnipropetrovsk.ua", + "donetsk.ua", + "dp.ua", + "if.ua", + "in.ua", + "ivano-frankivsk.ua", + "kh.ua", + "kharkiv.ua", + "kharkov.ua", + "kherson.ua", + "khmelnitskiy.ua", + "kiev.ua", + "kirovograd.ua", + "km.ua", + "kr.ua", + "ks.ua", + "lg.ua", + "lt.ua", + "lugansk.ua", + "lutsk.ua", + "lutsk.net", + "lviv.ua", + "mk.ua", + "net.ua", + "nikolaev.ua", + "od.ua", + "odessa.ua", + "org.ua", + "pl.ua", + "pl.ua", + "poltava.ua", + "rovno.ua", + "rv.ua", + "sebastopol.ua", + "sm.ua", + "sumy.ua", + "te.ua", + "ternopil.ua", + "ua", + "uz.ua", + "uzhgorod.ua", + "vinnica.ua", + "vn.ua", + "volyn.net", + "volyn.ua", + "yalta.ua", + "zaporizhzhe.ua", + "zhitomir.ua", + "zp.ua", + "zt.ua", + "укр" +]; + +},{}],1023:[function(require,module,exports){ +module["exports"] = [ + "ukr.net", + "ex.ua", + "e-mail.ua", + "i.ua", + "meta.ua", + "yandex.ua", + "gmail.com" +]; + +},{}],1024:[function(require,module,exports){ +arguments[4][98][0].apply(exports,arguments) +},{"./domain_suffix":1022,"./free_email":1023,"dup":98}],1025:[function(require,module,exports){ +module["exports"] = [ + "Аврелія", + "Аврора", + "Агапія", + "Агата", + "Агафія", + "Агнеса", + "Агнія", + "Агрипина", + "Ада", + "Аделаїда", + "Аделіна", + "Адріана", + "Азалія", + "Алевтина", + "Аліна", + "Алла", + "Альбіна", + "Альвіна", + "Анастасія", + "Анастасія", + "Анатолія", + "Ангеліна", + "Анжела", + "Анна", + "Антонида", + "Антоніна", + "Антонія", + "Анфіса", + "Аполлінарія", + "Аполлонія", + "Аркадія", + "Артемія", + "Афанасія", + "Білослава", + "Біляна", + "Благовіста", + "Богдана", + "Богуслава", + "Божена", + "Болеслава", + "Борислава", + "Броніслава", + "В’ячеслава", + "Валентина", + "Валерія", + "Варвара", + "Василина", + "Вікторія", + "Вілена", + "Віленіна", + "Віліна", + "Віола", + "Віолетта", + "Віра", + "Віргінія", + "Віта", + "Віталіна", + "Влада", + "Владислава", + "Власта", + "Всеслава", + "Галина", + "Ганна", + "Гелена", + "Далеслава", + "Дана", + "Дарина", + "Дарислава", + "Діана", + "Діяна", + "Добринка", + "Добромила", + "Добромира", + "Добромисла", + "Доброслава", + "Долеслава", + "Доляна", + "Жанна", + "Жозефіна", + "Забава", + "Звенислава", + "Зінаїда", + "Злата", + "Зореслава", + "Зорина", + "Зоряна", + "Зоя", + "Іванна", + "Ілона", + "Інна", + "Іннеса", + "Ірина", + "Ірма", + "Калина", + "Каріна", + "Катерина", + "Квітка", + "Квітослава", + "Клавдія", + "Крентта", + "Ксенія", + "Купава", + "Лада", + "Лариса", + "Леся", + "Ликера", + "Лідія", + "Лілія", + "Любава", + "Любислава", + "Любов", + "Любомила", + "Любомира", + "Люборада", + "Любослава", + "Людмила", + "Людомила", + "Майя", + "Мальва", + "Мар’яна", + "Марина", + "Марічка", + "Марія", + "Марта", + "Меланія", + "Мечислава", + "Милодара", + "Милослава", + "Мирослава", + "Мілана", + "Мокрина", + "Мотря", + "Мстислава", + "Надія", + "Наталія", + "Неля", + "Немира", + "Ніна", + "Огняна", + "Оксана", + "Олександра", + "Олена", + "Олеся", + "Ольга", + "Ореста", + "Орина", + "Орислава", + "Орися", + "Оріяна", + "Павліна", + "Палажка", + "Пелагея", + "Пелагія", + "Поліна", + "Поляна", + "Потішана", + "Радміла", + "Радослава", + "Раїна", + "Раїса", + "Роксолана", + "Ромена", + "Ростислава", + "Руслана", + "Світлана", + "Святослава", + "Слава", + "Сміяна", + "Сніжана", + "Соломія", + "Соня", + "Софія", + "Станислава", + "Сюзана", + "Таїсія", + "Тамара", + "Тетяна", + "Устина", + "Фаїна", + "Февронія", + "Федора", + "Феодосія", + "Харитина", + "Христина", + "Христя", + "Юліанна", + "Юлія", + "Юстина", + "Юхима", + "Юхимія", + "Яна", + "Ярина", + "Ярослава" +]; + +},{}],1026:[function(require,module,exports){ +module["exports"] = [ + "Андрухович", + "Бабух", + "Балабан", + "Балабуха", + "Балакун", + "Балицька", + "Бамбула", + "Бандера", + "Барановська", + "Бачей", + "Башук", + "Бердник", + "Білич", + "Бондаренко", + "Борецька", + "Боровська", + "Борочко", + "Боярчук", + "Брицька", + "Бурмило", + "Бутько", + "Василишина", + "Васильківська", + "Вергун", + "Вередун", + "Верещук", + "Витребенько", + "Вітряк", + "Волощук", + "Гайдук", + "Гайова", + "Гайчук", + "Галаєнко", + "Галатей", + "Галаціон", + "Гаман", + "Гамула", + "Ганич", + "Гарай", + "Гарун", + "Гладківська", + "Гладух", + "Глинська", + "Гнатишина", + "Гойко", + "Головець", + "Горбач", + "Гордійчук", + "Горова", + "Городоцька", + "Гречко", + "Григоришина", + "Гриневецька", + "Гриневська", + "Гришко", + "Громико", + "Данилишина", + "Данилко", + "Демків", + "Демчишина", + "Дзюб’як", + "Дзюба", + "Дідух", + "Дмитришина", + "Дмитрук", + "Довгалевська", + "Дурдинець", + "Євенко", + "Євпак", + "Ємець", + "Єрмак", + "Забіла", + "Зварич", + "Зінкевич", + "Зленко", + "Іванишина", + "Калач", + "Кандиба", + "Карпух", + "Кивач", + "Коваленко", + "Ковальська", + "Коломієць", + "Коман", + "Компанієць", + "Кононець", + "Кордун", + "Корецька", + "Корнїйчук", + "Коров’як", + "Коцюбинська", + "Кулинич", + "Кульчицька", + "Лагойда", + "Лазірко", + "Ланова", + "Латан", + "Латанська", + "Лахман", + "Левадовська", + "Ликович", + "Линдик", + "Ліхно", + "Лобачевська", + "Ломова", + "Лугова", + "Луцька", + "Луцьків", + "Лученко", + "Лучко", + "Люта", + "Лящук", + "Магера", + "Мазайло", + "Мазило", + "Мазун", + "Майборода", + "Майстренко", + "Маковецька", + "Малкович", + "Мамій", + "Маринич", + "Марієвська", + "Марків", + "Махно", + "Миклашевська", + "Миклухо", + "Милославська", + "Михайлюк", + "Міняйло", + "Могилевська", + "Москаль", + "Москалюк", + "Мотрієнко", + "Негода", + "Ногачевська", + "Опенько", + "Осадко", + "Павленко", + "Павлишина", + "Павлів", + "Пагутяк", + "Паламарчук", + "Палій", + "Паращук", + "Пасічник", + "Пендик", + "Петик", + "Петлюра", + "Петренко", + "Петрина", + "Петришина", + "Петрів", + "Плаксій", + "Погиба", + "Поліщук", + "Пономарів", + "Поривай", + "Поривайло", + "Потебенько", + "Потоцька", + "Пригода", + "Приймак", + "Притула", + "Прядун", + "Розпутня", + "Романишина", + "Ромей", + "Роменець", + "Ромочко", + "Савицька", + "Саєнко", + "Свидригайло", + "Семеночко", + "Семещук", + "Сердюк", + "Силецька", + "Сідлецька", + "Сідляк", + "Сірко", + "Скиба", + "Скоропадська", + "Слободян", + "Сосюра", + "Сплюха", + "Спотикач", + "Степанець", + "Стигайло", + "Сторожук", + "Сторчак", + "Стоян", + "Сучак", + "Сушко", + "Тарасюк", + "Тиндарей", + "Ткаченко", + "Третяк", + "Троян", + "Трублаєвська", + "Трясило", + "Трясун", + "Уманець", + "Унич", + "Усич", + "Федоришина", + "Цушко", + "Червоній", + "Шамрило", + "Шевченко", + "Шестак", + "Шиндарей", + "Шиян", + "Шкараба", + "Шудрик", + "Шумило", + "Шупик", + "Шухевич", + "Щербак", + "Юрчишина", + "Юхно", + "Ющик", + "Ющук", + "Яворівська", + "Ялова", + "Ялюк", + "Янюк", + "Ярмак", + "Яцишина", + "Яцьків", + "Ящук" +]; + +},{}],1027:[function(require,module,exports){ +module["exports"] = [ + "Адамівна", + "Азарівна", + "Алевтинівна", + "Альбертівна", + "Анастасівна", + "Анатоліївна", + "Андріївна", + "Антонівна", + "Аркадіївна", + "Арсенівна", + "Арсеніївна", + "Артемівна", + "Архипівна", + "Аскольдівна", + "Афанасіївна", + "Білославівна", + "Богданівна", + "Божемирівна", + "Боженівна", + "Болеславівна", + "Боримирівна", + "Борисівна", + "Бориславівна", + "Братиславівна", + "В’ячеславівна", + "Вадимівна", + "Валентинівна", + "Валеріївна", + "Василівна", + "Вікторівна", + "Віталіївна", + "Владиславівна", + "Володимирівна", + "Всеволодівна", + "Всеславівна", + "Гаврилівна", + "Гарасимівна", + "Георгіївна", + "Гнатівна", + "Гордіївна", + "Григоріївна", + "Данилівна", + "Даромирівна", + "Денисівна", + "Дмитрівна", + "Добромирівна", + "Доброславівна", + "Євгенівна", + "Захарівна", + "Захаріївна", + "Збориславівна", + "Звенимирівна", + "Звениславівна", + "Зеновіївна", + "Зиновіївна", + "Златомирівна", + "Зореславівна", + "Іванівна", + "Ігорівна", + "Ізяславівна", + "Корнеліївна", + "Корнилівна", + "Корніївна", + "Костянтинівна", + "Лаврентіївна", + "Любомирівна", + "Макарівна", + "Максимівна", + "Марківна", + "Маркіянівна", + "Матвіївна", + "Мечиславівна", + "Микитівна", + "Миколаївна", + "Миронівна", + "Мирославівна", + "Михайлівна", + "Мстиславівна", + "Назарівна", + "Назаріївна", + "Натанівна", + "Немирівна", + "Несторівна", + "Олегівна", + "Олександрівна", + "Олексіївна", + "Олельківна", + "Омелянівна", + "Орестівна", + "Орхипівна", + "Остапівна", + "Охрімівна", + "Павлівна", + "Панасівна", + "Пантелеймонівна", + "Петрівна", + "Пилипівна", + "Радимирівна", + "Радимівна", + "Родіонівна", + "Романівна", + "Ростиславівна", + "Русланівна", + "Святославівна", + "Сергіївна", + "Славутівна", + "Станіславівна", + "Степанівна", + "Стефаніївна", + "Тарасівна", + "Тимофіївна", + "Тихонівна", + "Устимівна", + "Юріївна", + "Юхимівна", + "Ярославівна" +]; + +},{}],1028:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.male_first_name = require("./male_first_name"); +name.male_middle_name = require("./male_middle_name"); +name.male_last_name = require("./male_last_name"); +name.female_first_name = require("./female_first_name"); +name.female_middle_name = require("./female_middle_name"); +name.female_last_name = require("./female_last_name"); +name.prefix = require("./prefix"); +name.suffix = require("./suffix"); +name.title = require("./title"); +name.name = require("./name"); + +},{"./female_first_name":1025,"./female_last_name":1026,"./female_middle_name":1027,"./male_first_name":1029,"./male_last_name":1030,"./male_middle_name":1031,"./name":1032,"./prefix":1033,"./suffix":1034,"./title":1035}],1029:[function(require,module,exports){ +module["exports"] = [ + "Августин", + "Аврелій", + "Адам", + "Адріян", + "Азарій", + "Алевтин", + "Альберт", + "Анастас", + "Анастасій", + "Анатолій", + "Андрій", + "Антін", + "Антон", + "Антоній", + "Аркадій", + "Арсен", + "Арсеній", + "Артем", + "Архип", + "Аскольд", + "Афанасій", + "Біломир", + "Білослав", + "Богдан", + "Божемир", + "Божен", + "Болеслав", + "Боримир", + "Боримисл", + "Борис", + "Борислав", + "Братимир", + "Братислав", + "Братомил", + "Братослав", + "Брячислав", + "Будимир", + "Буйтур", + "Буревіст", + "В’ячеслав", + "Вадим", + "Валентин", + "Валерій", + "Василь", + "Велемир", + "Віктор", + "Віталій", + "Влад", + "Владислав", + "Володимир", + "Володислав", + "Всевлад", + "Всеволод", + "Всеслав", + "Гаврило", + "Гарнослав", + "Геннадій", + "Георгій", + "Герасим", + "Гліб", + "Гнат", + "Гордій", + "Горимир", + "Горислав", + "Градимир", + "Григорій", + "Далемир", + "Данило", + "Дарій", + "Даромир", + "Денис", + "Дмитро", + "Добромир", + "Добромисл", + "Доброслав", + "Євген", + "Єремій", + "Захар", + "Захарій", + "Зборислав", + "Звенигор", + "Звенимир", + "Звенислав", + "Земислав", + "Зеновій", + "Зиновій", + "Злат", + "Златомир", + "Зоремир", + "Зореслав", + "Зорян", + "Іван", + "Ігор", + "Ізяслав", + "Ілля", + "Кий", + "Корнелій", + "Корнилій", + "Корнило", + "Корній", + "Костянтин", + "Кузьма", + "Лаврентій", + "Лаврін", + "Лад", + "Ладислав", + "Ладо", + "Ладомир", + "Левко", + "Листвич", + "Лук’ян", + "Любодар", + "Любозар", + "Любомир", + "Макар", + "Максим", + "Мар’ян", + "Маркіян", + "Марко", + "Матвій", + "Мечислав", + "Микита", + "Микола", + "Мирон", + "Мирослав", + "Михайло", + "Мстислав", + "Мусій", + "Назар", + "Назарій", + "Натан", + "Немир", + "Нестор", + "Олег", + "Олександр", + "Олексій", + "Олелько", + "Олесь", + "Омелян", + "Орест", + "Орхип", + "Остап", + "Охрім", + "Павло", + "Панас", + "Пантелеймон", + "Петро", + "Пилип", + "Подолян", + "Потап", + "Радим", + "Радимир", + "Ратибор", + "Ратимир", + "Родіон", + "Родослав", + "Роксолан", + "Роман", + "Ростислав", + "Руслан", + "Святополк", + "Святослав", + "Семибор", + "Сергій", + "Синьоок", + "Славолюб", + "Славомир", + "Славута", + "Сніжан", + "Сологуб", + "Станіслав", + "Степан", + "Стефаній", + "Стожар", + "Тарас", + "Тиміш", + "Тимофій", + "Тихон", + "Тур", + "Устим", + "Хвалимир", + "Хорив", + "Чорнота", + "Щастислав", + "Щек", + "Юліан", + "Юрій", + "Юхим", + "Ян", + "Ярема", + "Яровид", + "Яромил", + "Яромир", + "Ярополк", + "Ярослав" +]; + +},{}],1030:[function(require,module,exports){ +module["exports"] = [ + "Андрухович", + "Бабух", + "Балабан", + "Балабух", + "Балакун", + "Балицький", + "Бамбула", + "Бандера", + "Барановський", + "Бачей", + "Башук", + "Бердник", + "Білич", + "Бондаренко", + "Борецький", + "Боровський", + "Борочко", + "Боярчук", + "Брицький", + "Бурмило", + "Бутько", + "Василин", + "Василишин", + "Васильківський", + "Вергун", + "Вередун", + "Верещук", + "Витребенько", + "Вітряк", + "Волощук", + "Гайдук", + "Гайовий", + "Гайчук", + "Галаєнко", + "Галатей", + "Галаціон", + "Гаман", + "Гамула", + "Ганич", + "Гарай", + "Гарун", + "Гладківський", + "Гладух", + "Глинський", + "Гнатишин", + "Гойко", + "Головець", + "Горбач", + "Гордійчук", + "Горовий", + "Городоцький", + "Гречко", + "Григоришин", + "Гриневецький", + "Гриневський", + "Гришко", + "Громико", + "Данилишин", + "Данилко", + "Демків", + "Демчишин", + "Дзюб’як", + "Дзюба", + "Дідух", + "Дмитришин", + "Дмитрук", + "Довгалевський", + "Дурдинець", + "Євенко", + "Євпак", + "Ємець", + "Єрмак", + "Забіла", + "Зварич", + "Зінкевич", + "Зленко", + "Іванишин", + "Іванів", + "Іванців", + "Калач", + "Кандиба", + "Карпух", + "Каськів", + "Кивач", + "Коваленко", + "Ковальський", + "Коломієць", + "Коман", + "Компанієць", + "Кононець", + "Кордун", + "Корецький", + "Корнїйчук", + "Коров’як", + "Коцюбинський", + "Кулинич", + "Кульчицький", + "Лагойда", + "Лазірко", + "Лановий", + "Латаний", + "Латанський", + "Лахман", + "Левадовський", + "Ликович", + "Линдик", + "Ліхно", + "Лобачевський", + "Ломовий", + "Луговий", + "Луцький", + "Луцьків", + "Лученко", + "Лучко", + "Лютий", + "Лящук", + "Магера", + "Мазайло", + "Мазило", + "Мазун", + "Майборода", + "Майстренко", + "Маковецький", + "Малкович", + "Мамій", + "Маринич", + "Марієвський", + "Марків", + "Махно", + "Миклашевський", + "Миклухо", + "Милославський", + "Михайлюк", + "Міняйло", + "Могилевський", + "Москаль", + "Москалюк", + "Мотрієнко", + "Негода", + "Ногачевський", + "Опенько", + "Осадко", + "Павленко", + "Павлишин", + "Павлів", + "Пагутяк", + "Паламарчук", + "Палій", + "Паращук", + "Пасічник", + "Пендик", + "Петик", + "Петлюра", + "Петренко", + "Петрин", + "Петришин", + "Петрів", + "Плаксій", + "Погиба", + "Поліщук", + "Пономарів", + "Поривай", + "Поривайло", + "Потебенько", + "Потоцький", + "Пригода", + "Приймак", + "Притула", + "Прядун", + "Розпутній", + "Романишин", + "Романів", + "Ромей", + "Роменець", + "Ромочко", + "Савицький", + "Саєнко", + "Свидригайло", + "Семеночко", + "Семещук", + "Сердюк", + "Силецький", + "Сідлецький", + "Сідляк", + "Сірко", + "Скиба", + "Скоропадський", + "Слободян", + "Сосюра", + "Сплюх", + "Спотикач", + "Стахів", + "Степанець", + "Стецьків", + "Стигайло", + "Сторожук", + "Сторчак", + "Стоян", + "Сучак", + "Сушко", + "Тарасюк", + "Тиндарей", + "Ткаченко", + "Третяк", + "Троян", + "Трублаєвський", + "Трясило", + "Трясун", + "Уманець", + "Унич", + "Усич", + "Федоришин", + "Хитрово", + "Цимбалістий", + "Цушко", + "Червоній", + "Шамрило", + "Шевченко", + "Шестак", + "Шиндарей", + "Шиян", + "Шкараба", + "Шудрик", + "Шумило", + "Шупик", + "Шухевич", + "Щербак", + "Юрчишин", + "Юхно", + "Ющик", + "Ющук", + "Яворівський", + "Яловий", + "Ялюк", + "Янюк", + "Ярмак", + "Яцишин", + "Яцьків", + "Ящук" +]; + +},{}],1031:[function(require,module,exports){ +module["exports"] = [ + "Адамович", + "Азарович", + "Алевтинович", + "Альбертович", + "Анастасович", + "Анатолійович", + "Андрійович", + "Антонович", + "Аркадійович", + "Арсенійович", + "Арсенович", + "Артемович", + "Архипович", + "Аскольдович", + "Афанасійович", + "Білославович", + "Богданович", + "Божемирович", + "Боженович", + "Болеславович", + "Боримирович", + "Борисович", + "Бориславович", + "Братиславович", + "В’ячеславович", + "Вадимович", + "Валентинович", + "Валерійович", + "Васильович", + "Вікторович", + "Віталійович", + "Владиславович", + "Володимирович", + "Всеволодович", + "Всеславович", + "Гаврилович", + "Герасимович", + "Георгійович", + "Гнатович", + "Гордійович", + "Григорійович", + "Данилович", + "Даромирович", + "Денисович", + "Дмитрович", + "Добромирович", + "Доброславович", + "Євгенович", + "Захарович", + "Захарійович", + "Збориславович", + "Звенимирович", + "Звениславович", + "Зеновійович", + "Зиновійович", + "Златомирович", + "Зореславович", + "Іванович", + "Ігорович", + "Ізяславович", + "Корнелійович", + "Корнилович", + "Корнійович", + "Костянтинович", + "Лаврентійович", + "Любомирович", + "Макарович", + "Максимович", + "Маркович", + "Маркіянович", + "Матвійович", + "Мечиславович", + "Микитович", + "Миколайович", + "Миронович", + "Мирославович", + "Михайлович", + "Мстиславович", + "Назарович", + "Назарійович", + "Натанович", + "Немирович", + "Несторович", + "Олегович", + "Олександрович", + "Олексійович", + "Олелькович", + "Омелянович", + "Орестович", + "Орхипович", + "Остапович", + "Охрімович", + "Павлович", + "Панасович", + "Пантелеймонович", + "Петрович", + "Пилипович", + "Радимирович", + "Радимович", + "Родіонович", + "Романович", + "Ростиславович", + "Русланович", + "Святославович", + "Сергійович", + "Славутович", + "Станіславович", + "Степанович", + "Стефанович", + "Тарасович", + "Тимофійович", + "Тихонович", + "Устимович", + "Юрійович", + "Юхимович", + "Ярославович" +]; + +},{}],1032:[function(require,module,exports){ +arguments[4][886][0].apply(exports,arguments) +},{"dup":886}],1033:[function(require,module,exports){ +module["exports"] = [ + "Пан", + "Пані" +]; + +},{}],1034:[function(require,module,exports){ +module["exports"] = [ + "проф.", + "доц.", + "докт. пед. наук", + "докт. політ. наук", + "докт. філол. наук", + "докт. філос. наук", + "докт. і. наук", + "докт. юрид. наук", + "докт. техн. наук", + "докт. психол. наук", + "канд. пед. наук", + "канд. політ. наук", + "канд. філол. наук", + "канд. філос. наук", + "канд. і. наук", + "канд. юрид. наук", + "канд. техн. наук", + "канд. психол. наук" +]; + +},{}],1035:[function(require,module,exports){ +module["exports"] = { + "descriptor": [ + "Головний", + "Генеральний", + "Провідний", + "Національний", + "Регіональний", + "Обласний", + "Районний", + "Глобальний", + "Міжнародний", + "Центральний" + ], + "level": [ + "маркетинговий", + "оптимізаційний", + "страховий", + "функціональний", + "інтеграційний", + "логістичний" + ], + "job": [ + "інженер", + "агент", + "адміністратор", + "аналітик", + "архітектор", + "дизайнер", + "керівник", + "консультант", + "координатор", + "менеджер", + "планувальник", + "помічник", + "розробник", + "спеціаліст", + "співробітник", + "технік" + ] +}; + +},{}],1036:[function(require,module,exports){ +module["exports"] = [ + "(044) ###-##-##", + "(050) ###-##-##", + "(063) ###-##-##", + "(066) ###-##-##", + "(073) ###-##-##", + "(091) ###-##-##", + "(092) ###-##-##", + "(093) ###-##-##", + "(094) ###-##-##", + "(095) ###-##-##", + "(096) ###-##-##", + "(097) ###-##-##", + "(098) ###-##-##", + "(099) ###-##-##" +]; + +},{}],1037:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":1036,"dup":108}],1038:[function(require,module,exports){ +module["exports"] = [ + "#{city_root}" +]; + +},{}],1039:[function(require,module,exports){ +module["exports"] = [ + "Bắc Giang", + "Bắc Kạn", + "Bắc Ninh", + "Cao Bằng", + "Điện Biên", + "Hà Giang", + "Hà Nam", + "Hà Tây", + "Hải Dương", + "TP Hải Phòng", + "Hòa Bình", + "Hưng Yên", + "Lai Châu", + "Lào Cai", + "Lạng Sơn", + "Nam Định", + "Ninh Bình", + "Phú Thọ", + "Quảng Ninh", + "Sơn La", + "Thái Bình", + "Thái Nguyên", + "Tuyên Quang", + "Vĩnh Phúc", + "Yên Bái", + "TP Đà Nẵng", + "Bình Định", + "Đắk Lắk", + "Đắk Nông", + "Gia Lai", + "Hà Tĩnh", + "Khánh Hòa", + "Kon Tum", + "Nghệ An", + "Phú Yên", + "Quảng Bình", + "Quảng Nam", + "Quảng Ngãi", + "Quảng Trị", + "Thanh Hóa", + "Thừa Thiên Huế", + "TP TP. Hồ Chí Minh", + "An Giang", + "Bà Rịa Vũng Tàu", + "Bạc Liêu", + "Bến Tre", + "Bình Dương", + "Bình Phước", + "Bình Thuận", + "Cà Mau", + "TP Cần Thơ", + "Đồng Nai", + "Đồng Tháp", + "Hậu Giang", + "Kiên Giang", + "Lâm Đồng", + "Long An", + "Ninh Thuận", + "Sóc Trăng", + "Tây Ninh", + "Tiền Giang", + "Trà Vinh", + "Vĩnh Long" +]; + +},{}],1040:[function(require,module,exports){ +module["exports"] = [ + "Avon", + "Bedfordshire", + "Berkshire", + "Borders", + "Buckinghamshire", + "Cambridgeshire", + "Central", + "Cheshire", + "Cleveland", + "Clwyd", + "Cornwall", + "County Antrim", + "County Armagh", + "County Down", + "County Fermanagh", + "County Londonderry", + "County Tyrone", + "Cumbria", + "Derbyshire", + "Devon", + "Dorset", + "Dumfries and Galloway", + "Durham", + "Dyfed", + "East Sussex", + "Essex", + "Fife", + "Gloucestershire", + "Grampian", + "Greater Manchester", + "Gwent", + "Gwynedd County", + "Hampshire", + "Herefordshire", + "Hertfordshire", + "Highlands and Islands", + "Humberside", + "Isle of Wight", + "Kent", + "Lancashire", + "Leicestershire", + "Lincolnshire", + "Lothian", + "Merseyside", + "Mid Glamorgan", + "Norfolk", + "North Yorkshire", + "Northamptonshire", + "Northumberland", + "Nottinghamshire", + "Oxfordshire", + "Powys", + "Rutland", + "Shropshire", + "Somerset", + "South Glamorgan", + "South Yorkshire", + "Staffordshire", + "Strathclyde", + "Suffolk", + "Surrey", + "Tayside", + "Tyne and Wear", + "Việt Nam", + "Warwickshire", + "West Glamorgan", + "West Midlands", + "West Sussex", + "West Yorkshire", + "Wiltshire", + "Worcestershire" +]; + +},{}],1041:[function(require,module,exports){ +module["exports"] = [ + "Việt Nam" +]; + +},{}],1042:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_root = require("./city_root"); +address.city = require("./city"); +address.county = require("./county"); +address.default_country = require("./default_country"); + +},{"./city":1038,"./city_root":1039,"./county":1040,"./default_country":1041}],1043:[function(require,module,exports){ +arguments[4][363][0].apply(exports,arguments) +},{"dup":363}],1044:[function(require,module,exports){ +arguments[4][167][0].apply(exports,arguments) +},{"./formats":1043,"dup":167}],1045:[function(require,module,exports){ +var company = {}; +module['exports'] = company; +company.prefix = require("./prefix"); +company.name = require("./name"); + +},{"./name":1046,"./prefix":1047}],1046:[function(require,module,exports){ +module["exports"] = [ + "#{prefix} #{Name.last_name}" +]; + +},{}],1047:[function(require,module,exports){ +module["exports"] = [ + "Công ty", + "Cty TNHH", + "Cty", + "Cửa hàng", + "Trung tâm", + "Chi nhánh" +]; + +},{}],1048:[function(require,module,exports){ +var vi = {}; +module['exports'] = vi; +vi.title = "Vietnamese"; +vi.address = require("./address"); +vi.internet = require("./internet"); +vi.phone_number = require("./phone_number"); +vi.cell_phone = require("./cell_phone"); +vi.name = require("./name"); +vi.company = require("./company"); +vi.lorem = require("./lorem"); + +},{"./address":1042,"./cell_phone":1044,"./company":1045,"./internet":1050,"./lorem":1051,"./name":1054,"./phone_number":1058}],1049:[function(require,module,exports){ +module["exports"] = [ + "com", + "net", + "info", + "vn", + "com.vn" +]; + +},{}],1050:[function(require,module,exports){ +arguments[4][226][0].apply(exports,arguments) +},{"./domain_suffix":1049,"dup":226}],1051:[function(require,module,exports){ +arguments[4][176][0].apply(exports,arguments) +},{"./words":1052,"dup":176}],1052:[function(require,module,exports){ +module["exports"] = [ + "đã", + "đang", + "ừ", + "ờ", + "á", + "không", + "biết", + "gì", + "hết", + "đâu", + "nha", + "thế", + "thì", + "là", + "đánh", + "đá", + "đập", + "phá", + "viết", + "vẽ", + "tô", + "thuê", + "mướn", + "mượn", + "mua", + "một", + "hai", + "ba", + "bốn", + "năm", + "sáu", + "bảy", + "tám", + "chín", + "mười", + "thôi", + "việc", + "nghỉ", + "làm", + "nhà", + "cửa", + "xe", + "đạp", + "ác", + "độc", + "khoảng", + "khoan", + "thuyền", + "tàu", + "bè", + "lầu", + "xanh", + "đỏ", + "tím", + "vàng", + "kim", + "chỉ", + "khâu", + "may", + "vá", + "em", + "anh", + "yêu", + "thương", + "thích", + "con", + "cái", + "bàn", + "ghế", + "tủ", + "quần", + "áo", + "nón", + "dép", + "giày", + "lỗi", + "được", + "ghét", + "giết", + "chết", + "hết", + "tôi", + "bạn", + "tui", + "trời", + "trăng", + "mây", + "gió", + "máy", + "hàng", + "hóa", + "leo", + "núi", + "bơi", + "biển", + "chìm", + "xuồng", + "nước", + "ngọt", + "ruộng", + "đồng", + "quê", + "hương" +]; + +},{}],1053:[function(require,module,exports){ +module["exports"] = [ + "Phạm", + "Nguyễn", + "Trần", + "Lê", + "Lý", + "Hoàng", + "Phan", + "Vũ", + "Tăng", + "Đặng", + "Bùi", + "Đỗ", + "Hồ", + "Ngô", + "Dương", + "Đào", + "Đoàn", + "Vương", + "Trịnh", + "Đinh", + "Lâm", + "Phùng", + "Mai", + "Tô", + "Trương", + "Hà" +]; + +},{}],1054:[function(require,module,exports){ +var name = {}; +module['exports'] = name; +name.first_name = require("./first_name"); +name.last_name = require("./last_name"); +name.name = require("./name"); + +},{"./first_name":1053,"./last_name":1055,"./name":1056}],1055:[function(require,module,exports){ +module["exports"] = [ + "Nam", + "Trung", + "Thanh", + "Thị", + "Văn", + "Dương", + "Tăng", + "Quốc", + "Như", + "Phạm", + "Nguyễn", + "Trần", + "Lê", + "Lý", + "Hoàng", + "Phan", + "Vũ", + "Tăng", + "Đặng", + "Bùi", + "Đỗ", + "Hồ", + "Ngô", + "Dương", + "Đào", + "Đoàn", + "Vương", + "Trịnh", + "Đinh", + "Lâm", + "Phùng", + "Mai", + "Tô", + "Trương", + "Hà", + "Vinh", + "Nhung", + "Hòa", + "Tiến", + "Tâm", + "Bửu", + "Loan", + "Hiền", + "Hải", + "Vân", + "Kha", + "Minh", + "Nhân", + "Triệu", + "Tuân", + "Hữu", + "Đức", + "Phú", + "Khoa", + "Thắgn", + "Sơn", + "Dung", + "Tú", + "Trinh", + "Thảo", + "Sa", + "Kim", + "Long", + "Thi", + "Cường", + "Ngọc", + "Sinh", + "Khang", + "Phong", + "Thắm", + "Thu", + "Thủy", + "Nhàn" +]; + +},{}],1056:[function(require,module,exports){ +module["exports"] = [ + "#{first_name} #{last_name}", + "#{first_name} #{last_name} #{last_name}", + "#{first_name} #{last_name} #{last_name} #{last_name}" +]; + +},{}],1057:[function(require,module,exports){ +arguments[4][368][0].apply(exports,arguments) +},{"dup":368}],1058:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":1057,"dup":108}],1059:[function(require,module,exports){ +module["exports"] = [ + "#####", + "####", + "###", + "##", + "#" +]; + +},{}],1060:[function(require,module,exports){ +arguments[4][934][0].apply(exports,arguments) +},{"dup":934}],1061:[function(require,module,exports){ +module["exports"] = [ + "长", + "上", + "南", + "西", + "北", + "诸", + "宁", + "珠", + "武", + "衡", + "成", + "福", + "厦", + "贵", + "吉", + "海", + "太", + "济", + "安", + "吉", + "包" +]; + +},{}],1062:[function(require,module,exports){ +module["exports"] = [ + "沙市", + "京市", + "宁市", + "安市", + "乡县", + "海市", + "码市", + "汉市", + "阳市", + "都市", + "州市", + "门市", + "阳市", + "口市", + "原市", + "南市", + "徽市", + "林市", + "头市" +]; + +},{}],1063:[function(require,module,exports){ +module["exports"] = [ + "中国" +]; + +},{}],1064:[function(require,module,exports){ +var address = {}; +module['exports'] = address; +address.city_prefix = require("./city_prefix"); +address.city_suffix = require("./city_suffix"); +address.building_number = require("./building_number"); +address.street_suffix = require("./street_suffix"); +address.postcode = require("./postcode"); +address.state = require("./state"); +address.state_abbr = require("./state_abbr"); +address.city = require("./city"); +address.street_name = require("./street_name"); +address.street_address = require("./street_address"); +address.default_country = require("./default_country"); + +},{"./building_number":1059,"./city":1060,"./city_prefix":1061,"./city_suffix":1062,"./default_country":1063,"./postcode":1065,"./state":1066,"./state_abbr":1067,"./street_address":1068,"./street_name":1069,"./street_suffix":1070}],1065:[function(require,module,exports){ +arguments[4][857][0].apply(exports,arguments) +},{"dup":857}],1066:[function(require,module,exports){ +module["exports"] = [ + "北京市", + "上海市", + "天津市", + "重庆市", + "黑龙江省", + "吉林省", + "辽宁省", + "内蒙古", + "河北省", + "新疆", + "甘肃省", + "青海省", + "陕西省", + "宁夏", + "河南省", + "山东省", + "山西省", + "安徽省", + "湖北省", + "湖南省", + "江苏省", + "四川省", + "贵州省", + "云南省", + "广西省", + "西藏", + "浙江省", + "江西省", + "广东省", + "福建省", + "台湾省", + "海南省", + "香港", + "澳门" +]; + +},{}],1067:[function(require,module,exports){ +module["exports"] = [ + "京", + "沪", + "津", + "渝", + "黑", + "吉", + "辽", + "蒙", + "冀", + "新", + "甘", + "青", + "陕", + "宁", + "豫", + "鲁", + "晋", + "皖", + "鄂", + "湘", + "苏", + "川", + "黔", + "滇", + "桂", + "藏", + "浙", + "赣", + "粤", + "闽", + "台", + "琼", + "港", + "澳" +]; + +},{}],1068:[function(require,module,exports){ +module["exports"] = [ + "#{street_name}#{building_number}号" +]; + +},{}],1069:[function(require,module,exports){ +module["exports"] = [ + "#{Name.last_name}#{street_suffix}" +]; + +},{}],1070:[function(require,module,exports){ +module["exports"] = [ + "巷", + "街", + "路", + "桥", + "侬", + "旁", + "中心", + "栋" +]; + +},{}],1071:[function(require,module,exports){ +var zh_CN = {}; +module['exports'] = zh_CN; +zh_CN.title = "Chinese"; +zh_CN.address = require("./address"); +zh_CN.name = require("./name"); +zh_CN.phone_number = require("./phone_number"); + +},{"./address":1064,"./name":1073,"./phone_number":1077}],1072:[function(require,module,exports){ +module["exports"] = [ + "王", + "李", + "张", + "刘", + "陈", + "杨", + "黄", + "吴", + "赵", + "周", + "徐", + "孙", + "马", + "朱", + "胡", + "林", + "郭", + "何", + "高", + "罗", + "郑", + "梁", + "谢", + "宋", + "唐", + "许", + "邓", + "冯", + "韩", + "曹", + "曾", + "彭", + "萧", + "蔡", + "潘", + "田", + "董", + "袁", + "于", + "余", + "叶", + "蒋", + "杜", + "苏", + "魏", + "程", + "吕", + "丁", + "沈", + "任", + "姚", + "卢", + "傅", + "钟", + "姜", + "崔", + "谭", + "廖", + "范", + "汪", + "陆", + "金", + "石", + "戴", + "贾", + "韦", + "夏", + "邱", + "方", + "侯", + "邹", + "熊", + "孟", + "秦", + "白", + "江", + "阎", + "薛", + "尹", + "段", + "雷", + "黎", + "史", + "龙", + "陶", + "贺", + "顾", + "毛", + "郝", + "龚", + "邵", + "万", + "钱", + "严", + "赖", + "覃", + "洪", + "武", + "莫", + "孔" +]; + +},{}],1073:[function(require,module,exports){ +arguments[4][1054][0].apply(exports,arguments) +},{"./first_name":1072,"./last_name":1074,"./name":1075,"dup":1054}],1074:[function(require,module,exports){ +module["exports"] = [ + "绍齐", + "博文", + "梓晨", + "胤祥", + "瑞霖", + "明哲", + "天翊", + "凯瑞", + "健雄", + "耀杰", + "潇然", + "子涵", + "越彬", + "钰轩", + "智辉", + "致远", + "俊驰", + "雨泽", + "烨磊", + "晟睿", + "文昊", + "修洁", + "黎昕", + "远航", + "旭尧", + "鸿涛", + "伟祺", + "荣轩", + "越泽", + "浩宇", + "瑾瑜", + "皓轩", + "擎苍", + "擎宇", + "志泽", + "子轩", + "睿渊", + "弘文", + "哲瀚", + "雨泽", + "楷瑞", + "建辉", + "晋鹏", + "天磊", + "绍辉", + "泽洋", + "鑫磊", + "鹏煊", + "昊强", + "伟宸", + "博超", + "君浩", + "子骞", + "鹏涛", + "炎彬", + "鹤轩", + "越彬", + "风华", + "靖琪", + "明辉", + "伟诚", + "明轩", + "健柏", + "修杰", + "志泽", + "弘文", + "峻熙", + "嘉懿", + "煜城", + "懿轩", + "烨伟", + "苑博", + "伟泽", + "熠彤", + "鸿煊", + "博涛", + "烨霖", + "烨华", + "煜祺", + "智宸", + "正豪", + "昊然", + "明杰", + "立诚", + "立轩", + "立辉", + "峻熙", + "弘文", + "熠彤", + "鸿煊", + "烨霖", + "哲瀚", + "鑫鹏", + "昊天", + "思聪", + "展鹏", + "笑愚", + "志强", + "炫明", + "雪松", + "思源", + "智渊", + "思淼", + "晓啸", + "天宇", + "浩然", + "文轩", + "鹭洋", + "振家", + "乐驹", + "晓博", + "文博", + "昊焱", + "立果", + "金鑫", + "锦程", + "嘉熙", + "鹏飞", + "子默", + "思远", + "浩轩", + "语堂", + "聪健", + "明", + "文", + "果", + "思", + "鹏", + "驰", + "涛", + "琪", + "浩", + "航", + "彬" +]; + +},{}],1075:[function(require,module,exports){ +module["exports"] = [ + "#{first_name}#{last_name}" +]; + +},{}],1076:[function(require,module,exports){ +module["exports"] = [ + "###-########", + "####-########", + "###########" +]; + +},{}],1077:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":1076,"dup":108}],1078:[function(require,module,exports){ +arguments[4][519][0].apply(exports,arguments) +},{"dup":519}],1079:[function(require,module,exports){ +arguments[4][934][0].apply(exports,arguments) +},{"dup":934}],1080:[function(require,module,exports){ +module["exports"] = [ + "臺北", + "新北", + "桃園", + "臺中", + "臺南", + "高雄", + "基隆", + "新竹", + "嘉義", + "苗栗", + "彰化", + "南投", + "雲林", + "屏東", + "宜蘭", + "花蓮", + "臺東", + "澎湖", + "金門", + "連江" +]; + +},{}],1081:[function(require,module,exports){ +module["exports"] = [ + "縣", + "市" +]; + +},{}],1082:[function(require,module,exports){ +module["exports"] = [ + "Taiwan (R.O.C.)" +]; + +},{}],1083:[function(require,module,exports){ +arguments[4][1064][0].apply(exports,arguments) +},{"./building_number":1078,"./city":1079,"./city_prefix":1080,"./city_suffix":1081,"./default_country":1082,"./postcode":1084,"./state":1085,"./state_abbr":1086,"./street_address":1087,"./street_name":1088,"./street_suffix":1089,"dup":1064}],1084:[function(require,module,exports){ +arguments[4][857][0].apply(exports,arguments) +},{"dup":857}],1085:[function(require,module,exports){ +module["exports"] = [ + "福建省", + "台灣省" +]; + +},{}],1086:[function(require,module,exports){ +module["exports"] = [ + "北", + "新北", + "桃", + "中", + "南", + "高", + "基", + "竹市", + "嘉市", + "竹縣", + "苗", + "彰", + "投", + "雲", + "嘉縣", + "宜", + "花", + "東", + "澎", + "金", + "馬" +]; + +},{}],1087:[function(require,module,exports){ +module["exports"] = [ + "#{street_name}#{building_number}號" +]; + +},{}],1088:[function(require,module,exports){ +arguments[4][1069][0].apply(exports,arguments) +},{"dup":1069}],1089:[function(require,module,exports){ +module["exports"] = [ + "街", + "路", + "北路", + "南路", + "東路", + "西路" +]; + +},{}],1090:[function(require,module,exports){ +var zh_TW = {}; +module['exports'] = zh_TW; +zh_TW.title = "Chinese (Taiwan)"; +zh_TW.address = require("./address"); +zh_TW.name = require("./name"); +zh_TW.phone_number = require("./phone_number"); + +},{"./address":1083,"./name":1092,"./phone_number":1096}],1091:[function(require,module,exports){ +module["exports"] = [ + "王", + "李", + "張", + "劉", + "陳", + "楊", + "黃", + "吳", + "趙", + "週", + "徐", + "孫", + "馬", + "朱", + "胡", + "林", + "郭", + "何", + "高", + "羅", + "鄭", + "梁", + "謝", + "宋", + "唐", + "許", + "鄧", + "馮", + "韓", + "曹", + "曾", + "彭", + "蕭", + "蔡", + "潘", + "田", + "董", + "袁", + "於", + "餘", + "葉", + "蔣", + "杜", + "蘇", + "魏", + "程", + "呂", + "丁", + "沈", + "任", + "姚", + "盧", + "傅", + "鐘", + "姜", + "崔", + "譚", + "廖", + "範", + "汪", + "陸", + "金", + "石", + "戴", + "賈", + "韋", + "夏", + "邱", + "方", + "侯", + "鄒", + "熊", + "孟", + "秦", + "白", + "江", + "閻", + "薛", + "尹", + "段", + "雷", + "黎", + "史", + "龍", + "陶", + "賀", + "顧", + "毛", + "郝", + "龔", + "邵", + "萬", + "錢", + "嚴", + "賴", + "覃", + "洪", + "武", + "莫", + "孔" +]; + +},{}],1092:[function(require,module,exports){ +arguments[4][1054][0].apply(exports,arguments) +},{"./first_name":1091,"./last_name":1093,"./name":1094,"dup":1054}],1093:[function(require,module,exports){ +module["exports"] = [ + "紹齊", + "博文", + "梓晨", + "胤祥", + "瑞霖", + "明哲", + "天翊", + "凱瑞", + "健雄", + "耀傑", + "瀟然", + "子涵", + "越彬", + "鈺軒", + "智輝", + "致遠", + "俊馳", + "雨澤", + "燁磊", + "晟睿", + "文昊", + "修潔", + "黎昕", + "遠航", + "旭堯", + "鴻濤", + "偉祺", + "榮軒", + "越澤", + "浩宇", + "瑾瑜", + "皓軒", + "擎蒼", + "擎宇", + "志澤", + "子軒", + "睿淵", + "弘文", + "哲瀚", + "雨澤", + "楷瑞", + "建輝", + "晉鵬", + "天磊", + "紹輝", + "澤洋", + "鑫磊", + "鵬煊", + "昊強", + "偉宸", + "博超", + "君浩", + "子騫", + "鵬濤", + "炎彬", + "鶴軒", + "越彬", + "風華", + "靖琪", + "明輝", + "偉誠", + "明軒", + "健柏", + "修傑", + "志澤", + "弘文", + "峻熙", + "嘉懿", + "煜城", + "懿軒", + "燁偉", + "苑博", + "偉澤", + "熠彤", + "鴻煊", + "博濤", + "燁霖", + "燁華", + "煜祺", + "智宸", + "正豪", + "昊然", + "明杰", + "立誠", + "立軒", + "立輝", + "峻熙", + "弘文", + "熠彤", + "鴻煊", + "燁霖", + "哲瀚", + "鑫鵬", + "昊天", + "思聰", + "展鵬", + "笑愚", + "志強", + "炫明", + "雪松", + "思源", + "智淵", + "思淼", + "曉嘯", + "天宇", + "浩然", + "文軒", + "鷺洋", + "振家", + "樂駒", + "曉博", + "文博", + "昊焱", + "立果", + "金鑫", + "錦程", + "嘉熙", + "鵬飛", + "子默", + "思遠", + "浩軒", + "語堂", + "聰健" +]; + +},{}],1094:[function(require,module,exports){ +arguments[4][1075][0].apply(exports,arguments) +},{"dup":1075}],1095:[function(require,module,exports){ +module["exports"] = [ + "0#-#######", + "02-########", + "09##-######" +]; + +},{}],1096:[function(require,module,exports){ +arguments[4][108][0].apply(exports,arguments) +},{"./formats":1095,"dup":108}],1097:[function(require,module,exports){ + +/** + * + * @namespace faker.lorem + */ +var Lorem = function (faker) { + var self = this; + var Helpers = faker.helpers; + + /** + * word + * + * @method faker.lorem.word + * @param {number} num + */ + self.word = function (num) { + return faker.random.arrayElement(faker.definitions.lorem.words); + }; + + /** + * generates a space separated list of words + * + * @method faker.lorem.words + * @param {number} num number of words, defaults to 3 + */ + self.words = function (num) { + if (typeof num == 'undefined') { num = 3; } + var words = []; + for (var i = 0; i < num; i++) { + words.push(faker.lorem.word()); + } + return words.join(' '); + }; + + /** + * sentence + * + * @method faker.lorem.sentence + * @param {number} wordCount defaults to a random number between 3 and 10 + * @param {number} range + */ + self.sentence = function (wordCount, range) { + if (typeof wordCount == 'undefined') { wordCount = faker.random.number({ min: 3, max: 10 }); } + // if (typeof range == 'undefined') { range = 7; } + + // strange issue with the node_min_test failing for captialize, please fix and add faker.lorem.back + //return faker.lorem.words(wordCount + Helpers.randomNumber(range)).join(' ').capitalize(); + + var sentence = faker.lorem.words(wordCount); + return sentence.charAt(0).toUpperCase() + sentence.slice(1) + '.'; + }; + + /** + * slug + * + * @method faker.lorem.slug + * @param {number} wordCount number of words, defaults to 3 + */ + self.slug = function (wordCount) { + var words = faker.lorem.words(wordCount); + return Helpers.slugify(words); + }; + + /** + * sentences + * + * @method faker.lorem.sentences + * @param {number} sentenceCount defautls to a random number between 2 and 6 + * @param {string} separator defaults to `' '` + */ + self.sentences = function (sentenceCount, separator) { + if (typeof sentenceCount === 'undefined') { sentenceCount = faker.random.number({ min: 2, max: 6 });} + if (typeof separator == 'undefined') { separator = " "; } + var sentences = []; + for (sentenceCount; sentenceCount > 0; sentenceCount--) { + sentences.push(faker.lorem.sentence()); + } + return sentences.join(separator); + }; + + /** + * paragraph + * + * @method faker.lorem.paragraph + * @param {number} sentenceCount defaults to 3 + */ + self.paragraph = function (sentenceCount) { + if (typeof sentenceCount == 'undefined') { sentenceCount = 3; } + return faker.lorem.sentences(sentenceCount + faker.random.number(3)); + }; + + /** + * paragraphs + * + * @method faker.lorem.paragraphs + * @param {number} paragraphCount defaults to 3 + * @param {string} separator defaults to `'\n \r'` + */ + self.paragraphs = function (paragraphCount, separator) { + if (typeof separator === "undefined") { + separator = "\n \r"; + } + if (typeof paragraphCount == 'undefined') { paragraphCount = 3; } + var paragraphs = []; + for (paragraphCount; paragraphCount > 0; paragraphCount--) { + paragraphs.push(faker.lorem.paragraph()); + } + return paragraphs.join(separator); + } + + /** + * returns random text based on a random lorem method + * + * @method faker.lorem.text + * @param {number} times + */ + self.text = function loremText (times) { + var loremMethods = ['lorem.word', 'lorem.words', 'lorem.sentence', 'lorem.sentences', 'lorem.paragraph', 'lorem.paragraphs', 'lorem.lines']; + var randomLoremMethod = faker.random.arrayElement(loremMethods); + return faker.fake('{{' + randomLoremMethod + '}}'); + }; + + /** + * returns lines of lorem separated by `'\n'` + * + * @method faker.lorem.lines + * @param {number} lineCount defaults to a random number between 1 and 5 + */ + self.lines = function lines (lineCount) { + if (typeof lineCount === 'undefined') { lineCount = faker.random.number({ min: 1, max: 5 });} + return faker.lorem.sentences(lineCount, '\n') + }; + + return self; +}; + + +module["exports"] = Lorem; + +},{}],1098:[function(require,module,exports){ +/** + * + * @namespace faker.name + */ +function Name (faker) { + + /** + * firstName + * + * @method firstName + * @param {mixed} gender + * @memberof faker.name + */ + this.firstName = function (gender) { + if (typeof faker.definitions.name.male_first_name !== "undefined" && typeof faker.definitions.name.female_first_name !== "undefined") { + // some locale datasets ( like ru ) have first_name split by gender. since the name.first_name field does not exist in these datasets, + // we must randomly pick a name from either gender array so faker.name.firstName will return the correct locale data ( and not fallback ) + if (typeof gender !== 'number') { + gender = faker.random.number(1); + } + if (gender === 0) { + return faker.random.arrayElement(faker.locales[faker.locale].name.male_first_name) + } else { + return faker.random.arrayElement(faker.locales[faker.locale].name.female_first_name); + } + } + return faker.random.arrayElement(faker.definitions.name.first_name); + }; + + /** + * lastName + * + * @method lastName + * @param {mixed} gender + * @memberof faker.name + */ + this.lastName = function (gender) { + if (typeof faker.definitions.name.male_last_name !== "undefined" && typeof faker.definitions.name.female_last_name !== "undefined") { + // some locale datasets ( like ru ) have last_name split by gender. i have no idea how last names can have genders, but also i do not speak russian + // see above comment of firstName method + if (typeof gender !== 'number') { + gender = faker.random.number(1); + } + if (gender === 0) { + return faker.random.arrayElement(faker.locales[faker.locale].name.male_last_name); + } else { + return faker.random.arrayElement(faker.locales[faker.locale].name.female_last_name); + } + } + return faker.random.arrayElement(faker.definitions.name.last_name); + }; + + /** + * findName + * + * @method findName + * @param {string} firstName + * @param {string} lastName + * @param {mixed} gender + * @memberof faker.name + */ + this.findName = function (firstName, lastName, gender) { + var r = faker.random.number(8); + var prefix, suffix; + // in particular locales first and last names split by gender, + // thus we keep consistency by passing 0 as male and 1 as female + if (typeof gender !== 'number') { + gender = faker.random.number(1); + } + firstName = firstName || faker.name.firstName(gender); + lastName = lastName || faker.name.lastName(gender); + switch (r) { + case 0: + prefix = faker.name.prefix(gender); + if (prefix) { + return prefix + " " + firstName + " " + lastName; + } + case 1: + suffix = faker.name.suffix(gender); + if (suffix) { + return firstName + " " + lastName + " " + suffix; + } + } + + return firstName + " " + lastName; + }; + + /** + * jobTitle + * + * @method jobTitle + * @memberof faker.name + */ + this.jobTitle = function () { + return faker.name.jobDescriptor() + " " + + faker.name.jobArea() + " " + + faker.name.jobType(); + }; + + /** + * prefix + * + * @method prefix + * @param {mixed} gender + * @memberof faker.name + */ + this.prefix = function (gender) { + if (typeof faker.definitions.name.male_prefix !== "undefined" && typeof faker.definitions.name.female_prefix !== "undefined") { + if (typeof gender !== 'number') { + gender = faker.random.number(1); + } + if (gender === 0) { + return faker.random.arrayElement(faker.locales[faker.locale].name.male_prefix); + } else { + return faker.random.arrayElement(faker.locales[faker.locale].name.female_prefix); + } + } + return faker.random.arrayElement(faker.definitions.name.prefix); + }; + + /** + * suffix + * + * @method suffix + * @memberof faker.name + */ + this.suffix = function () { + return faker.random.arrayElement(faker.definitions.name.suffix); + }; + + /** + * title + * + * @method title + * @memberof faker.name + */ + this.title = function() { + var descriptor = faker.random.arrayElement(faker.definitions.name.title.descriptor), + level = faker.random.arrayElement(faker.definitions.name.title.level), + job = faker.random.arrayElement(faker.definitions.name.title.job); + + return descriptor + " " + level + " " + job; + }; + + /** + * jobDescriptor + * + * @method jobDescriptor + * @memberof faker.name + */ + this.jobDescriptor = function () { + return faker.random.arrayElement(faker.definitions.name.title.descriptor); + }; + + /** + * jobArea + * + * @method jobArea + * @memberof faker.name + */ + this.jobArea = function () { + return faker.random.arrayElement(faker.definitions.name.title.level); + }; + + /** + * jobType + * + * @method jobType + * @memberof faker.name + */ + this.jobType = function () { + return faker.random.arrayElement(faker.definitions.name.title.job); + }; + +} + +module['exports'] = Name; + +},{}],1099:[function(require,module,exports){ +/** + * + * @namespace faker.phone + */ +var Phone = function (faker) { + var self = this; + + /** + * phoneNumber + * + * @method faker.phone.phoneNumber + * @param {string} format + */ + self.phoneNumber = function (format) { + format = format || faker.phone.phoneFormats(); + return faker.helpers.replaceSymbolWithNumber(format); + }; + + // FIXME: this is strange passing in an array index. + /** + * phoneNumberFormat + * + * @method faker.phone.phoneFormatsArrayIndex + * @param phoneFormatsArrayIndex + */ + self.phoneNumberFormat = function (phoneFormatsArrayIndex) { + phoneFormatsArrayIndex = phoneFormatsArrayIndex || 0; + return faker.helpers.replaceSymbolWithNumber(faker.definitions.phone_number.formats[phoneFormatsArrayIndex]); + }; + + /** + * phoneFormats + * + * @method faker.phone.phoneFormats + */ + self.phoneFormats = function () { + return faker.random.arrayElement(faker.definitions.phone_number.formats); + }; + + return self; + +}; + +module['exports'] = Phone; +},{}],1100:[function(require,module,exports){ +var mersenne = require('../vendor/mersenne'); + +/** + * + * @namespace faker.random + */ +function Random (faker, seed) { + // Use a user provided seed if it exists + if (seed) { + if (Array.isArray(seed) && seed.length) { + mersenne.seed_array(seed); + } + else { + mersenne.seed(seed); + } + } + /** + * returns a single random number based on a max number or range + * + * @method faker.random.number + * @param {mixed} options + */ + this.number = function (options) { + + if (typeof options === "number") { + options = { + max: options + }; + } + + options = options || {}; + + if (typeof options.min === "undefined") { + options.min = 0; + } + + if (typeof options.max === "undefined") { + options.max = 99999; + } + if (typeof options.precision === "undefined") { + options.precision = 1; + } + + // Make the range inclusive of the max value + var max = options.max; + if (max >= 0) { + max += options.precision; + } + + var randomNumber = options.precision * Math.floor( + mersenne.rand(max / options.precision, options.min / options.precision)); + + return randomNumber; + + } + + /** + * takes an array and returns a random element of the array + * + * @method faker.random.arrayElement + * @param {array} array + */ + this.arrayElement = function (array) { + array = array || ["a", "b", "c"]; + var r = faker.random.number({ max: array.length - 1 }); + return array[r]; + } + + /** + * takes an object and returns the randomly key or value + * + * @method faker.random.objectElement + * @param {object} object + * @param {mixed} field + */ + this.objectElement = function (object, field) { + object = object || { "foo": "bar", "too": "car" }; + var array = Object.keys(object); + var key = faker.random.arrayElement(array); + + return field === "key" ? key : object[key]; + } + + /** + * uuid + * + * @method faker.random.uuid + */ + this.uuid = function () { + var self = this; + var RFC4122_TEMPLATE = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'; + var replacePlaceholders = function (placeholder) { + var random = self.number({ min: 0, max: 15 }); + var value = placeholder == 'x' ? random : (random &0x3 | 0x8); + return value.toString(16); + }; + return RFC4122_TEMPLATE.replace(/[xy]/g, replacePlaceholders); + } + + /** + * boolean + * + * @method faker.random.boolean + */ + this.boolean = function () { + return !!faker.random.number(1) + } + + // TODO: have ability to return specific type of word? As in: noun, adjective, verb, etc + /** + * word + * + * @method faker.random.word + * @param {string} type + */ + this.word = function randomWord (type) { + + var wordMethods = [ + 'commerce.department', + 'commerce.productName', + 'commerce.productAdjective', + 'commerce.productMaterial', + 'commerce.product', + 'commerce.color', + + 'company.catchPhraseAdjective', + 'company.catchPhraseDescriptor', + 'company.catchPhraseNoun', + 'company.bsAdjective', + 'company.bsBuzz', + 'company.bsNoun', + 'address.streetSuffix', + 'address.county', + 'address.country', + 'address.state', + + 'finance.accountName', + 'finance.transactionType', + 'finance.currencyName', + + 'hacker.noun', + 'hacker.verb', + 'hacker.adjective', + 'hacker.ingverb', + 'hacker.abbreviation', + + 'name.jobDescriptor', + 'name.jobArea', + 'name.jobType']; + + // randomly pick from the many faker methods that can generate words + var randomWordMethod = faker.random.arrayElement(wordMethods); + return faker.fake('{{' + randomWordMethod + '}}'); + + } + + /** + * randomWords + * + * @method faker.random.words + * @param {number} count defaults to a random value between 1 and 3 + */ + this.words = function randomWords (count) { + var words = []; + if (typeof count === "undefined") { + count = faker.random.number({min:1, max: 3}); + } + for (var i = 0; i>> i) & 0x1){ + sum = addition32(sum, unsigned32(n2 << i)); + } + } + return sum; + } + + /* initializes mt[N] with a seed */ + //c//void init_genrand(unsigned long s) + this.init_genrand = function (s) + { + //c//mt[0]= s & 0xffffffff; + mt[0]= unsigned32(s & 0xffffffff); + for (mti=1; mti> 30)) + mti); + addition32(multiplication32(1812433253, unsigned32(mt[mti-1] ^ (mt[mti-1] >>> 30))), mti); + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array mt[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + //c//mt[mti] &= 0xffffffff; + mt[mti] = unsigned32(mt[mti] & 0xffffffff); + /* for >32 bit machines */ + } + } + + /* initialize by an array with array-length */ + /* init_key is the array for initializing keys */ + /* key_length is its length */ + /* slight change for C++, 2004/2/26 */ + //c//void init_by_array(unsigned long init_key[], int key_length) + this.init_by_array = function (init_key, key_length) + { + //c//int i, j, k; + var i, j, k; + //c//init_genrand(19650218); + this.init_genrand(19650218); + i=1; j=0; + k = (N>key_length ? N : key_length); + for (; k; k--) { + //c//mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525)) + //c// + init_key[j] + j; /* non linear */ + mt[i] = addition32(addition32(unsigned32(mt[i] ^ multiplication32(unsigned32(mt[i-1] ^ (mt[i-1] >>> 30)), 1664525)), init_key[j]), j); + mt[i] = + //c//mt[i] &= 0xffffffff; /* for WORDSIZE > 32 machines */ + unsigned32(mt[i] & 0xffffffff); + i++; j++; + if (i>=N) { mt[0] = mt[N-1]; i=1; } + if (j>=key_length) j=0; + } + for (k=N-1; k; k--) { + //c//mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941)) + //c//- i; /* non linear */ + mt[i] = subtraction32(unsigned32((dbg=mt[i]) ^ multiplication32(unsigned32(mt[i-1] ^ (mt[i-1] >>> 30)), 1566083941)), i); + //c//mt[i] &= 0xffffffff; /* for WORDSIZE > 32 machines */ + mt[i] = unsigned32(mt[i] & 0xffffffff); + i++; + if (i>=N) { mt[0] = mt[N-1]; i=1; } + } + mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */ + } + + /* moved outside of genrand_int32() by jwatte 2010-11-17; generate less garbage */ + var mag01 = [0x0, MATRIX_A]; + + /* generates a random number on [0,0xffffffff]-interval */ + //c//unsigned long genrand_int32(void) + this.genrand_int32 = function () + { + //c//unsigned long y; + //c//static unsigned long mag01[2]={0x0UL, MATRIX_A}; + var y; + /* mag01[x] = x * MATRIX_A for x=0,1 */ + + if (mti >= N) { /* generate N words at one time */ + //c//int kk; + var kk; + + if (mti == N+1) /* if init_genrand() has not been called, */ + //c//init_genrand(5489); /* a default initial seed is used */ + this.init_genrand(5489); /* a default initial seed is used */ + + for (kk=0;kk> 1) ^ mag01[y & 0x1]; + y = unsigned32((mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK)); + mt[kk] = unsigned32(mt[kk+M] ^ (y >>> 1) ^ mag01[y & 0x1]); + } + for (;kk> 1) ^ mag01[y & 0x1]; + y = unsigned32((mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK)); + mt[kk] = unsigned32(mt[kk+(M-N)] ^ (y >>> 1) ^ mag01[y & 0x1]); + } + //c//y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK); + //c//mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1]; + y = unsigned32((mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK)); + mt[N-1] = unsigned32(mt[M-1] ^ (y >>> 1) ^ mag01[y & 0x1]); + mti = 0; + } + + y = mt[mti++]; + + /* Tempering */ + //c//y ^= (y >> 11); + //c//y ^= (y << 7) & 0x9d2c5680; + //c//y ^= (y << 15) & 0xefc60000; + //c//y ^= (y >> 18); + y = unsigned32(y ^ (y >>> 11)); + y = unsigned32(y ^ ((y << 7) & 0x9d2c5680)); + y = unsigned32(y ^ ((y << 15) & 0xefc60000)); + y = unsigned32(y ^ (y >>> 18)); + + return y; + } + + /* generates a random number on [0,0x7fffffff]-interval */ + //c//long genrand_int31(void) + this.genrand_int31 = function () + { + //c//return (genrand_int32()>>1); + return (this.genrand_int32()>>>1); + } + + /* generates a random number on [0,1]-real-interval */ + //c//double genrand_real1(void) + this.genrand_real1 = function () + { + //c//return genrand_int32()*(1.0/4294967295.0); + return this.genrand_int32()*(1.0/4294967295.0); + /* divided by 2^32-1 */ + } + + /* generates a random number on [0,1)-real-interval */ + //c//double genrand_real2(void) + this.genrand_real2 = function () + { + //c//return genrand_int32()*(1.0/4294967296.0); + return this.genrand_int32()*(1.0/4294967296.0); + /* divided by 2^32 */ + } + + /* generates a random number on (0,1)-real-interval */ + //c//double genrand_real3(void) + this.genrand_real3 = function () + { + //c//return ((genrand_int32()) + 0.5)*(1.0/4294967296.0); + return ((this.genrand_int32()) + 0.5)*(1.0/4294967296.0); + /* divided by 2^32 */ + } + + /* generates a random number on [0,1) with 53-bit resolution*/ + //c//double genrand_res53(void) + this.genrand_res53 = function () + { + //c//unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6; + var a=this.genrand_int32()>>>5, b=this.genrand_int32()>>>6; + return(a*67108864.0+b)*(1.0/9007199254740992.0); + } + /* These real versions are due to Isaku Wada, 2002/01/09 added */ +} + +// Exports: Public API + +// Export the twister class +exports.MersenneTwister19937 = MersenneTwister19937; + +// Export a simplified function to generate random numbers +var gen = new MersenneTwister19937; +gen.init_genrand((new Date).getTime() % 1000000000); + +// Added max, min range functionality, Marak Squires Sept 11 2014 +exports.rand = function(max, min) { + if (max === undefined) + { + min = 0; + max = 32768; + } + return Math.floor(gen.genrand_real2() * (max - min) + min); +} +exports.seed = function(S) { + if (typeof(S) != 'number') + { + throw new Error("seed(S) must take numeric argument; is " + typeof(S)); + } + gen.init_genrand(S); +} +exports.seed_array = function(A) { + if (typeof(A) != 'object') + { + throw new Error("seed_array(A) must take array of numbers; is " + typeof(A)); + } + gen.init_by_array(A); +} + +},{}],1103:[function(require,module,exports){ +/* + +Copyright (c) 2012-2014 Jeffrey Mealo + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and +to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +------------------------------------------------------------------------------------------------------------------------ + +Based loosely on Luka Pusic's PHP Script: http://360percents.com/posts/php-random-user-agent-generator/ + +The license for that script is as follows: + +"THE BEER-WARE LICENSE" (Revision 42): + + wrote this file. As long as you retain this notice you can do whatever you want with this stuff. +If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Luka Pusic +*/ + +function rnd(a, b) { + //calling rnd() with no arguments is identical to rnd(0, 100) + a = a || 0; + b = b || 100; + + if (typeof b === 'number' && typeof a === 'number') { + //rnd(int min, int max) returns integer between min, max + return (function (min, max) { + if (min > max) { + throw new RangeError('expected min <= max; got min = ' + min + ', max = ' + max); + } + return Math.floor(Math.random() * (max - min + 1)) + min; + }(a, b)); + } + + if (Object.prototype.toString.call(a) === "[object Array]") { + //returns a random element from array (a), even weighting + return a[Math.floor(Math.random() * a.length)]; + } + + if (a && typeof a === 'object') { + //returns a random key from the passed object; keys are weighted by the decimal probability in their value + return (function (obj) { + var rand = rnd(0, 100) / 100, min = 0, max = 0, key, return_val; + + for (key in obj) { + if (obj.hasOwnProperty(key)) { + max = obj[key] + min; + return_val = key; + if (rand >= min && rand <= max) { + break; + } + min = min + obj[key]; + } + } + + return return_val; + }(a)); + } + + throw new TypeError('Invalid arguments passed to rnd. (' + (b ? a + ', ' + b : a) + ')'); +} + +function randomLang() { + return rnd(['AB', 'AF', 'AN', 'AR', 'AS', 'AZ', 'BE', 'BG', 'BN', 'BO', 'BR', 'BS', 'CA', 'CE', 'CO', 'CS', + 'CU', 'CY', 'DA', 'DE', 'EL', 'EN', 'EO', 'ES', 'ET', 'EU', 'FA', 'FI', 'FJ', 'FO', 'FR', 'FY', + 'GA', 'GD', 'GL', 'GV', 'HE', 'HI', 'HR', 'HT', 'HU', 'HY', 'ID', 'IS', 'IT', 'JA', 'JV', 'KA', + 'KG', 'KO', 'KU', 'KW', 'KY', 'LA', 'LB', 'LI', 'LN', 'LT', 'LV', 'MG', 'MK', 'MN', 'MO', 'MS', + 'MT', 'MY', 'NB', 'NE', 'NL', 'NN', 'NO', 'OC', 'PL', 'PT', 'RM', 'RO', 'RU', 'SC', 'SE', 'SK', + 'SL', 'SO', 'SQ', 'SR', 'SV', 'SW', 'TK', 'TR', 'TY', 'UK', 'UR', 'UZ', 'VI', 'VO', 'YI', 'ZH']); +} + +function randomBrowserAndOS() { + var browser = rnd({ + chrome: .45132810566, + iexplorer: .27477061836, + firefox: .19384170608, + safari: .06186781118, + opera: .01574236955 + }), + os = { + chrome: {win: .89, mac: .09 , lin: .02}, + firefox: {win: .83, mac: .16, lin: .01}, + opera: {win: .91, mac: .03 , lin: .06}, + safari: {win: .04 , mac: .96 }, + iexplorer: ['win'] + }; + + return [browser, rnd(os[browser])]; +} + +function randomProc(arch) { + var procs = { + lin:['i686', 'x86_64'], + mac: {'Intel' : .48, 'PPC': .01, 'U; Intel':.48, 'U; PPC' :.01}, + win:['', 'WOW64', 'Win64; x64'] + }; + return rnd(procs[arch]); +} + +function randomRevision(dots) { + var return_val = ''; + //generate a random revision + //dots = 2 returns .x.y where x & y are between 0 and 9 + for (var x = 0; x < dots; x++) { + return_val += '.' + rnd(0, 9); + } + return return_val; +} + +var version_string = { + net: function () { + return [rnd(1, 4), rnd(0, 9), rnd(10000, 99999), rnd(0, 9)].join('.'); + }, + nt: function () { + return rnd(5, 6) + '.' + rnd(0, 3); + }, + ie: function () { + return rnd(7, 11); + }, + trident: function () { + return rnd(3, 7) + '.' + rnd(0, 1); + }, + osx: function (delim) { + return [10, rnd(5, 10), rnd(0, 9)].join(delim || '.'); + }, + chrome: function () { + return [rnd(13, 39), 0, rnd(800, 899), 0].join('.'); + }, + presto: function () { + return '2.9.' + rnd(160, 190); + }, + presto2: function () { + return rnd(10, 12) + '.00'; + }, + safari: function () { + return rnd(531, 538) + '.' + rnd(0, 2) + '.' + rnd(0,2); + } +}; + +var browser = { + firefox: function firefox(arch) { + //https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference + var firefox_ver = rnd(5, 15) + randomRevision(2), + gecko_ver = 'Gecko/20100101 Firefox/' + firefox_ver, + proc = randomProc(arch), + os_ver = (arch === 'win') ? '(Windows NT ' + version_string.nt() + ((proc) ? '; ' + proc : '') + : (arch === 'mac') ? '(Macintosh; ' + proc + ' Mac OS X ' + version_string.osx() + : '(X11; Linux ' + proc; + + return 'Mozilla/5.0 ' + os_ver + '; rv:' + firefox_ver.slice(0, -2) + ') ' + gecko_ver; + }, + + iexplorer: function iexplorer() { + var ver = version_string.ie(); + + if (ver >= 11) { + //http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx + return 'Mozilla/5.0 (Windows NT 6.' + rnd(1,3) + '; Trident/7.0; ' + rnd(['Touch; ', '']) + 'rv:11.0) like Gecko'; + } + + //http://msdn.microsoft.com/en-us/library/ie/ms537503(v=vs.85).aspx + return 'Mozilla/5.0 (compatible; MSIE ' + ver + '.0; Windows NT ' + version_string.nt() + '; Trident/' + + version_string.trident() + ((rnd(0, 1) === 1) ? '; .NET CLR ' + version_string.net() : '') + ')'; + }, + + opera: function opera(arch) { + //http://www.opera.com/docs/history/ + var presto_ver = ' Presto/' + version_string.presto() + ' Version/' + version_string.presto2() + ')', + os_ver = (arch === 'win') ? '(Windows NT ' + version_string.nt() + '; U; ' + randomLang() + presto_ver + : (arch === 'lin') ? '(X11; Linux ' + randomProc(arch) + '; U; ' + randomLang() + presto_ver + : '(Macintosh; Intel Mac OS X ' + version_string.osx() + ' U; ' + randomLang() + ' Presto/' + + version_string.presto() + ' Version/' + version_string.presto2() + ')'; + + return 'Opera/' + rnd(9, 14) + '.' + rnd(0, 99) + ' ' + os_ver; + }, + + safari: function safari(arch) { + var safari = version_string.safari(), + ver = rnd(4, 7) + '.' + rnd(0,1) + '.' + rnd(0,10), + os_ver = (arch === 'mac') ? '(Macintosh; ' + randomProc('mac') + ' Mac OS X '+ version_string.osx('_') + ' rv:' + rnd(2, 6) + '.0; '+ randomLang() + ') ' + : '(Windows; U; Windows NT ' + version_string.nt() + ')'; + + return 'Mozilla/5.0 ' + os_ver + 'AppleWebKit/' + safari + ' (KHTML, like Gecko) Version/' + ver + ' Safari/' + safari; + }, + + chrome: function chrome(arch) { + var safari = version_string.safari(), + os_ver = (arch === 'mac') ? '(Macintosh; ' + randomProc('mac') + ' Mac OS X ' + version_string.osx('_') + ') ' + : (arch === 'win') ? '(Windows; U; Windows NT ' + version_string.nt() + ')' + : '(X11; Linux ' + randomProc(arch); + + return 'Mozilla/5.0 ' + os_ver + ' AppleWebKit/' + safari + ' (KHTML, like Gecko) Chrome/' + version_string.chrome() + ' Safari/' + safari; + } +}; + +exports.generate = function generate() { + var random = randomBrowserAndOS(); + return browser[random[0]](random[1]); +}; + +},{}],1104:[function(require,module,exports){ +module.exports = attributeToProperty + +var transform = { + 'class': 'className', + 'for': 'htmlFor', + 'http-equiv': 'httpEquiv' +} + +function attributeToProperty (h) { + return function (tagName, attrs, children) { + for (var attr in attrs) { + if (attr in transform) { + attrs[transform[attr]] = attrs[attr] + delete attrs[attr] + } + } + return h(tagName, attrs, children) + } +} + +},{}],1105:[function(require,module,exports){ +var attrToProp = require('hyperscript-attribute-to-property') + +var VAR = 0, TEXT = 1, OPEN = 2, CLOSE = 3, ATTR = 4 +var ATTR_KEY = 5, ATTR_KEY_W = 6 +var ATTR_VALUE_W = 7, ATTR_VALUE = 8 +var ATTR_VALUE_SQ = 9, ATTR_VALUE_DQ = 10 +var ATTR_EQ = 11, ATTR_BREAK = 12 +var COMMENT = 13 + +module.exports = function (h, opts) { + if (!opts) opts = {} + var concat = opts.concat || function (a, b) { + return String(a) + String(b) + } + if (opts.attrToProp !== false) { + h = attrToProp(h) + } + + return function (strings) { + var state = TEXT, reg = '' + var arglen = arguments.length + var parts = [] + + for (var i = 0; i < strings.length; i++) { + if (i < arglen - 1) { + var arg = arguments[i+1] + var p = parse(strings[i]) + var xstate = state + if (xstate === ATTR_VALUE_DQ) xstate = ATTR_VALUE + if (xstate === ATTR_VALUE_SQ) xstate = ATTR_VALUE + if (xstate === ATTR_VALUE_W) xstate = ATTR_VALUE + if (xstate === ATTR) xstate = ATTR_KEY + if (xstate === OPEN) { + if (reg === '/') { + p.push([ OPEN, '/', arg ]) + reg = '' + } else { + p.push([ OPEN, arg ]) + } + } else if (xstate === COMMENT && opts.comments) { + reg += String(arg) + } else if (xstate !== COMMENT) { + p.push([ VAR, xstate, arg ]) + } + parts.push.apply(parts, p) + } else parts.push.apply(parts, parse(strings[i])) + } + + var tree = [null,{},[]] + var stack = [[tree,-1]] + for (var i = 0; i < parts.length; i++) { + var cur = stack[stack.length-1][0] + var p = parts[i], s = p[0] + if (s === OPEN && /^\//.test(p[1])) { + var ix = stack[stack.length-1][1] + if (stack.length > 1) { + stack.pop() + stack[stack.length-1][0][2][ix] = h( + cur[0], cur[1], cur[2].length ? cur[2] : undefined + ) + } + } else if (s === OPEN) { + var c = [p[1],{},[]] + cur[2].push(c) + stack.push([c,cur[2].length-1]) + } else if (s === ATTR_KEY || (s === VAR && p[1] === ATTR_KEY)) { + var key = '' + var copyKey + for (; i < parts.length; i++) { + if (parts[i][0] === ATTR_KEY) { + key = concat(key, parts[i][1]) + } else if (parts[i][0] === VAR && parts[i][1] === ATTR_KEY) { + if (typeof parts[i][2] === 'object' && !key) { + for (copyKey in parts[i][2]) { + if (parts[i][2].hasOwnProperty(copyKey) && !cur[1][copyKey]) { + cur[1][copyKey] = parts[i][2][copyKey] + } + } + } else { + key = concat(key, parts[i][2]) + } + } else break + } + if (parts[i][0] === ATTR_EQ) i++ + var j = i + for (; i < parts.length; i++) { + if (parts[i][0] === ATTR_VALUE || parts[i][0] === ATTR_KEY) { + if (!cur[1][key]) cur[1][key] = strfn(parts[i][1]) + else parts[i][1]==="" || (cur[1][key] = concat(cur[1][key], parts[i][1])); + } else if (parts[i][0] === VAR + && (parts[i][1] === ATTR_VALUE || parts[i][1] === ATTR_KEY)) { + if (!cur[1][key]) cur[1][key] = strfn(parts[i][2]) + else parts[i][2]==="" || (cur[1][key] = concat(cur[1][key], parts[i][2])); + } else { + if (key.length && !cur[1][key] && i === j + && (parts[i][0] === CLOSE || parts[i][0] === ATTR_BREAK)) { + // https://html.spec.whatwg.org/multipage/infrastructure.html#boolean-attributes + // empty string is falsy, not well behaved value in browser + cur[1][key] = key.toLowerCase() + } + if (parts[i][0] === CLOSE) { + i-- + } + break + } + } + } else if (s === ATTR_KEY) { + cur[1][p[1]] = true + } else if (s === VAR && p[1] === ATTR_KEY) { + cur[1][p[2]] = true + } else if (s === CLOSE) { + if (selfClosing(cur[0]) && stack.length) { + var ix = stack[stack.length-1][1] + stack.pop() + stack[stack.length-1][0][2][ix] = h( + cur[0], cur[1], cur[2].length ? cur[2] : undefined + ) + } + } else if (s === VAR && p[1] === TEXT) { + if (p[2] === undefined || p[2] === null) p[2] = '' + else if (!p[2]) p[2] = concat('', p[2]) + if (Array.isArray(p[2][0])) { + cur[2].push.apply(cur[2], p[2]) + } else { + cur[2].push(p[2]) + } + } else if (s === TEXT) { + cur[2].push(p[1]) + } else if (s === ATTR_EQ || s === ATTR_BREAK) { + // no-op + } else { + throw new Error('unhandled: ' + s) + } + } + + if (tree[2].length > 1 && /^\s*$/.test(tree[2][0])) { + tree[2].shift() + } + + if (tree[2].length > 2 + || (tree[2].length === 2 && /\S/.test(tree[2][1]))) { + if (opts.createFragment) return opts.createFragment(tree[2]) + throw new Error( + 'multiple root elements must be wrapped in an enclosing tag' + ) + } + if (Array.isArray(tree[2][0]) && typeof tree[2][0][0] === 'string' + && Array.isArray(tree[2][0][2])) { + tree[2][0] = h(tree[2][0][0], tree[2][0][1], tree[2][0][2]) + } + return tree[2][0] + + function parse (str) { + var res = [] + if (state === ATTR_VALUE_W) state = ATTR + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i) + if (state === TEXT && c === '<') { + if (reg.length) res.push([TEXT, reg]) + reg = '' + state = OPEN + } else if (c === '>' && !quot(state) && state !== COMMENT) { + if (state === OPEN && reg.length) { + res.push([OPEN,reg]) + } else if (state === ATTR_KEY) { + res.push([ATTR_KEY,reg]) + } else if (state === ATTR_VALUE && reg.length) { + res.push([ATTR_VALUE,reg]) + } + res.push([CLOSE]) + reg = '' + state = TEXT + } else if (state === COMMENT && /-$/.test(reg) && c === '-') { + if (opts.comments) { + res.push([ATTR_VALUE,reg.substr(0, reg.length - 1)]) + } + reg = '' + state = TEXT + } else if (state === OPEN && /^!--$/.test(reg)) { + if (opts.comments) { + res.push([OPEN, reg],[ATTR_KEY,'comment'],[ATTR_EQ]) + } + reg = c + state = COMMENT + } else if (state === TEXT || state === COMMENT) { + reg += c + } else if (state === OPEN && c === '/' && reg.length) { + // no-op, self closing tag without a space
+ } else if (state === OPEN && /\s/.test(c)) { + if (reg.length) { + res.push([OPEN, reg]) + } + reg = '' + state = ATTR + } else if (state === OPEN) { + reg += c + } else if (state === ATTR && /[^\s"'=/]/.test(c)) { + state = ATTR_KEY + reg = c + } else if (state === ATTR && /\s/.test(c)) { + if (reg.length) res.push([ATTR_KEY,reg]) + res.push([ATTR_BREAK]) + } else if (state === ATTR_KEY && /\s/.test(c)) { + res.push([ATTR_KEY,reg]) + reg = '' + state = ATTR_KEY_W + } else if (state === ATTR_KEY && c === '=') { + res.push([ATTR_KEY,reg],[ATTR_EQ]) + reg = '' + state = ATTR_VALUE_W + } else if (state === ATTR_KEY) { + reg += c + } else if ((state === ATTR_KEY_W || state === ATTR) && c === '=') { + res.push([ATTR_EQ]) + state = ATTR_VALUE_W + } else if ((state === ATTR_KEY_W || state === ATTR) && !/\s/.test(c)) { + res.push([ATTR_BREAK]) + if (/[\w-]/.test(c)) { + reg += c + state = ATTR_KEY + } else state = ATTR + } else if (state === ATTR_VALUE_W && c === '"') { + state = ATTR_VALUE_DQ + } else if (state === ATTR_VALUE_W && c === "'") { + state = ATTR_VALUE_SQ + } else if (state === ATTR_VALUE_DQ && c === '"') { + res.push([ATTR_VALUE,reg],[ATTR_BREAK]) + reg = '' + state = ATTR + } else if (state === ATTR_VALUE_SQ && c === "'") { + res.push([ATTR_VALUE,reg],[ATTR_BREAK]) + reg = '' + state = ATTR + } else if (state === ATTR_VALUE_W && !/\s/.test(c)) { + state = ATTR_VALUE + i-- + } else if (state === ATTR_VALUE && /\s/.test(c)) { + res.push([ATTR_VALUE,reg],[ATTR_BREAK]) + reg = '' + state = ATTR + } else if (state === ATTR_VALUE || state === ATTR_VALUE_SQ + || state === ATTR_VALUE_DQ) { + reg += c + } + } + if (state === TEXT && reg.length) { + res.push([TEXT,reg]) + reg = '' + } else if (state === ATTR_VALUE && reg.length) { + res.push([ATTR_VALUE,reg]) + reg = '' + } else if (state === ATTR_VALUE_DQ && reg.length) { + res.push([ATTR_VALUE,reg]) + reg = '' + } else if (state === ATTR_VALUE_SQ && reg.length) { + res.push([ATTR_VALUE,reg]) + reg = '' + } else if (state === ATTR_KEY) { + res.push([ATTR_KEY,reg]) + reg = '' + } + return res + } + } + + function strfn (x) { + if (typeof x === 'function') return x + else if (typeof x === 'string') return x + else if (x && typeof x === 'object') return x + else if (x === null || x === undefined) return x + else return concat('', x) + } +} + +function quot (state) { + return state === ATTR_VALUE_SQ || state === ATTR_VALUE_DQ +} + +var closeRE = RegExp('^(' + [ + 'area', 'base', 'basefont', 'bgsound', 'br', 'col', 'command', 'embed', + 'frame', 'hr', 'img', 'input', 'isindex', 'keygen', 'link', 'meta', 'param', + 'source', 'track', 'wbr', '!--', + // SVG TAGS + 'animate', 'animateTransform', 'circle', 'cursor', 'desc', 'ellipse', + 'feBlend', 'feColorMatrix', 'feComposite', + 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', + 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', + 'feGaussianBlur', 'feImage', 'feMergeNode', 'feMorphology', + 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', + 'feTurbulence', 'font-face-format', 'font-face-name', 'font-face-uri', + 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'missing-glyph', 'mpath', + 'path', 'polygon', 'polyline', 'rect', 'set', 'stop', 'tref', 'use', 'view', + 'vkern' +].join('|') + ')(?:[\.#][a-zA-Z0-9\u007F-\uFFFF_:-]+)*$') +function selfClosing (tag) { return closeRE.test(tag) } + +},{"hyperscript-attribute-to-property":1104}],1106:[function(require,module,exports){ +var inserted = {}; + +module.exports = function (css, options) { + if (inserted[css]) return; + inserted[css] = true; + + var elem = document.createElement('style'); + elem.setAttribute('type', 'text/css'); + + if ('textContent' in elem) { + elem.textContent = css; + } else { + elem.styleSheet.cssText = css; + } + + var head = document.getElementsByTagName('head')[0]; + if (options && options.prepend) { + head.insertBefore(elem, head.childNodes[0]); + } else { + head.appendChild(elem); + } +}; + +},{}],1107:[function(require,module,exports){ +(function (global){ +/** + * @license + * Lodash + * Copyright JS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.11'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g, + reTrimStart = /^\s+/, + reTrimEnd = /\s+$/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + + return result; + } + + if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + + return result; + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + if (isObject(srcValue)) { + stack || (stack = new Stack); + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + var index = -1; + iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array == null ? 0 : array.length, + valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Gets the value at `key`, unless `key` is "__proto__". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': ' + diff --git a/package.json b/package.json new file mode 100644 index 0000000..b62ae66 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "play-skilltree", + "version": "0.0.0", + "description": "growing skilltree of workshops and codecamps", + "main": "src/play-skilltree.js", + "scripts": { + "start": "budo demo/demo.js:bundle.js --dir . --title $npm_package_name --force-default-index --ssl --live --open", + "build": "browserify demo/demo.js -o bundle.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ethereum-play/play-skilltree.git" + }, + "keywords": [ + "workshop", + "workshops", + "workshopping", + "codecamp", + "codecamps", + "skiltree", + "curriculum", + "course", + "courses", + "lesson", + "lessons" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/ethereum-play/play-skilltree/issues" + }, + "homepage": "https://github.com/ethereum-play/play-skilltree#readme", + "devDependencies": { + "budo": "^11.6.2" + }, + "dependencies": { + "bel": "^6.0.0", + "csjs-inject": "^1.0.1", + "skilltree.js": "^0.5.0", + "url-registry": "0.0.2" + } +} diff --git a/src/node_modules/crawl-workshops.js b/src/node_modules/crawl-workshops.js new file mode 100644 index 0000000..f9e6c62 --- /dev/null +++ b/src/node_modules/crawl-workshops.js @@ -0,0 +1,90 @@ +const cors = 'https://cors-anywhere.herokuapp.com/' +const absoluteURLregex = /(?:^[a-z][a-z0-9+.-]*:|\/\/)/ + +function get_url (url) { + const isAbsoluteURL = absoluteURLregex.test(url) + if (isAbsoluteURL) { + const islocalhost = (url.includes('//localhost') + || url.includes('//127.0.0.1') || url.includes('//0.0.0.0') + || url.includes('//10.0.0') || url.includes('//192.168')) + const sameorigin = new URL(url).origin === location.origin + return (islocalhost || sameorigin) ? url : cors + url + } + return url +} +async function grab (workshop_url) { + var [workshop_url, workshopjson_url] = workshop2json(workshop_url) + var workshopjson = localStorage[workshopjson_url] // @TODO: replace by indexdb!!! + if (workshopjson) return JSON.parse(workshopjson) + else { + var workshopjson = await fetch(get_url(workshopjson_url)).then(x => x.json()) + workshopjson.ID = workshop_url + localStorage[workshopjson_url] = JSON.stringify(workshopjson) + return workshopjson + } +} + +module.exports = crawler + +async function crawler (workshops = []) { + const jsons = [] + for (var i = 0, len = workshops.length; i < len; i++) { + const workshopjson = await grab(workshops[i]) + jsons.push(workshopjson) + } + var all = [].concat(...await Promise.all(jsons.map(crawlworkshop))) + // @TODO: probably removing duplicates is wrong, because: + return removeDuplicates(all, "url") +} + +function removeDuplicates (originalArray, prop) { + var newArray = [], lookupObject = {} + for (var i in originalArray) lookupObject[originalArray[i][prop]] = originalArray[i] + for (i in lookupObject) newArray.push(lookupObject[i]) + return newArray +} + +function workshop2json (url) { + var x = url + x = x.split('?')[0] + if (!x.includes('://')) x = 'https://' + x + if (!x.endsWith('.html') && !x.endsWith('/')) x = x + '/' + var workshop_url = new URL(x).href + console.log(workshop_url) + var workshopjson_url = new URL('./workshop.json', workshop_url).href + return [workshop_url, workshopjson_url] +} +async function crawlworkshop (data) { + // @TODO: add robust error handling - e.g. if links are broken + const needs = [] + const unlocks = [] + for (var i = 0, len = data.needs.length; i < len; i++) { + var workshop_url = data.needs[i] + const workshopjson = await grab(workshop_url) + needs.push({ + url: workshopjson.ID, + parentIds: [], + id: workshopjson.ID, + title: workshopjson.title, + // icon: get_url(workshop.icon) + }) + } + for (var i = 0, len = data.unlocks.length; i < len; i++) { + var workshop_url = data.unlocks[i] + const workshopjson = await grab(workshop_url) + unlocks.push({ + url: workshopjson.ID, + parentIds: [data.ID], + id: workshopjson.ID, + title: workshopjson.title, + // icon: get_url(workshop.icon) + }) + } + return [{ + url: data.ID, + parentIds: [...needs].map(x => x.id), + id: data.ID, + title: data.title, + // icon: get_url(data.icon) + }, ...needs, ...unlocks] +} diff --git a/src/play-skilltree.js b/src/play-skilltree.js new file mode 100644 index 0000000..907e0c3 --- /dev/null +++ b/src/play-skilltree.js @@ -0,0 +1,35 @@ +const skilltree = require('skilltree.js') +const bel = require('bel') +const csjs = require('csjs-inject') +const registry = require('url-registry') + +const crawler = require('crawl-workshops') + +var db + +module.exports = playSkilltrees + +async function playSkilltrees (data /*array of workshop URLs*/) { + const element = bel`
` + try { + db = await getDB() + } catch (e) { console.error('something went wrong') } + setTimeout(async () => { + const _data = data || await db.list() + const dag = typeof _data[0] === 'string' ? + await crawler(_data /* @NOTE array of workshop URLs */) + : _data + skilltree(element, dag) + }, 0) + return element +} +const getDB = async () => db || await registry(`r70vo-1554993396`, () => true) +const css = csjs` +.skilltree { + position: relative; + display: flex; + justify-content: center; + align-items: center; + height: 100%; + width: 100%; +}`