diff --git a/application/config/version.php b/application/config/version.php index c91eb92fc6b..75131a5e69b 100644 --- a/application/config/version.php +++ b/application/config/version.php @@ -11,10 +11,10 @@ * See COPYRIGHT.php for copyright notices and details. */ -$config['versionnumber'] = '4.1.12'; +$config['versionnumber'] = '4.1.13'; $config['dbversionnumber'] = 425; $config['buildnumber'] = ''; $config['updatable'] = true; $config['templateapiversion'] = 3; -$config['assetsversionnumber'] = '30127'; +$config['assetsversionnumber'] = '30128'; return $config; diff --git a/application/controllers/admin/LimeSurveyFileManager.php b/application/controllers/admin/LimeSurveyFileManager.php index 17c6b9d0607..38fe1a76519 100644 --- a/application/controllers/admin/LimeSurveyFileManager.php +++ b/application/controllers/admin/LimeSurveyFileManager.php @@ -1,8 +1,5 @@ + */ + private $globalDirectoriesMap = [ + 'generalfiles' => 'upload' . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . 'survey' . DIRECTORY_SEPARATOR . 'generalfiles', + 'global' => 'upload' . DIRECTORY_SEPARATOR . 'global', ]; - public function getAllowedFileExtensions() { + /** + * @return string + */ + public function getAllowedFileExtensions() + { return Yii::app()->getConfig('allowedfileuploads'); } @@ -55,8 +64,6 @@ public function getAllowedFileExtensions() { */ public function index($surveyid = null) { - $possibleFolders = $this->_collectFolderList($surveyid); - $aTranslate = [ 'File management' => gT('File management'), 'Upload' => gT('Upload'), @@ -82,13 +89,12 @@ public function index($surveyid = null) 'Copy file' => gT('Copy file'), 'Move file' => gT('Move file'), 'Allowed file extensions' => gT('Allowed file extensions'), - 'File formats' => '.'.gT(implode(", .", $this->allowedFileExtensions)) + 'File formats' => '.'.gT(implode(", .", $this->allowedFileExtensions)) ]; Yii::app()->getClientScript()->registerPackage('filemanager'); $aData['jsData'] = [ 'surveyid' => $surveyid, - 'possibleFolders' => $possibleFolders, 'i10N' => $aTranslate, 'allowedFileTypes' => $this->allowedFileExtensions, 'baseUrl' => $this->getController()->createUrl('admin/filemanager', ['sa' => '']), @@ -107,17 +113,20 @@ public function index($surveyid = null) $this->_renderWrappedTemplate('SurveyFiles', $renderView, $aData); } + /** + * @param int|null $surveyid + * @return void + */ public function getFilesForSurvey($surveyid = null) { - $folders = $this->_collectCompleteFolderList($surveyid); + $folders = $this->collectCompleteFolderList($surveyid); $result = []; foreach ($folders as $folder) { - $result[$folder] = $this->_collectFileList($folder); + $result[$folder] = $this->collectFileList($folder); } - $this->_printJsonResponse($result); - return; + $this->printJsonResponse($result); } /** @@ -129,25 +138,34 @@ public function getFilesForSurvey($surveyid = null) */ public function getFileList($folder, $iSurveyId = null) { - $directory = $this->_checkFolder($folder, $iSurveyId); + // Get real folder name from alias. + if (in_array($folder, array_keys($this->globalDirectoriesMap))) { + $folder = $this->globalDirectoriesMap[$folder]; + } + + $directory = $this->checkFolder($folder, $iSurveyId); if ($directory === false) { $this->throwError(); return; } - $fileList = $this->_collectFileList($directory); + $fileList = $this->collectFileList($directory); - $this->_printJsonResponse($fileList); - return; + $this->printJsonResponse($fileList); } + /** + * Echo list of folders as JSON to VueJS. + * + * @param int $iSurveyId + * @return void + */ public function getFolderList($iSurveyId = null) { - $aAllowedFolders = $this->_collectRecursiveFolderList($iSurveyId); + $aAllowedFolders = $this->collectRecursiveFolderList($iSurveyId); - $this->_printJsonResponse($aAllowedFolders); - return; + $this->printJsonResponse($aAllowedFolders); } public function deleteFile() @@ -155,7 +173,7 @@ public function deleteFile() $iSurveyId = Yii::app()->request->getPost('surveyid'); $file = Yii::app()->request->getPost('file'); $folder = dirname($file['path']); - $checkDirectory = $this->_checkFolder($folder, $iSurveyId); + $checkDirectory = $this->checkFolder($folder, $iSurveyId); if ($checkDirectory === false) { $this->throwError(); @@ -166,7 +184,7 @@ public function deleteFile() //Throw exception if file does not exist if (!$this->checkTargetExists($realFilePath)) { - $this->_setError( + $this->setError( "FILE_NOT_EXISTING", gT("The file does not exist") ); @@ -174,13 +192,13 @@ public function deleteFile() } if (!unlink($realFilePath)) { - $this->_setError( + $this->setError( "DELETE_FILE_ERROR", gT("The file could not be deleted") ); $this->throwError(); } - $this->_printJsonResponse( + $this->printJsonResponse( [ 'success' => true, 'message' => sprintf(gT("File successfully deleted"), $file['shortName']), @@ -195,7 +213,7 @@ public function transitFiles() $files = Yii::app()->request->getPost('files'); $action = Yii::app()->request->getPost('action'); - $checkDirectory = $this->_checkFolder($folder, $iSurveyId); + $checkDirectory = $this->checkFolder($folder, $iSurveyId); foreach($files as $file) { $this->checkChangedFilename($file); @@ -214,7 +232,7 @@ public function transitFiles() if ($action == 'copy') { if (!copy($fileSource, $fileDestination)) { - $this->_setError( + $this->setError( 'COPY_FAILED', gT("Your file could not be copied") ); @@ -223,7 +241,7 @@ public function transitFiles() } } else if ($action == 'move') { if (!@rename($fileSource, $fileDestination)) { - $this->_setError( + $this->setError( 'MOVE_FAILED', gT("Your file could not be moved") ); @@ -234,7 +252,7 @@ public function transitFiles() } $successMessage = $action == 'copy' ? gT("Files successfully copied") : gT("Files successfully moved"); - $this->_printJsonResponse([ + $this->printJsonResponse([ 'success' => true, 'message' => $successMessage, ]); @@ -258,7 +276,7 @@ public function uploadFile() $folder = 'upload' . DIRECTORY_SEPARATOR . 'global'; } - $directory = $this->_checkFolder($folder, $iSurveyId); + $directory = $this->checkFolder($folder, $iSurveyId); if ($directory === false) { $this->throwError(); @@ -268,7 +286,7 @@ public function uploadFile() $debug[] = $_FILES; if ($_FILES['file']['error'] == 1 || $_FILES['file']['error'] == 2) { - $this->_setError( + $this->setError( 'MAX_FILESIZE_REACHED', sprintf(gT("Sorry, this file is too large. Only files up to %01.2f MB are allowed."), getMaximumFileUploadSize() / 1024 / 1024) ); @@ -281,8 +299,8 @@ public function uploadFile() // Naive fileextension test => needs proper evaluation - if ($this->_extensionAllowed($ext, 'upload') === false) { - $this->_setError( + if ($this->extensionAllowed($ext, 'upload') === false) { + $this->setError( 'FILETYPE_NOT_ALLOWED', gT("Sorry, this file type is not allowed. Please contact your administrator for a list of allowed filetypes.") ); @@ -309,7 +327,7 @@ public function uploadFile() $debug[] = $fullfilepath; if (!is_writable($destdir)) { - $this->_setError( + $this->setError( 'FILE_DESTINATION_UNWRITABLE', sprintf(gT("An error occurred uploading your file. The folder (%s) is not writable for the webserver."), $folder) ); @@ -324,7 +342,7 @@ public function uploadFile() $aExtractResult = $zip->extract(PCLZIP_OPT_PATH, $destdir, PCLZIP_CB_PRE_EXTRACT, 'resourceExtractFilter'); if ($aExtractResult === 0) { - $this->_setError( + $this->setError( 'FILE_NOT_A_VALID_ARCHIVE', gT("This file is not a valid ZIP file archive. Import failed.") ); @@ -341,7 +359,7 @@ public function uploadFile() $fullfilepath ) ) { - $this->_setError( + $this->setError( 'FILE_COULD NOT_BE_MOVED', sprintf(gT("An error occurred uploading your file. This may be caused by incorrect permissions for the target folder. (%s)"), $folder) ); @@ -355,7 +373,7 @@ public function uploadFile() - $this->_printJsonResponse( + $this->printJsonResponse( [ 'success' => true, 'message' => $message, @@ -366,26 +384,70 @@ public function uploadFile() } - public function downloadFiles() { + /** + * @return void + */ + public function downloadFiles() + { App()->loadLibrary('admin.pclzip'); - - $folder = basename(Yii::app()->request->getPost('folder', 'global')); - $files = Yii::app()->request->getPost('files'); - $tempdir = Yii::app()->getConfig('tempdir'); - $randomizedFileName = $folder.'_'.substr(md5(time()),3,13).'.zip'; - $zipfile = $tempdir.DIRECTORY_SEPARATOR.$randomizedFileName; - $arrayOfFiles = array_map( function($file){ return $file['path']; }, $files); - $archive = new PclZip($zipfile); - $checkFileCreate = $archive->create($arrayOfFiles, PCLZIP_OPT_REMOVE_ALL_PATH); + /** @var string|null */ + $files = Yii::app()->request->getPost('files'); + + if (empty($files)) { + // TODO: Fix message, "Please select at least one file to download". + return; + } + + // TODO: Check relative paths and abort. + + /** @var int */ + $surveyId = (int) Yii::app()->request->getPost('surveyId', 0); + + if ($surveyId !== 0) { + $filePaths = $this->getSurveyFilePaths($surveyId, $files); + } else { + // Folder is "global" or "generalfiles". + + /** @var string|null */ + $folderAlias = Yii::app()->request->getPost('folder'); + + if (empty($folderAlias)) { + // Internal error. + return; + } + + if (!in_array($folderAlias, array_keys($this->globalDirectoriesMap))) { + // Internal error or hack. + return; + } + + // Get real folder name from alias. + /** @var string */ + $folder = $this->globalDirectoriesMap[$folderAlias]; + + /** @var string[] */ + $filePaths = $this->getGlobalFilePaths($folder, $files); + } + + /** var string */ + $zipFilename = $this->getZipFilename(); + + $archive = new PclZip($zipFilename); + $checkFileCreate = $archive->create($filePaths, PCLZIP_OPT_REMOVE_ALL_PATH); + + if (!$checkFileCreate) { + $this->throwError('Could not create archive'); + } + $urlFormat = Yii::app()->getUrlManager()->getUrlFormat(); $getFileLink = Yii::app()->createUrl('admin/filemanager/sa/getZipFile'); - $_SESSION['__path'] = $zipfile; + $_SESSION['__path'] = $zipFilename; - $this->_printJsonResponse( + $this->printJsonResponse( [ 'success' => true, - 'message' => sprintf(gT("Files are ready for download in archive %s."), $randomizedFileName), + 'message' => sprintf(gT("Files are ready for download in archive %s."), $zipFilename), 'downloadLink' => $getFileLink , ] ); @@ -417,6 +479,79 @@ public function getZipFile() ############################ PRIVATE METHODS ############################ + /** + * Return list of survey files to download. + * Does NOT depend on paths from browser. + * Also checks permission for survey. + * + * @param int $surveyId + * @param string[] $files + * @return string[] + */ + private function getSurveyFilePaths(int $surveyId, array $files) + { + if (!Permission::model()->hasSurveyPermission($surveyId, 'surveycontent', 'read')) { + die('No permission'); + } + + /** @var string */ + $uploaddir = Yii::app()->getConfig('uploaddir')."/surveys/{$surveyId}/"; + + /** @var string[] */ + $filePaths = array_map( + function ($file) use ($uploaddir) { + // TODO: Filter shortname + $path = $uploaddir . $file['shortName']; + if (get_absolute_path($path) !== $path) { + throw new \Exception('Hacker attempt?'); + } + return $path; + }, + $files + ); + + return $filePaths; + } + + /** + * @param string $folder + * @param array $files + */ + private function getGlobalFilePaths($folder, array $files) + { + if (!Permission::model()->hasGlobalPermission('superadmin', 'read')) { + die('No permission'); + } + + /** @var string[] */ + $filePaths = array_map( + function ($file) use ($folder) { + // TODO: Filter shortname + $path = $folder . DIRECTORY_SEPARATOR . $file['shortName']; + if (get_absolute_path($path) !== $path) { + throw new \Exception('Hacker attempt?'); + } + return $path; + }, + $files + ); + + return $filePaths; + } + + /** + * Returns a random zip filename. + * + * @return string + */ + private function getZipFilename() + { + $randomizedFileName = substr(md5(time()), 3, 13).'.zip'; + $tempdir = Yii::app()->getConfig('tempdir'); + $zipFilename = $tempdir . DIRECTORY_SEPARATOR . $randomizedFileName; + return $zipFilename; + } + /** * Naive test for file extension * @TODO enhance this for file uploads @@ -424,9 +559,9 @@ public function getZipFile() * @param string $fileExtension * @return boolean */ - private function _extensionAllowed($fileExtension, $purpose = 'show') + private function extensionAllowed($fileExtension, $purpose = 'show') { - if($purpose == 'upload') { + if ($purpose == 'upload') { return in_array($fileExtension, $this->allowedFileExtensions) || $fileExtension == 'zip'; } @@ -440,10 +575,16 @@ private function checkTargetExists($fileDestination) return is_file($fileDestination); } - private function _checkFolder($sFolderPath, $iSurveyId = null) + /** + * TODO: Does too much? + * + * @param string $sFolderPath + * @param int|null $iSurveyId + * @return string + */ + private function checkFolder($sFolderPath, $iSurveyId = null) { - - $aAllowedFolders = $this->_collectCompleteFolderList($iSurveyId); + $aAllowedFolders = $this->collectCompleteFolderList($iSurveyId); $inInAllowedFolders = false; foreach ($aAllowedFolders as $folderName => $folderPath) { @@ -451,7 +592,7 @@ private function _checkFolder($sFolderPath, $iSurveyId = null) } if (!$inInAllowedFolders) { - $this->_setError('NO_PERMISSION', gT("You don't have permission to this folder"), null, [ + $this->setError('NO_PERMISSION', gT("You don't have permission to this folder"), null, [ "sFolderPath" => $sFolderPath, "aAllowedFolders" => $aAllowedFolders, ]); @@ -472,7 +613,7 @@ private function _checkFolder($sFolderPath, $iSurveyId = null) * @param int|null $iSurveyId * @return array list of files [filename => filepath] */ - private function _collectFileList($folderPath) + private function collectFileList($folderPath) { $directoryArray = array(); @@ -485,7 +626,9 @@ private function _collectFileList($folderPath) $finfo = finfo_open(FILEINFO_MIME_TYPE); foreach ($files as $file) { - if ($file == '.' || $file == '..') {continue;} + if ($file == '.' || $file == '..') { + continue; + } $fileRelativePath = $folderPath . DIRECTORY_SEPARATOR . $file; $fileRealpath = dirname(Yii::app()->basePath) . DIRECTORY_SEPARATOR . $fileRelativePath; @@ -494,9 +637,10 @@ private function _collectFileList($folderPath) if ($fileIsDirectoy) { continue; } else { - $fileExt = strtolower(pathinfo($fileRealpath, PATHINFO_EXTENSION)); - if (!$this->_extensionAllowed($fileExt)) {continue;} + if (!$this->extensionAllowed($fileExt)) { + continue; + } $iconClassArray = LsDefaultDataSets::fileTypeIcons(); $size = filesize($fileRealpath); @@ -529,22 +673,19 @@ private function _collectFileList($folderPath) } /** - * Creates an array of possible folders + * Creates an array of possible survey folders * * @param int|null $iSurveyId * @return array List of visible folders */ - private function _collectFolderList($iSurveyId = null) + private function getSurveyFolders($iSurveyId = null) { - $folders = $this->globalDirectories; - if ($iSurveyId != null) { $folders[] = 'upload' . DIRECTORY_SEPARATOR . 'surveys' . DIRECTORY_SEPARATOR . $iSurveyId; } else { $aSurveyIds = Yii::app()->db->createCommand()->select('sid')->from('{{surveys}}')->queryColumn(); foreach ($aSurveyIds as $itrtSsurveyId) { - if ( - Permission::model()->hasGlobalPermission('superadmin', 'read') + if (Permission::model()->hasGlobalPermission('superadmin', 'read') || Permission::model()->hasGlobalPermission('surveys', 'update') || Permission::model()->hasSurveyPermission($itrtSsurveyId, 'surveylocale', 'update') ) { @@ -563,28 +704,27 @@ private function _collectFolderList($iSurveyId = null) * @param int|null $iSurveyId * @return array List of visible folders */ - private function _collectCompleteFolderList($iSurveyId = null) + private function collectCompleteFolderList($iSurveyId = null) { $folders = $this->globalDirectories; if ($iSurveyId != null) { - $folders[] = 'upload' . DIRECTORY_SEPARATOR . 'surveys' . DIRECTORY_SEPARATOR . $iSurveyId; + $folders[$iSurveyId] = 'upload' . DIRECTORY_SEPARATOR . 'surveys' . DIRECTORY_SEPARATOR . $iSurveyId; } else { $aSurveyIds = Yii::app()->db->createCommand()->select('sid')->from('{{surveys}}')->queryColumn(); foreach ($aSurveyIds as $itrtSsurveyId) { - if ( - Permission::model()->hasGlobalPermission('superadmin', 'read') + if (Permission::model()->hasGlobalPermission('superadmin', 'read') || Permission::model()->hasGlobalPermission('surveys', 'update') || Permission::model()->hasSurveyPermission($itrtSsurveyId, 'surveylocale', 'update') ) { - $folders[] = 'upload' . DIRECTORY_SEPARATOR . 'surveys' . DIRECTORY_SEPARATOR . $itrtSsurveyId; + $folders[$itrtSsurveyId] = 'upload' . DIRECTORY_SEPARATOR . 'surveys' . DIRECTORY_SEPARATOR . $itrtSsurveyId; } } } $filelist = []; foreach ($folders as $folder) { - $this->__recursiveScandir($folder, $folders, $filelist); + $this->recursiveScandir($folder, $folders, $filelist); } return $folders; @@ -599,7 +739,7 @@ private function _collectCompleteFolderList($iSurveyId = null) * @param array !by reference! $filelist * @return void */ - private function __recursiveScandir($folder, &$folderlist, &$filelist) + private function recursiveScandir($folder, &$folderlist, &$filelist) { $realPath = dirname(Yii::app()->basePath) . DIRECTORY_SEPARATOR . $folder; if (!file_exists($realPath)) { @@ -608,7 +748,9 @@ private function __recursiveScandir($folder, &$folderlist, &$filelist) $scandirCurrent = scandir($realPath); foreach ($scandirCurrent as $fileDescriptor) { - if ($fileDescriptor == '.' || $fileDescriptor == '..') {continue;} + if ($fileDescriptor == '.' || $fileDescriptor == '..') { + continue; + } $childRelativePath = $folder . DIRECTORY_SEPARATOR . $fileDescriptor; $childRealPath = realpath(Yii::getPathOfAlias('basePath') . $childRelativePath); @@ -616,7 +758,7 @@ private function __recursiveScandir($folder, &$folderlist, &$filelist) if ($childIsDirectoy) { $folderlist[] = $childRelativePath; - $this->__recursiveScandir($childRelativePath, $folderlist, $filelist); + $this->recursiveScandir($childRelativePath, $folderlist, $filelist); } else { $filelist[] = $childRelativePath; } @@ -629,44 +771,48 @@ private function __recursiveScandir($folder, &$folderlist, &$filelist) * @param int|null $iSurveyId * @return array List of visible folders */ - private function _collectRecursiveFolderList($iSurveyId = null) + private function collectRecursiveFolderList($iSurveyId = null) { - $folders = $this->_collectFolderList($iSurveyId); - $folderList = []; - foreach ($folders as $folder) { - $folderList[] = $this->_composeFolderArray($folder); - } - return $folderList; + $folders = array_merge( + $this->globalDirectories, + $this->getSurveyFolders($iSurveyId) + ); + + // Apply composeFolderArray to all folders and return. + return array_map([$this, 'composeFolderArray'], $folders); } /** * Get the correct tree array representation including child folders for provided folder * * @param string $folder + * @param string $level * @return array */ - private function _composeFolderArray($folder, $level='0') + private function composeFolderArray($folder, $level = '0') { - $realPath = dirname(Yii::app()->basePath) . DIRECTORY_SEPARATOR . $folder; if (!file_exists($realPath)) { - $this->_recursiveMkdir($realPath, 0750, true); + $this->recursiveMkdir($realPath, 0750, true); } $allFiles = scandir($realPath); $childFolders = []; foreach ($allFiles as $childFile) { - if ($childFile == '.' || $childFile == '..') {continue;} + if ($childFile == '.' || $childFile == '..') { + continue; + } $childRelativePath = $folder . DIRECTORY_SEPARATOR . $childFile; $childRealPath = realpath(Yii::getPathOfAlias('basePath') . $childRelativePath); $childIsDirectoy = is_dir($childRealPath); - if (!$childIsDirectoy) {continue;} - - $childFolders[] = $this->_composeFolderArray($childRelativePath, ($level+1)); + if (!$childIsDirectoy) { + continue; + } + $childFolders[] = $this->composeFolderArray($childRelativePath, $level + 1); } $pathArray = explode("/", $folder); @@ -677,12 +823,18 @@ private function _composeFolderArray($folder, $level='0') 'folder' => $folder, 'realPath' => $realPath, 'shortName' => $shortName, + 'surveyId' => intval($shortName), 'children' => $childFolders, ]; return $folderArray; } - private function _recursiveMkdir($folder, $rights=0755) { + /** + * @param string $folder + * @param hexadecimal $rights + */ + private function recursiveMkdir($folder, $rights = 0755) + { $folders = explode(DIRECTORY_SEPARATOR, $folder); $curFolder = array_shift($folders).DIRECTORY_SEPARATOR; foreach ($folders as $folder) { @@ -701,7 +853,7 @@ private function _recursiveMkdir($folder, $rights=0755) { * @param string|null $title * @return void */ - private function _setError($code, $message, $title = '', $debug = null) + private function setError($code, $message, $title = '', $debug = null) { $this->oError = new FileManagerError(); $this->oError->code = $code; @@ -716,22 +868,29 @@ private function _setError($code, $message, $title = '', $debug = null) * @param array $data The data that should be transferred * @return void Renders JSON document */ - private function _printJsonResponse($data) + private function printJsonResponse($data) { $this->getController()->renderPartial( - '/admin/super/_renderJson', [ + '/admin/super/_renderJson', + [ 'success' => true, - 'data' => $data, - ]); + 'data' => $data, + ] + ); } /** - * Prints a json document with the intercontroller error message + * Prints a JSON document with the error message from $this->oError. * - * @return void Renders JSON document + * @param string $message Error message, if not set previously by setError(). + * @return void */ - private function throwError() + private function throwError($message = '') { + if ($message !== '') { + $this->setError(0, $message); + } + throw new LSJsonException( 500, (Yii::app()->getConfig('debug') > 0 ? $this->oError->code.': ' : '') @@ -755,7 +914,7 @@ private function checkChangedFilename(array $file) $lastPart = $pathParts[count($pathParts) - 1]; if ($lastPart !== $file['shortName']) { - $this->_setError( + $this->setError( "FILENAME_CHANGED", gT("The destination file name is not the same as the source file name") ); @@ -764,6 +923,9 @@ private function checkChangedFilename(array $file) } } +/** + * @todo Move to service class. + */ class FileManagerError { public $message; diff --git a/application/controllers/admin/SurveysGroupsController.php b/application/controllers/admin/SurveysGroupsController.php index 123de5a1826..94be0c301ed 100644 --- a/application/controllers/admin/SurveysGroupsController.php +++ b/application/controllers/admin/SurveysGroupsController.php @@ -131,18 +131,34 @@ public function update($id) public function surveySettings($id) { $bRedirect = 0; + /** @var SurveysGroups $model */ $model = $this->loadModel($id); $aData['model'] = $model; $sPartial = Yii::app()->request->getParam('partial', '_generaloptions_panel'); + /** @var SurveysGroupsettings $oSurvey */ $oSurvey = SurveysGroupsettings::model()->findByPk($model->gsid); - $oSurvey->setOptions(); + $oSurvey->setOptions(); //this gets the "values" from the group that inherits to this group ... $oSurvey->owner_id = $model->owner_id; - if (isset($_POST['template'])) { + //every $_POST checked here is one of the switchers(On|Off|Inherit) names + // Name of sidemenulink => name of input field + // "General settings" => 'template' + // "Presentation" => 'showxquestions' + // "Pariticipant setting" => 'anonymized' + // "Notification & data" => 'datestamp' + // "Publication & access" => 'listpublic' + if(isset($_POST['template']) || isset($_POST['showxquestions']) || isset($_POST['anonymized']) + || isset($_POST['datestamp']) || isset($_POST['listpublic'])){ $oSurvey->attributes = $_POST; - $oSurvey->usecaptcha = Survey::saveTranscribeCaptchaOptions(); + + if(isset($_POST['listpublic'])){ + //what is usecaptcha used for? see saveTranscribeCaptchaOptions method description ... + // in default group this is set to 'N' ... (this means 'none' no captcha for survey access, regigstration + // and 'save&load' + $oSurvey->usecaptcha = Survey::saveTranscribeCaptchaOptions(); + } if ($oSurvey->save()) { $bRedirect = 1; diff --git a/application/models/SurveysGroupsettings.php b/application/models/SurveysGroupsettings.php index 3eb2c62c72e..ba155d1f71b 100644 --- a/application/models/SurveysGroupsettings.php +++ b/application/models/SurveysGroupsettings.php @@ -278,6 +278,17 @@ public function getIsAnonymized() } /** + * Recursive function + * + * Gets the real values for a group. + * A group could inherit from a group, this one could inherit from a group ... + * It steps up (see param $iStep) until it has found the real settings ... + * + * @param int $iSurveyGroupId + * @param null $oSurvey + * @param null $instance + * @param int $iStep this is inheritance step (recursive step) (parent, parentParent, parentParentParent ?) + * @param bool $bRealValues * @return SurveysGroupsettings instance */ public static function getInstance($iSurveyGroupId = 0, $oSurvey = null, $instance = null, $iStep = 1, $bRealValues = false){ @@ -285,6 +296,7 @@ public static function getInstance($iSurveyGroupId = 0, $oSurvey = null, $instan if ($iSurveyGroupId > 0){ $model = SurveysGroupsettings::model()->with('SurveysGroups')->findByPk($iSurveyGroupId); } else { + //this is the default group setting with gsid=0 !!! $model = SurveysGroupsettings::model()->findByPk($iSurveyGroupId); } @@ -392,6 +404,13 @@ protected static function translateOptionLabels($instance, $attribute, $value){ } } + /** + * Gets the "values" from the group that inherits to this group and ... + * + * ... sets the variables (not DB attributes) of "oOptions", "oOptionLabels", "aOptions" + * and "showInherited" (most of them used for frontend i think) + * + */ public function setOptions() { $instance = SurveysGroupsettings::getInstance($this->gsid); diff --git a/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js b/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js index f91d5b58641..1b3cb6705cd 100644 --- a/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js +++ b/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js @@ -29,7 +29,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -var n="~",r="\\x"+("0"+n.charCodeAt(0).toString(16)).slice(-2),i="\\"+r,o=new RegExp(r,"g"),a=new RegExp(i,"g"),u=new RegExp("(?:^|([^\\\\]))"+i),s=[].indexOf||function(t){for(var e=this.length;e--&&this[e]!==t;);return e},c=String;function l(t,e,a){var u,c,l=!1,f=!!e,p=[],d=[t],h=[t],v=[a?n:"[Circular]"],g=t,m=1;return f&&(c="object"===typeof e?function(t,n){return""!==t&&e.indexOf(t)<0?void 0:n}:e),function(t,e){return f&&(e=c.call(this,t,e)),l?(g!==this&&(u=m-s.call(d,this)-1,m-=u,d.splice(m,d.length),p.splice(m-1,p.length),g=this),"object"===typeof e&&e?(s.call(d,e)<0&&d.push(g=e),m=d.length,u=s.call(h,e),u<0?(u=h.push(e)-1,a?(p.push((""+t).replace(o,r)),v[u]=n+p.join(n)):v[u]=v[0]):e=v[u]):"string"===typeof e&&a&&(e=e.replace(r,i).replace(n,r))):l=!0,e}}function f(t,e){for(var r=0,i=e.length;r1?arguments[1]:void 0,g=void 0!==v,m=0,y=l(p);if(g&&(v=r(v,h>2?arguments[2]:void 0,2)),void 0==y||d==Array&&u(y))for(e=s(p.length),n=new d(e);e>m;m++)c(n,m,g?v(p[m],m):p[m]);else for(f=y.call(p),n=new d;!(i=f.next()).done;m++)c(n,m,g?a(f,v,[i.value,m],!0):i.value);return n.length=m,n}})},"54a1":function(t,e,n){n("6c1c"),n("1654"),t.exports=n("95d5")},"551c":function(t,e,n){"use strict";var r,i,o,a,u=n("2d00"),s=n("7726"),c=n("9b43"),l=n("23c6"),f=n("5ca1"),p=n("d3f4"),d=n("d8e8"),h=n("f605"),v=n("4a59"),g=n("ebd6"),m=n("1991").set,y=n("8079")(),_=n("a5b8"),b=n("9c80"),w=n("a25f"),x=n("bcaa"),S="Promise",$=s.TypeError,O=s.process,A=O&&O.versions,k=A&&A.v8||"",C=s[S],j="process"==l(O),T=function(){},M=i=_.f,E=!!function(){try{var t=C.resolve(1),e=(t.constructor={})[n("2b4c")("species")]=function(t){t(T,T)};return(j||"function"==typeof PromiseRejectionEvent)&&t.then(T)instanceof e&&0!==k.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(r){}}(),L=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;y((function(){var r=t._v,i=1==t._s,o=0,a=function(e){var n,o,a,u=i?e.ok:e.fail,s=e.resolve,c=e.reject,l=e.domain;try{u?(i||(2==t._h&&N(t),t._h=1),!0===u?n=r:(l&&l.enter(),n=u(r),l&&(l.exit(),a=!0)),n===e.promise?c($("Promise-chain cycle")):(o=L(n))?o.call(n,s,c):s(n)):c(r)}catch(f){l&&!a&&l.exit(),c(f)}};while(n.length>o)a(n[o++]);t._c=[],t._n=!1,e&&!t._h&&P(t)}))}},P=function(t){m.call(s,(function(){var e,n,r,i=t._v,o=D(t);if(o&&(e=b((function(){j?O.emit("unhandledRejection",i,t):(n=s.onunhandledrejection)?n({promise:t,reason:i}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",i)})),t._h=j||D(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},D=function(t){return 1!==t._h&&0===(t._a||t._c).length},N=function(t){m.call(s,(function(){var e;j?O.emit("rejectionHandled",t):(e=s.onrejectionhandled)&&e({promise:t,reason:t._v})}))},R=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},q=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw $("Promise can't be resolved itself");(e=L(t))?y((function(){var r={_w:n,_d:!1};try{e.call(t,c(q,r,1),c(R,r,1))}catch(i){R.call(r,i)}})):(n._v=t,n._s=1,I(n,!1))}catch(r){R.call({_w:n,_d:!1},r)}}};E||(C=function(t){h(this,C,S,"_h"),d(t),r.call(this);try{t(c(q,this,1),c(R,this,1))}catch(e){R.call(this,e)}},r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n("dcbc")(C.prototype,{then:function(t,e){var n=M(g(this,C));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=j?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=c(q,t,1),this.reject=c(R,t,1)},_.f=M=function(t){return t===C||t===a?new o(t):i(t)}),f(f.G+f.W+f.F*!E,{Promise:C}),n("7f20")(C,S),n("7a56")(S),a=n("8378")[S],f(f.S+f.F*!E,S,{reject:function(t){var e=M(this),n=e.reject;return n(t),e.promise}}),f(f.S+f.F*(u||!E),S,{resolve:function(t){return x(u&&this===a?C:this,t)}}),f(f.S+f.F*!(E&&n("5cc5")((function(t){C.all(t)["catch"](T)}))),S,{all:function(t){var e=this,n=M(e),r=n.resolve,i=n.reject,o=b((function(){var n=[],o=0,a=1;v(t,!1,(function(t){var u=o++,s=!1;n.push(void 0),a++,e.resolve(t).then((function(t){s||(s=!0,n[u]=t,--a||r(n))}),i)})),--a||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=M(e),r=n.reject,i=b((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},5537:function(t,e,n){var r=n("8378"),i=n("7726"),o="__core-js_shared__",a=i[o]||(i[o]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("2d00")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},5559:function(t,e,n){var r=n("dbdb")("keys"),i=n("62a0");t.exports=function(t){return r[t]||(r[t]=i(t))}},"584a":function(t,e){var n=t.exports={version:"2.6.10"};"number"==typeof __e&&(__e=n)},"5b4e":function(t,e,n){var r=n("36c3"),i=n("b447"),o=n("0fc9");t.exports=function(t){return function(e,n,a){var u,s=r(e),c=i(s.length),l=o(a,c);if(t&&n!=n){while(c>l)if(u=s[l++],u!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},"5ca1":function(t,e,n){var r=n("7726"),i=n("8378"),o=n("32e9"),a=n("2aba"),u=n("9b43"),s="prototype",c=function(t,e,n){var l,f,p,d,h=t&c.F,v=t&c.G,g=t&c.S,m=t&c.P,y=t&c.B,_=v?r:g?r[e]||(r[e]={}):(r[e]||{})[s],b=v?i:i[e]||(i[e]={}),w=b[s]||(b[s]={});for(l in v&&(n=e),n)f=!h&&_&&void 0!==_[l],p=(f?_:n)[l],d=y&&f?u(p,r):m&&"function"==typeof p?u(Function.call,p):p,_&&a(_,l,p,t&c.U),b[l]!=p&&o(b,l,d),m&&w[l]!=p&&(w[l]=p)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},"5cc5":function(t,e,n){var r=n("2b4c")("iterator"),i=!1;try{var o=[7][r]();o["return"]=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:n=!0}},o[r]=function(){return u},t(o)}catch(a){}return n}},"5dbc":function(t,e,n){var r=n("d3f4"),i=n("8b97").set;t.exports=function(t,e,n){var o,a=e.constructor;return a!==n&&"function"==typeof a&&(o=a.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},"5df3":function(t,e,n){"use strict";var r=n("02f4")(!0);n("01f9")(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},"5f1b":function(t,e,n){"use strict";var r=n("23c6"),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var o=n.call(t,e);if("object"!==typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},"613b":function(t,e,n){var r=n("5537")("keys"),i=n("ca5a");t.exports=function(t){return r[t]||(r[t]=i(t))}},"626a":function(t,e,n){var r=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},"62a0":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},"62e4":function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},"63b6":function(t,e,n){var r=n("e53d"),i=n("584a"),o=n("d864"),a=n("35e8"),u=n("07e3"),s="prototype",c=function(t,e,n){var l,f,p,d=t&c.F,h=t&c.G,v=t&c.S,g=t&c.P,m=t&c.B,y=t&c.W,_=h?i:i[e]||(i[e]={}),b=_[s],w=h?r:v?r[e]:(r[e]||{})[s];for(l in h&&(n=e),n)f=!d&&w&&void 0!==w[l],f&&u(_,l)||(p=f?w[l]:n[l],_[l]=h&&"function"!=typeof w[l]?n[l]:m&&f?o(p,r):y&&w[l]==p?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[s]=t[s],e}(p):g&&"function"==typeof p?o(Function.call,p):p,g&&((_.virtual||(_.virtual={}))[l]=p,t&c.R&&b&&!b[l]&&a(b,l,p)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},6821:function(t,e,n){var r=n("626a"),i=n("be13");t.exports=function(t){return r(i(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a47":function(t,e,n){"use strict";var r=n("2e4c"),i=n.n(r);i.a},"6a99":function(t,e,n){var r=n("d3f4");t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},"6af4":function(t,e,n){},"6b4c":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"6b54":function(t,e,n){"use strict";n("3846");var r=n("cb7c"),i=n("0bfb"),o=n("9e1e"),a="toString",u=/./[a],s=function(t){n("2aba")(RegExp.prototype,a,t,!0)};n("79e5")((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?s((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):u.name!=a&&s((function(){return u.call(this)}))},"6c1c":function(t,e,n){n("c367");for(var r=n("e53d"),i=n("35e8"),o=n("481b"),a=n("5168")("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s=c?t?"":void 0:(o=u.charCodeAt(s),o<55296||o>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):o:t?u.slice(s,s+2):a-56320+(o-55296<<10)+65536)}}},7333:function(t,e,n){"use strict";var r=n("9e1e"),i=n("0d58"),o=n("2621"),a=n("52a7"),u=n("4bf8"),s=n("626a"),c=Object.assign;t.exports=!c||n("79e5")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function(t,e){var n=u(t),c=arguments.length,l=1,f=o.f,p=a.f;while(c>l){var d,h=s(arguments[l++]),v=f?i(h).concat(f(h)):i(h),g=v.length,m=0;while(g>m)d=v[m++],r&&!p.call(h,d)||(n[d]=h[d])}return n}:c},7514:function(t,e,n){"use strict";var r=n("5ca1"),i=n("0a49")(5),o="find",a=!0;o in[]&&Array(1)[o]((function(){a=!1})),r(r.P+r.F*a,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")(o)},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"774e":function(t,e,n){t.exports=n("d2d5")},"77f1":function(t,e,n){var r=n("4588"),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},"794b":function(t,e,n){t.exports=!n("8e60")&&!n("294c")((function(){return 7!=Object.defineProperty(n("1ec9")("div"),"a",{get:function(){return 7}}).a}))},"79aa":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7a1c":function(t,e,n){"use strict";n.r(e);n("7514"),n("cadf"),n("551c"),n("f751"),n("097d");var r=n("a026"),i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex ls-ba ls-space padding left-0 col-md-4 nofloat transition-animate-width scoped-hide-on-small",class:t.smallScreenHidden?"toggled":"",style:{"max-height":t.$store.state.inSurveyViewHeight,display:t.hiddenStateToggleDisplay},attrs:{id:"sidebar"},on:{mouseleave:t.mouseleave,mouseup:t.mouseup}},[t.useMobileView&&t.smallScreenHidden||!t.useMobileView?[t.showLoader?n("div",{key:"dragaroundLoader",staticClass:"sidebar_loader",style:{width:t.getSideBarWidth,height:t.getloaderHeight}},[t._m(0)]):t._e(),n("div",{key:"mainContentContainer",staticClass:"col-12 fill-height ls-space padding all-0 mainContentContainer",staticStyle:{height:"100%"}},[n("div",{staticClass:"mainMenu container-fluid col-12 ls-space padding right-0 fill-height"},[n("sidebar-state-toggle",{on:{collapse:t.toggleCollapse}}),n("transition",{attrs:{name:"slide-fade"}},[n("sidemenu",{directives:[{name:"show",rawName:"v-show",value:t.showSideMenu,expression:"showSideMenu"}],style:{"min-height":t.calculateSideBarMenuHeight},attrs:{loading:t.loading},on:{changeLoadingState:t.applyLoadingState}})],1),n("transition",{attrs:{name:"slide-fade"}},[n("questionexplorer",{directives:[{name:"show",rawName:"v-show",value:t.showQuestionTree,expression:"showQuestionTree"}],style:{"min-height":t.calculateSideBarMenuHeight},attrs:{loading:t.loading},on:{changeLoadingState:t.applyLoadingState,openentity:t.openEntity,questiongrouporder:t.changedQuestionGroupOrder}})],1),n("transition",{attrs:{name:"slide-fade"}},[n("quickmenu",{directives:[{name:"show",rawName:"v-show",value:t.$store.getters.isCollapsed,expression:"$store.getters.isCollapsed"}],style:{"min-height":t.calculateSideBarMenuHeight},attrs:{loading:t.loading},on:{changeLoadingState:t.applyLoadingState}})],1)],1)])]:t._e(),t.useMobileView&&!t.smallScreenHidden||!t.useMobileView?n("div",{key:"resizeHandle",staticClass:"resize-handle ls-flex-column",style:{height:t.calculateSideBarMenuHeight,"max-height":t.getWindowHeight}},[n("button",{directives:[{name:"show",rawName:"v-show",value:!t.$store.getters.isCollapsed,expression:"!$store.getters.isCollapsed"}],staticClass:"btn btn-default",on:{mousedown:t.mousedown,click:function(t){return t.preventDefault(),function(){return!1}()}}},[n("i",{staticClass:"fa fa-ellipsis-v"})])]):t._e(),t.useMobileView&&t.smallScreenHidden?n("div",{staticClass:"scoped-placeholder-greyed-area",domProps:{innerHTML:t._s(" ")},on:{click:t.toggleSmallScreenHide}}):t._e()],2)},o=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex ls-flex-column fill align-content-center align-items-center"},[n("i",{staticClass:"fa fa-circle-o-notch fa-2x fa-spin"})])}],a=(n("5df3"),n("3b2b"),n("b54a"),n("aef6"),n("ac6a"),n("2ef0"),{methods:{_runAjax:function(t,e,n){return e=e||{},n=n||"get",new Promise((function(r,i){void 0==$&&i("JQUERY NOT AVAILABLE!"),$.ajax({url:t,method:n||"get",data:e,dataType:"json",success:function(t,e,n){r({success:!0,data:t,transferStatus:e,xhr:n})},error:function(t,e,n){var r=t.responseJSON||t.responseText;i({success:!1,error:n,data:r,transferStatus:e,xhr:t})}})}))},post:function(t,e){return this._runAjax(t,e,"post")},get:function(t,e){return this._runAjax(t,e,"get")},delete:function(t,e){return this._runAjax(t,e,"delete")},put:function(t,e){return this._runAjax(t,e,"put")}}}),u=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex-column fill ls-ba menu-pane ls-space padding left-0 top-0 bottom-0 right-5 margin top-5",attrs:{id:"questionexplorer"}},[""!=t.createAllowance?n("div",{staticClass:"ls-flex-row wrap align-content-center align-items-center ls-space margin top-5 bottom-15 button-sub-bar"},[n("div",{staticClass:"scoped-toolbuttons-left"},[void 0!=t.createQuestionGroupLink&&t.createQuestionGroupLink.length>1?n("a",{staticClass:"btn btn-small btn-primary pjax",attrs:{id:"adminsidepanel__sidebar--selectorCreateQuestionGroup",href:t.createQuestionGroupLink}},[n("i",{staticClass:"fa fa-plus"}),t._v(" \n "+t._s(t._f("translate")("createPage"))+"\n ")]):t._e(),t.createQuestionAllowed?n("a",{staticClass:"btn btn-small btn-default ls-space margin right-10 pjax",attrs:{id:"adminsidepanel__sidebar--selectorCreateQuestion",href:t.createFullQuestionLink()}},[n("i",{staticClass:"fa fa-plus-circle"}),t._v(" \n "+t._s(t._f("translate")("createQuestion"))+"\n ")]):t._e()]),n("div",{staticClass:"scoped-toolbuttons-right"},[n("button",{staticClass:"btn btn-default",attrs:{title:t.translate(t.allowOrganizer?"lockOrganizerTitle":"unlockOrganizerTitle")},on:{click:t.toggleOrganizer}},[n("i",{class:t.allowOrganizer?"fa fa-unlock":"fa fa-lock"})]),n("button",{staticClass:"btn btn-default",attrs:{title:t.translate("collapseAll")},on:{click:t.collapseAll}},[n("i",{staticClass:"fa fa-compress"})])])]):t._e(),n("div",{staticClass:"ls-flex-row ls-space padding all-0"},[n("ul",{staticClass:"list-group col-12 questiongroup-list-group",on:{drop:function(e){return t.dropQuestionGroup(e,t.questiongroup)}}},t._l(t.orderedQuestionGroups,(function(e){return n("li",{key:e.gid,staticClass:"list-group-item ls-flex-column",class:t.questionGroupItemClasses(e),on:{dragenter:function(n){return t.dragoverQuestiongroup(n,e)}}},[n("div",{staticClass:"col-12 ls-flex-row nowrap ls-space padding right-5 bottom-5"},[t.surveyIsActive?t._e():n("i",{staticClass:"fa fa-bars bigIcons dragPointer",class:t.allowOrganizer?"":"disabled",attrs:{draggable:t.allowOrganizer},on:{dragend:function(n){return t.endDraggingGroup(n,e)},dragstart:function(n){return t.startDraggingGroup(n,e)},click:function(t){return t.stopPropagation(),t.preventDefault(),function(){return!1}()}}},[t._v("\n  \n ")]),n("a",{staticClass:"col-12 pjax",attrs:{href:e.link},on:{click:function(n){return n.stopPropagation(),t.openQuestionGroup(e)}}},[n("span",{class:t.$store.getters.isRTL?"question_text_ellipsize pull-right":"question_text_ellipsize pull-left",style:{"max-width":t.itemWidth}},[t._v("\n "+t._s(e.group_name)+" \n ")]),n("span",{class:t.$store.getters.isRTL?"badge ls-space margin right-5 pull-left":"badge ls-space margin right-5 pull-right"},[t._v("\n "+t._s(e.questions.length)+"\n ")])]),n("i",{staticClass:"fa bigIcons",class:t.isOpen(e.gid)?"fa-caret-up":"fa-caret-down",on:{click:function(n){return n.preventDefault(),t.toggleActivation(e.gid)}}},[t._v(" ")])]),n("transition",{attrs:{name:"slide-fade-down"}},[t.isOpen(e.gid)?n("ul",{staticClass:"list-group background-muted padding-left question-question-list",on:{drop:function(e){return t.dropQuestion(e,t.question)}}},t._l(t.orderQuestions(e.questions),(function(r){return n("li",{key:r.qid,staticClass:"list-group-item question-question-list-item ls-flex-row align-itmes-flex-start",class:t.questionItemClasses(r),attrs:{"data-toggle":"tootltip","data-is-hidden":r.hidden,"data-questiontype":r.type,"data-has-condition":t.questionHasCondition(r),title:r.question_flat},on:{dragenter:function(n){return t.dragoverQuestion(n,r,e)}}},[t.$store.state.surveyActiveState?t._e():n("i",{staticClass:"fa fa-bars margin-right bigIcons dragPointer question-question-list-item-drag",class:t.allowOrganizer?"":"disabled",attrs:{draggable:t.allowOrganizer},on:{dragend:function(e){return t.endDraggingQuestion(e,r)},dragstart:function(n){return t.startDraggingQuestion(n,r,e)},click:function(t){return t.stopPropagation(),t.preventDefault(),function(){return!1}()}}},[t._v("\n  \n ")]),n("a",{staticClass:"col-9 pjax question-question-list-item-link display-as-container",attrs:{href:r.link},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.openQuestion(r)}}},[n("span",{staticClass:"question_text_ellipsize",class:{"question-hidden":r.hidden},style:{width:t.itemWidth}},[t._v("\n ["+t._s(r.title)+"] › "+t._s(r.question_flat)+" \n ")])])])})),0):t._e()])],1)})),0)])])},s=[],c={mixins:[a],data:function(){return{active:[],questiongroupDragging:!1,draggedQuestionGroup:null,questionDragging:!1,draggedQuestion:null,draggedQuestionsGroup:null}},computed:{allowOrganizer:function(){return 1===this.$store.state.allowOrganizer},surveyIsActive:function(){return window.SideMenuData.isActive},createQuestionGroupLink:function(){return window.SideMenuData.createQuestionGroupLink},createQuestionLink:function(){return window.SideMenuData.createQuestionLink},calculatedHeight:function(){var t=this.$store.state.maxHeight;return t-100},orderedQuestionGroups:function(){return LS.ld.orderBy(this.$store.state.questiongroups,(function(t){return parseInt(t.group_order||999999)}),["asc"])},createQuestionAllowed:function(){return this.$store.state.questiongroups.length>0&&void 0!=this.createQuestionLink&&this.createQuestionLink.length>1},createAllowance:function(){var t=void 0!=this.createQuestionGroupLink&&this.createQuestionGroupLink.length>1?"g":"",e=this.createQuestionAllowed?"q":"";return t+e},itemWidth:function(){return parseInt(this.$store.state.sidebarwidth)-95+"px"}},methods:{toggleOrganizer:function(){this.$store.dispatch("unlockLockOrganizer")},collapseAll:function(){this.active=[]},createFullQuestionLink:function(){return LS.reparsedParameters().combined.gid?LS.createUrl(this.createQuestionLink,{gid:LS.reparsedParameters().combined.gid}):LS.createUrl(this.createQuestionLink,{})},questionHasCondition:function(t){return"1"!==t.relevance},questionItemClasses:function(t){var e="";return e+=this.$store.state.lastQuestionOpen===t.qid?"selected activated":" ",null!==this.draggedQuestion&&(e+=this.draggedQuestion.qid===t.qid?" dragged":" "),e},questionGroupItemClasses:function(t){var e="";return e+=this.isOpen(t.gid)?" selected ":" ",e+=this.isActive(t.gid)?" activated ":" ",null!==this.draggedQuestionGroup&&(e+=this.draggedQuestionGroup.gid===t.gid?" dragged":" "),e},orderQuestions:function(t){return LS.ld.orderBy(t,(function(t){return parseInt(t.question_order||999999)}),["asc"])},isActive:function(t){return t==this.$store.state.lastQuestionGroupOpen},isOpen:function(t){var e=-1!=LS.ld.indexOf(this.active,t);return!0!==this.questiongroupDragging&&e},toggleActivation:function(t){if(this.isOpen(t))LS.ld.remove(this.active,(function(e){return e===t}));else this.active.push(t);this.$store.commit("questionGroupOpenArray",this.active),this.updatePjaxLinks()},addActive:function(t){this.isOpen(t)||this.active.push(t),this.$store.commit("questionGroupOpenArray",this.active)},openQuestionGroup:function(t){this.addActive(t.gid),this.$store.commit("lastQuestionGroupOpen",t),this.updatePjaxLinks()},openQuestion:function(t){this.addActive(t.gid),this.$store.commit("lastQuestionOpen",t),this.updatePjaxLinks(),$(document).trigger("pjax:load",{url:t.link})},startDraggingGroup:function(t,e){this.draggedQuestionGroup=e,this.questiongroupDragging=!0,t.dataTransfer.setData("text/plain","node")},endDraggingGroup:function(t,e){null!==this.draggedQuestionGroup&&(this.draggedQuestionGroup=null,this.questiongroupDragging=!1,this.$emit("questiongrouporder"))},dragoverQuestiongroup:function(t,e){var n=this;if(void 0!=this.draggedQuestion&&null!=this.draggedQuestion||this.$log.log({this:this,questiongroupObject:e,draggedQuestion:this.draggedQuestion}),this.questiongroupDragging){var r=parseInt(e.group_order),i=parseInt(this.draggedQuestionGroup.group_order);1==Math.abs(parseInt(r)-parseInt(i))&&(e.group_order=i,this.draggedQuestionGroup.group_order=r)}else{if(window.SideMenuData.isActive)return;if(this.addActive(e.gid),this.draggedQuestion.gid!==e.gid){var o=LS.ld.remove(this.draggedQuestionsGroup.questions,(function(t,e){return t.qid===n.draggedQuestion.qid}));o.length>0&&(this.draggedQuestion.question_order=null,e.questions.push(this.draggedQuestion),this.draggedQuestion.gid=e.gid,e.group_order>this.draggedQuestionsGroup.group_order?(this.draggedQuestion.question_order=0,LS.ld.each(e.questions,(function(t,e){t.question_order=parseInt(t.question_order)+1}))):this.draggedQuestion.question_order=this.draggedQuestionsGroup.questions.length+1,this.draggedQuestionsGroup=e)}}},startDraggingQuestion:function(t,e,n){this.$log.log("Dragging started",e),t.dataTransfer.setData("application/node",this),this.questionDragging=!0,this.draggedQuestion=e,this.draggedQuestionsGroup=n},endDraggingQuestion:function(t,e){this.questionDragging&&(this.questionDragging=!1,this.draggedQuestion=null,this.draggedQuestionsGroup=null,this.$emit("questiongrouporder"))},dragoverQuestion:function(t,e,n){if(this.questionDragging){if(this.questionDragging.gid!==e.gid&&window.SideMenuData.isActive)return;var r=e.question_order;e.question_order=this.draggedQuestion.question_order,this.draggedQuestion.question_order=r}}},mounted:function(){this.active=this.$store.state.questionGroupOpenArray,this.updatePjaxLinks(),$(document).on("vue-reload-remote",(function(){}))}},l=c;n("8c57");function f(t,e,n,r,i,o,a,u){var s,c="function"===typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),o&&(c._scopeId="data-v-"+o),a?(s=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=s):i&&(s=u?function(){i.call(this,this.$root.$options.shadowRoot)}:i),s)if(c.functional){c._injectStyles=s;var l=c.render;c.render=function(t,e){return s.call(e),l(t,e)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,s):[s]}return{exports:t,options:c}}var p=f(l,u,s,!1,null,null,null),d=p.exports,h=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{key:t.currentKey,staticClass:"ls-space margin bottom-15 top-5 col-12",staticStyle:{height:"40px"}},[n("div",{staticClass:"ls-flex-row align-content-space-between align-items-flex-end ls-space padding left-0 right-10 bottom-0 top-0"},[n("transition",{attrs:{name:"fade"}},[t.$store.getters.isCollapsed?t._e():n("button",{staticClass:"btn btn-default ls-space padding left-15 right-15",on:{click:function(e){return t.$emit("collapse")}}},[n("i",{class:t.$store.getters.isRTL?"fa fa-chevron-right":"fa fa-chevron-left"})])]),n("transition",{attrs:{name:"fade"}},[t.$store.getters.isCollapsed?t._e():n("div",{staticClass:"ls-flex-item grow-10 col-12"},[n("div",{staticClass:"btn-group btn-group col-12"},[n("button",{staticClass:"btn col-6 force color white onhover tabbutton",class:"settings"==t.currentTab?"btn-primary":"btn-default",attrs:{id:"adminsidepanel__sidebar--selectorSettingsButton"},on:{click:function(e){t.currentTab="settings"}}},[t._v("\n "+t._s(t._f("translate")("settings"))+"\n ")]),n("button",{staticClass:"btn col-6 force color white onhover tabbutton",class:"questiontree"==t.currentTab?"btn-primary":"btn-default",attrs:{id:"adminsidepanel__sidebar--selectorStructureButton"},on:{click:function(e){t.currentTab="questiontree"}}},[t._v("\n "+t._s(t._f("translate")("structure"))+"\n ")])])])]),n("transition",{attrs:{name:"fade"}},[t.$store.getters.isCollapsed?n("button",{staticClass:"btn btn-default ls-space padding left-15 right-15",on:{click:function(e){return t.$emit("collapse")}}},[n("i",{class:t.$store.getters.isRTL?"fa fa-chevron-left":"fa fa-chevron-right"})]):t._e()])],1)])},v=[],g={name:"sidebar-state-toggle",computed:{currentKey:function(){return this.$store.state.toggleKey},currentTab:{get:function(){return this.$store.state.currentTab},set:function(t){this.$store.dispatch("changeCurrentTab",t)}}}},m=g,y=f(m,h,v,!1,null,null,null),_=y.exports,b=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex-column fill menu-pane overflow-enabled ls-space padding all-0 margin top-5"},[t._l(t.sortedMenues,(function(e){return n("div",{directives:[{name:"show",rawName:"v-show",value:!t.loadingState,expression:"!loadingState"}],key:e.id,staticClass:"ls-flex-row wrap ls-space padding all-0",attrs:{title:e.title,id:e.id}},[n("label",{staticClass:"menu-label"},[t._v(t._s(e.title))]),n("submenu",{attrs:{menu:e}})],1)})),t.loadingState?n("loader-widget",{attrs:{id:"sidemenuLoaderWidget"}}):t._e()],2)},w=[],x=(n("c5f6"),function(){var t=this,e=t.$createElement,n=t._self._c||e;return"fontawesome"==t.iconType?n("i",{staticClass:"fa",class:"fa-"+t.icon},[t._v(" ")]):"image"==t.iconType?n("img",{attrs:{width:"32px",src:t.icon}}):"iconclass"==t.iconType?n("i",{class:t.icon},[t._v(" ")]):n("span")}),S=[],O={props:{icon:{type:String},iconType:{type:String}}},A=O,k=f(A,x,S,!1,null,null,null),C=k.exports,j=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"list-group subpanel col-12",class:"level-"+t.menu.level},[t._l(t.sortedMenuEntries,(function(e){return n("a",{key:e.id,staticClass:"list-group-item",class:t.getLinkClass(e),attrs:{href:e.link,target:1==e.link_external?"_blank":"",id:"sidemenu_"+e.name},on:{click:function(n){return n.stopPropagation(),t.setActiveMenuItemIndex(e)}}},[n("div",{staticClass:"col-12",class:e.menu_class,attrs:{title:t.reConvertHTML(e.menu_description),"data-toggle":"tooltip"}},[n("div",{staticClass:"ls-space padding all-0",class:t.$store.state.lastMenuItemOpen==e.id?"col-sm-10":"col-sm-12"},[n("menuicon",{attrs:{"icon-type":e.menu_icon_type,icon:e.menu_icon}}),n("span",{domProps:{innerHTML:t._s(e.menu_title)}}),1==e.link_external?n("i",{staticClass:"fa fa-external-link"},[t._v(" ")]):t._e()],1),n("div",{directives:[{name:"show",rawName:"v-show",value:t.$store.state.lastMenuItemOpen==e.id,expression:"$store.state.lastMenuItemOpen == menuItem.id"}],staticClass:"col-sm-2 text-center ls-space padding all-0 background white"},[n("i",{staticClass:"fa fa-chevron-right"},[t._v(" ")])])])])})),t._l(t.menu.submenus,(function(e){return n("li",{key:e.id,staticClass:"list-group-item",class:t.checkIsOpen(e)?"menu-selected":"",on:{"!click":function(n){return n.stopPropagation(),t.setActiveMenuIndex(e)}}},[n("a",{staticClass:"ls-flex-row nowrap align-item-center align-content-center",class:t.checkIsOpen(e)?"ls-space margin bottom-5":"",attrs:{href:"#",title:t.reConvertHTML(e.description),"data-toggle":"tooltip"}},[n("div",{staticClass:"ls-space col-sm-10 padding all-0"},[n("menuicon",{attrs:{"icon-type":"fontawesome",icon:"arrow-right"}}),n("span",{domProps:{innerHTML:t._s(e.title)}})],1),n("div",{staticClass:"col-sm-2 text-center ls-space padding all-0",class:t.checkIsOpen(e)?"menu-open":""},[n("i",{staticClass:"fa fa-level-down"})])]),n("transition",{attrs:{name:"slide-fade-down"}},[t.checkIsOpen(e)?n("submenu",{attrs:{menu:e}}):t._e()],1)],1)}))],2)},T=[],M=(n("a481"),{name:"submenu",components:{menuicon:C},mixins:[a],props:{menu:{type:[Object,Array],required:!0}},data:function(){return{menues:{}}},computed:{sortedMenuEntries:function(){return LS.ld.orderBy(this.menu.entries,(function(t){return parseInt(t.ordering||999999)}),["asc"])}},methods:{setActiveMenuItemIndex:function(t){t.id;return this.$store.commit("lastMenuItemOpen",t),this.$log.log("Opened Menuitem",t),!0},checkIsOpen:function(t){var e=this,n=this.$store.state.lastMenuOpen==t.id,r=!1;return LS.ld.each(t.submenus,(function(t,n){r=e.$store.state.lastMenuOpen==t.id||r})),n||r||!1},setActiveMenuIndex:function(t){t.id;this.$store.commit("lastMenuOpen",t)},setOpenSubpanel:function(t){this.openSubpanelId=t,this.$emit("menuselected",t)},debugOut:function(t){return JSON.stringify(t)},getLinkClass:function(t){var e="ls-flex-row nowrap ";return e+=t.pjax?"pjax ":" ",e+=this.$store.state.lastMenuItemOpen==t.id?"selected ":" ",e},reConvertHTML:function(t){var e=["'","©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"],n=["'","©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"];return LS.ld.each(n,(function(n,r){t=t.replace(n,e[r])})),t}},created:function(){},mounted:function(){this.updatePjaxLinks(),this.redoTooltips()}}),E=M,L=f(E,j,T,!1,null,null,null),I=L.exports,P={name:"sidemenu",components:{menuicon:C,submenu:I},mixins:[a],props:{openSubpanelId:{type:Number},loading:{type:Boolean,default:!1}},data:function(){return{menues:{}}},computed:{sortedMenues:function(){return LS.ld.orderBy(this.$store.state.sidemenus,(function(t){return parseInt(t.ordering||999999)}),["asc"])},loadingState:{get:function(){return this.loading},set:function(t){this.$emit("changeLoadingState",t)}}},methods:{sortedMenuEntries:function(t){var e=LS.ld.orderBy(t,(function(t){return parseInt(t.ordering||999999)}),["asc"]);return e},setActiveMenuIndex:function(t){t.id;this.$store.commit("lastMenuOpen",t)},setActiveMenuItemIndex:function(t){t.id;this.$store.commit("lastMenuItemOpen",t)},setOpenSubpanel:function(t){this.openSubpanelId=t,this.$emit("menuselected",t)},debugOut:function(t){return JSON.stringify(t)}},created:function(){var t=this;this.$store.dispatch("getSidemenus").then((function(t){}),this.$log.error).finally((function(e){t.loadingState=!1}))},mounted:function(){this.updatePjaxLinks(),$(document).on("vue-reload-remote",(function(){}))}},D=P,N=f(D,b,w,!1,null,null,null),R=N.exports,q=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex-column fill"},[t._l(t.sortedMenues,(function(e){return n("div",{directives:[{name:"show",rawName:"v-show",value:!t.loadingState,expression:"!loadingState"}],key:e.title,staticClass:"ls-space margin top-10",attrs:{title:e.title}},[n("div",{staticClass:"btn-group-vertical ls-space padding right-10"},t._l(t.sortedMenuEntries(e.entries),(function(e){return n("a",{key:e.id,staticClass:"btn btn-icon",class:t.compileEntryClasses(e),attrs:{href:e.link,title:e.menu_description,target:e.link_external?"_blank":"_self","data-toggle":"tooltip"},on:{click:function(n){return t.setActiveMenuIndex(e)}}},["fontawesome"==e.menu_icon_type?[n("i",{staticClass:"quickmenuIcon fa",class:"fa-"+e.menu_icon})]:"image"==e.menu_icon_type?[n("img",{attrs:{width:"32px",src:e.menu_icon}})]:"iconclass"==e.menu_icon_type?[n("i",{staticClass:"quickmenuIcon",class:e.menu_icon})]:t._e()],2)})),0)])})),t.loadingState?n("loader-widget",{attrs:{id:"quickmenuLoadingIcon","extra-class":"loader-quickmenu"}}):t._e()],2)},F=[],B={mixins:[a],props:{menuEntries:{type:[Array,Object]},activeMenuIndex:{type:String},loading:{type:Boolean,default:!1}},data:function(){return{}},computed:{loadingState:{get:function(){return this.loading},set:function(t){this.$emit("changeLoadingState",t)}},sortedMenues:function(){return LS.ld.orderBy(this.$store.state.collapsedmenus,(function(t){return parseInt(t.ordering||999999)}),["asc"])}},methods:{sortedMenuEntries:function(t){var e=LS.ld.orderBy(t,(function(t){return parseInt(t.ordering||999999)}),["asc"]);return e},setActiveMenuIndex:function(t){t.id;this.$store.commit("lastMenuItemOpen",t)},compileEntryClasses:function(t){var e="";return this.$store.state.lastMenuItemOpen==t.id?e+=" btn-primary ":e+=" btn-default ",t.link_external||(e+=" pjax "),e}},created:function(){var t=this;this.$store.dispatch("getCollapsedmenus").then((function(t){}),this.$log.error).finally((function(e){t.loadingState=!1}))},mounted:function(){}},z=B,H=(n("ab94"),f(z,q,F,!1,null,null,null)),Q=H.exports,G={props:{landOnTab:String},components:{questionexplorer:d,sidemenu:R,quickmenu:Q,SidebarStateToggle:_},mixins:[a],data:function(){return{activeMenuIndex:0,openSubpanelId:0,menues:[],collapsed:!1,sideBarWidth:"315",initialPos:{x:0,y:0},isMouseDown:!1,isMouseDownTimeOut:null,sideBarHeight:"400px",showLoader:!1,loading:!0,hiddenStateToggleDisplay:"flex",smallScreenHidden:!1}},computed:{useMobileView:function(){return window.innerWidth<768},isActive:function(){return window.SideMenuData.isActive},questiongroups:function(){return this.$store.state.questiongroups},sidemenus:{get:function(){return this.$store.state.sidemenus},set:function(t){this.$store.commit("updateSidemenus",t)}},collapsedmenus:{get:function(){return this.$store.state.collapsedmenus},set:function(t){this.$store.commit("updateCollapsedmenus",t)}},currentTab:{get:function(){return this.$store.state.currentTab},set:function(t){this.$store.commit("changeCurrentTab",t)}},getSideBarWidth:function(){return this.$store.getters.isCollapsed?"98":this.sideBarWidth},sortedMenus:function(){return LS.ld.orderBy(this.menues,(function(t){return parseInt(t.order||999999)}),["asc"])},showSideMenu:function(){return!this.$store.getters.isCollapsed&&"settings"==this.currentTab},showQuestionTree:function(){return!this.$store.getters.isCollapsed&&"questiontree"==this.currentTab},calculateSideBarMenuHeight:function(){var t=this.$store.state.sideBarHeight;return LS.ld.min(t,Math.floor(2*screen.height))+"px"},getWindowHeight:function(){return 2*screen.height+"px"},getloaderHeight:function(){return $("#sidebar").height()}},methods:{applyLoadingState:function(t){this.loading=t},calculateHeight:function(t){t.$store.commit("changeSideBarHeight",$("#in_survey_common").height())},changedQuestionGroupOrder:function(){var t=this,e=this,n=LS.ld.map(this.questiongroups,(function(t,e){var n=LS.ld.map(t.questions,(function(t,e){return{qid:t.qid,question:t.question,gid:t.gid,question_order:t.question_order}}));return{gid:t.gid,group_name:t.group_name,group_order:t.group_order,questions:n}}));this.$log.log("QuestionGroup order changed"),this.showLoader=!0,this.post(window.SideMenuData.updateOrderLink,{grouparray:n,surveyid:this.$store.surveyid}).then((function(t){e.$log.log("questiongroups updated"),e.$store.dispatch("getQuestions").then((function(){e.showLoader=!1}))}),(function(n){e.$log.error("questiongroups updating error!"),t.post(window.SideMenuData.updateOrderLink,{surveyid:t.$store.surveyid}).then((function(){e.getQuestions().then((function(){e.showLoader=!1}))}))}))},controlActiveLink:function(){var t=window.location.href,e=!1;LS.ld.each(this.sidemenus,(function(n,r){LS.ld.each(n.entries,(function(n,r){e=LS.ld.endsWith(t,n.link)?n:e}))}));var n=!1;LS.ld.each(this.collapsedmenus,(function(e,r){LS.ld.each(e.entries,(function(e,r){n=LS.ld.endsWith(t,e.link)?e:n}))}));var r=!1;LS.ld.each(this.questiongroups,(function(e,n){var i=new RegExp("questiongroups/sa/edit/surveyid/"+e.sid+"/gid/"+e.gid);r=i.test(t)||LS.ld.endsWith(t,e.link)?e:r}));var i=!1;LS.ld.each(this.questiongroups,(function(e,n){LS.ld.each(e.questions,(function(e,n){var r=new RegExp("editquestion/surveyid/"+e.sid+"/gid/"+e.gid+"/qid/"+e.qid);i=LS.ld.endsWith(t,e.link)||r.test(t)?e:i}))})),this.$store.commit("closeAllMenus"),0!=e&&1!=this.$store.getters.isCollapsed&&this.$store.commit("lastMenuItemOpen",e),0!=n&&1==this.$store.getters.isCollapsed&&this.$store.commit("lastMenuItemOpen",n),0!=i&&this.$store.commit("lastQuestionOpen",i),0!=r&&(this.$store.commit("lastQuestionGroupOpen",r),this.$store.commit("addToQuestionGroupOpenArray",r))},editEntity:function(){this.setActiveMenuIndex(null,"question")},openEntity:function(){this.setActiveMenuIndex(null,"question")},setActiveMenuIndex:function(t){this.$store.commit("lastMenuItemOpen",t),this.activeMenuIndex=t},setOpenSubpanel:function(t){this.openSubpanelId=t,this.$store.commit("lastMenuOpen",t),this.$emit("menuselected",t)},toggleCollapse:function(){this.$store.commit("changeIsCollapsed",!this.$store.state.isCollapsed),this.$store.getters.isCollapsed?this.sideBarWidth="98":this.sideBarWidth=this.$store.state.sidebarwidth},toggleSmallScreenHide:function(){this.smallScreenHidden=!this.smallScreenHidden},mousedown:function(t){this.useMobileView&&(this.$store.commit("changeIsCollapsed",!1),this.smallScreenHidden=!this.smallScreenHidden),this.isMouseDown=!this.$store.getters.isCollapsed,$("#sidebar").removeClass("transition-animate-width"),$("#pjax-content").removeClass("transition-animate-width")},mouseup:function(t){this.isMouseDown&&(this.isMouseDown=!1,parseInt(this.sideBarWidth)<250&&!this.$store.getters.isCollapsed?(this.toggleCollapse(),this.$store.commit("changeSidebarwidth","340")):this.$store.commit("changeSidebarwidth",this.sideBarWidth),$("#sidebar").addClass("transition-animate-width"),$("#pjax-content").removeClass("transition-animate-width"))},mouseleave:function(t){if(this.isMouseDown){var e=this;this.isMouseDownTimeOut=setTimeout((function(){e.mouseup(t)}),1e3)}},mousemove:function(t,e){if(this.isMouseDown){if(e.$store.getters.isRTL){if(0===t.screenX&&0===t.screenY)return;if(window.innerWidth-t.clientX>screen.width/2)return void this.$store.commit("maxSideBarWidth",!0);e.sideBarWidth=window.innerWidth-t.pageX-8+"px",this.$store.commit("changeSidebarwidth",e.sideBarWidth),this.$store.commit("maxSideBarWidth",!1)}else{if(0===t.screenX&&0===t.screenY)return;if(t.clientX>screen.width/2)return void this.$store.commit("maxSideBarWidth",!0);e.sideBarWidth=t.pageX+8+"px",this.$store.commit("changeSidebarwidth",e.sideBarWidth),this.$store.commit("maxSideBarWidth",!1)}window.clearTimeout(e.isMouseDownTimeOut),e.isMouseDownTimeOut=null}},setBaseMenuPosition:function(t,e){switch(e){case"side":this.sidemenus=LS.ld.orderBy(t,(function(t){return parseInt(t.order||999999)}),["desc"]);break;case"collapsed":this.collapsedmenus=LS.ld.orderBy(t,(function(t){return parseInt(t.order||999999)}),["desc"]);break}},changeCurrentTab:function(t){t="structure"===t?"questiontree":"settings",this.currentTab=t}},created:function(){var t=this;window.innerWidth<768&&this.$store.commit("changeIsCollapsed",!1),t.$store.commit("setSurveyActiveState",1===parseInt(this.isActive)),this.activeMenuIndex=this.$store.state.lastMenuOpen,this.$store.getters.isCollapsed?this.sideBarWidth="98":this.sideBarWidth=t.$store.state.sidebarwidth,LS.ld.each(window.SideMenuData.basemenus,this.setBaseMenuPosition)},mounted:function(){var t=this,e=this;LS.EventBus.$on("updateSideBar",(function(e){t.loading=!0;var n=[Promise.resolve()];e.updateQuestions&&n.push(t.$store.dispatch("getQuestions")),e.collectMenus&&n.push(t.$store.dispatch("collectMenus")),e.activeMenuIndex&&(t.controlActiveLink(),n.push(Promise.resolve())),Promise.all(n).then((function(t){})).catch((function(e){t.$log.error(e)})).finally((function(){t.loading=!1}))})),$(document).trigger("sidebar:mounted"),e.calculateHeight(e),window.addEventListener("resize",(function(){e.calculateHeight(e)})),$(document).on("pjax:send",(function(){t.useMobileView&&t.smallScreenHidden&&(t.smallScreenHidden=!1)})),$(document).on("vue-sidemenu-update-link",(function(){t.controlActiveLink()})),$(document).on("vue-reload-remote",(function(){t.$log.log("vue-reload-remote"),t.$store.dispatch("getQuestions"),t.$store.dispatch("collectMenus"),t.updatePjaxLinks()})),$(document).on("vue-redraw",(function(){t.$log.log("vue-redraw"),t.$store.dispatch("getQuestions"),t.$store.dispatch("collectMenus")})),this.controlActiveLink(),this.updatePjaxLinks(),$("body").on("mousemove",(function(t){e.mousemove(t,e)})),""!==this.landOnTab&&this.changeCurrentTab(this.landOnTab)}},U=G,W=(n("d399"),f(U,i,o,!1,null,"3269e70e",null)),V=W.exports,K=function(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:r});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[r].concat(t.init):r,n.call(this,t)}}function r(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}},J="undefined"!==typeof window&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function Z(t){J&&(t._devtoolHook=J,J.emit("vuex:init",t),J.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){J.emit("vuex:mutation",t,e)})))}function X(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function Y(t){return null!==t&&"object"===typeof t}function tt(t){return t&&"function"===typeof t.then}var et=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},nt={namespaced:{configurable:!0}};nt.namespaced.get=function(){return!!this._rawModule.namespaced},et.prototype.addChild=function(t,e){this._children[t]=e},et.prototype.removeChild=function(t){delete this._children[t]},et.prototype.getChild=function(t){return this._children[t]},et.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},et.prototype.forEachChild=function(t){X(this._children,t)},et.prototype.forEachGetter=function(t){this._rawModule.getters&&X(this._rawModule.getters,t)},et.prototype.forEachAction=function(t){this._rawModule.actions&&X(this._rawModule.actions,t)},et.prototype.forEachMutation=function(t){this._rawModule.mutations&&X(this._rawModule.mutations,t)},Object.defineProperties(et.prototype,nt);var rt=function(t){this.register([],t,!1)};function it(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return void 0;it(t.concat(r),e.getChild(r),n.modules[r])}}rt.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},rt.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},rt.prototype.update=function(t){it([],this.root,t)},rt.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var i=new et(e,n);if(0===t.length)this.root=i;else{var o=this.get(t.slice(0,-1));o.addChild(t[t.length-1],i)}e.modules&&X(e.modules,(function(e,i){r.register(t.concat(i),e,n)}))},rt.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var ot;var at=function(t){var e=this;void 0===t&&(t={}),!ot&&"undefined"!==typeof window&&window.Vue&&bt(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var r=t.strict;void 0===r&&(r=!1);var i=t.state;void 0===i&&(i={}),"function"===typeof i&&(i=i()||{}),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new rt(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new ot;var o=this,a=this,u=a.dispatch,s=a.commit;this.dispatch=function(t,e){return u.call(o,t,e)},this.commit=function(t,e,n){return s.call(o,t,e,n)},this.strict=r,ft(this,i,[],this._modules.root),lt(this,i),n.forEach((function(t){return t(e)})),ot.config.devtools&&Z(this)},ut={state:{configurable:!0}};function st(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function ct(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;ft(t,n,[],t._modules.root,!0),lt(t,n,e)}function lt(t,e,n){var r=t._vm;t.getters={};var i=t._wrappedGetters,o={};X(i,(function(e,n){o[n]=function(){return e(t)},Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var a=ot.config.silent;ot.config.silent=!0,t._vm=new ot({data:{$$state:e},computed:o}),ot.config.silent=a,t.strict&&mt(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),ot.nextTick((function(){return r.$destroy()})))}function ft(t,e,n,r,i){var o=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a]=r),!o&&!i){var u=yt(e,n.slice(0,-1)),s=n[n.length-1];t._withCommit((function(){ot.set(u,s,r.state)}))}var c=r.context=pt(t,a,n);r.forEachMutation((function(e,n){var r=a+n;ht(t,r,e,c)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,i=e.handler||e;vt(t,r,i,c)})),r.forEachGetter((function(e,n){var r=a+n;gt(t,r,e,c)})),r.forEachChild((function(r,o){ft(t,e,n.concat(o),r,i)}))}function pt(t,e,n){var r=""===e,i={dispatch:r?t.dispatch:function(n,r,i){var o=_t(n,r,i),a=o.payload,u=o.options,s=o.type;return u&&u.root||(s=e+s),t.dispatch(s,a)},commit:r?t.commit:function(n,r,i){var o=_t(n,r,i),a=o.payload,u=o.options,s=o.type;u&&u.root||(s=e+s),t.commit(s,a,u)}};return Object.defineProperties(i,{getters:{get:r?function(){return t.getters}:function(){return dt(t,e)}},state:{get:function(){return yt(t.state,n)}}}),i}function dt(t,e){var n={},r=e.length;return Object.keys(t.getters).forEach((function(i){if(i.slice(0,r)===e){var o=i.slice(r);Object.defineProperty(n,o,{get:function(){return t.getters[i]},enumerable:!0})}})),n}function ht(t,e,n,r){var i=t._mutations[e]||(t._mutations[e]=[]);i.push((function(e){n.call(t,r.state,e)}))}function vt(t,e,n,r){var i=t._actions[e]||(t._actions[e]=[]);i.push((function(e,i){var o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e,i);return tt(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))}function gt(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function mt(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function yt(t,e){return e.length?e.reduce((function(t,e){return t[e]}),t):t}function _t(t,e,n){return Y(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function bt(t){ot&&t===ot||(ot=t,K(ot))}ut.state.get=function(){return this._vm._data.$$state},ut.state.set=function(t){0},at.prototype.commit=function(t,e,n){var r=this,i=_t(t,e,n),o=i.type,a=i.payload,u=(i.options,{type:o,payload:a}),s=this._mutations[o];s&&(this._withCommit((function(){s.forEach((function(t){t(a)}))})),this._subscribers.forEach((function(t){return t(u,r.state)})))},at.prototype.dispatch=function(t,e){var n=this,r=_t(t,e),i=r.type,o=r.payload,a={type:i,payload:o},u=this._actions[i];if(u)return this._actionSubscribers.forEach((function(t){return t(a,n.state)})),u.length>1?Promise.all(u.map((function(t){return t(o)}))):u[0](o)},at.prototype.subscribe=function(t){return st(t,this._subscribers)},at.prototype.subscribeAction=function(t){return st(t,this._actionSubscribers)},at.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},at.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},at.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),ft(this,this.state,t,this._modules.get(t),n.preserveState),lt(this,this.state)},at.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=yt(e.state,t.slice(0,-1));ot.delete(n,t[t.length-1])})),ct(this)},at.prototype.hotUpdate=function(t){this._modules.update(t),ct(this,!0)},at.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(at.prototype,ut);var wt=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=Ct(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof i?i.call(this,e,n):e[i]},n[r].vuex=!0})),n})),xt=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var o=Ct(this.$store,"mapMutations",t);if(!o)return;r=o.context.commit}return"function"===typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n})),St=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;i=t+i,n[r]=function(){if(!t||Ct(this.$store,"mapGetters",t))return this.$store.getters[i]},n[r].vuex=!0})),n})),$t=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var o=Ct(this.$store,"mapActions",t);if(!o)return;r=o.context.dispatch}return"function"===typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n})),Ot=function(t){return{mapState:wt.bind(null,t),mapGetters:St.bind(null,t),mapMutations:xt.bind(null,t),mapActions:$t.bind(null,t)}};function At(t){return Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}}))}function kt(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function Ct(t,e,n){var r=t._modulesNamespaceMap[n];return r}var jt={Store:at,install:bt,version:"2.5.0",mapState:wt,mapMutations:xt,mapGetters:St,mapActions:$t,createNamespacedHelpers:Ot},Tt=jt,Mt=n("da81"),Et=n.n(Mt);(function(){function t(){}Object.defineProperty(t.prototype,"length",{get:function(){return Object.keys(this).length},enumerable:!0,configurable:!0}),t.prototype.key=function(t){return Object.keys(this)[t]},t.prototype.setItem=function(t,e){this[t]=e.toString()},t.prototype.getItem=function(t){return this[t]},t.prototype.removeItem=function(t){delete this[t]},t.prototype.clear=function(){for(var t=0,e=Object.keys(this);t0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];Yt(this,t),this.param=e,this.silencer=n,this.collector=[],this.currentGroupDescription="",this.activeGroups=0,this.timeHolder=null,this.methods=["group","groupEnd","log","trace","time","timeEnd","error","warn"],this.silent={group:function(){},groupEnd:function(){},log:function(){},trace:function(){},time:function(){},timeEnd:function(){},error:function(){},err:function(){},debug:function(){},warn:function(){}}}return re(t,[{key:"_generateError",value:function(){try{throw new Error}catch(t){return t}}},{key:"_insertParamToArguments",value:function(t){if(""!==this.param){var e=Xt(t);return e.unshift(this.param),e}return Array.from(arguments)}},{key:"setSilent",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.silencer=t||!this.silencer}},{key:"group",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);if("function"!==typeof console.group){var e=t[0]||"GROUP";this.currentGroupDescription=e,this.activeGroups++}else console.group.apply(console,t)}}},{key:"groupEnd",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);"function"!==typeof console.groupEnd?(this.currentGroupDescription="",this.activeGroups--,this.activeGroups=0===this.activeGroups?0:this.activeGroups--):console.groupEnd.apply(console,t)}}},{key:"log",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);"function"!==typeof console.group?(t.shift(),t.unshift(" ".repeat(2*this.activeGroups)),this.log.apply(this,t)):console.log.apply(console,t)}}},{key:"trace",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);if("function"!==typeof console.trace){var e=this._generateError();e.stack?this.log.apply(console,e.stack):(this.log(t),void 0!=arguments.callee&&this.trace.apply(console,arguments.callee))}else console.trace.apply(console,t)}}},{key:"time",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);"function"!==typeof console.time?this.timeHolder=new Date:console.time.apply(console,t)}}},{key:"timeEnd",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);if("function"!==typeof console.timeEnd){var e=new Date-this.timeHolder;this.log("Took ".concat(Math.floor(e/36e5)," hours, ").concat(Math.floor(e/6e4)," minutes and ").concat(Math.floor(e/1e3)," seconds ( ").concat(e," ms)")),this.time=new Date}else console.timeEnd.apply(console,t)}}},{key:"error",value:function(){var t=this._insertParamToArguments(arguments);"function"!==typeof console.error?(this.log("--- ERROR ---"),this.log(t)):console.error.apply(console,t)}},{key:"warn",value:function(){var t=this._insertParamToArguments(arguments);"function"!==typeof console.warn?(this.log("--- WARN ---"),this.log(t)):console.warn.apply(console,t)}}]),t}(),oe=ie,ae=new oe("adminsidepanel");window.debugState.backend||ae.setSilent(!0);var ue=function(t){t.prototype.$log=ae},se={updatePjax:function(t){var e=t.commit;$(document).trigger("pjax:refresh"),e("newToggleKey")},getSidemenus:function(t){return new Promise((function(e,n){a.methods.get(window.SideMenuData.getMenuUrl,{position:"side"}).then((function(n){ae.log("sidemenues",n);var r=LS.ld.orderBy(n.data.menues,(function(t){return parseInt(t.order||999999)}),["desc"]);t.commit("updateSidemenus",r),t.dispatch("updatePjax"),e()})).catch((function(t){n(t)}))}))},getCollapsedmenus:function(t){return new Promise((function(e,n){a.methods.get(window.SideMenuData.getMenuUrl,{position:"collapsed"}).then((function(n){ae.log("quickmenu",n);var r=LS.ld.orderBy(n.data.menues,(function(t){return parseInt(t.order||999999)}),["desc"]);t.commit("updateCollapsedmenus",r),t.dispatch("updatePjax"),e()})).catch((function(t){n(t)}))}))},getQuestions:function(t){return new Promise((function(e,n){a.methods.get(window.SideMenuData.getQuestionsUrl).then((function(n){ae.log("Questions",n);var r=n.data.groups;t.commit("updateQuestiongroups",r),t.dispatch("updatePjax"),e()})).catch((function(t){n(t)}))}))},collectMenus:function(t){return Promise.all([t.dispatch("getSidemenus"),t.dispatch("getCollapsedmenus")])},unlockLockOrganizer:function(t){return new Promise((function(e,n){a.methods.post(window.SideMenuData.unlockLockOrganizerUrl,{setting:"lock_organizer",newValue:t.state.allowOrganizer?"0":"1"}).then((function(e){ae.log("setUsersettingLog",e),t.commit("setAllowOrganizer",parseInt(e.data.result))})).catch((function(t){n(t)}))}))},changeCurrentTab:function(t,e){t.commit("changeCurrentTab",e),t.dispatch("collectMenus"),t.dispatch("getQuestions")}};r["a"].use(qt.a),r["a"].use(Tt);var ce=function(t,e){var n="limesurveyadminsidepanel",r=new Nt({key:n+"_"+t+"_"+e,storage:window.localStorage});return new Tt.Store({state:Ft(t),plugins:[r.plugin],getters:Bt,mutations:zt,actions:se})},le=ce,fe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:" loader--loaderWidget ls-flex ls-flex-column align-content-center align-items-center",staticStyle:{"min-height":"100%"},attrs:{id:"loader-"+t.id}},[n("div",{staticClass:"ls-flex align-content-center align-items-center"},[n("div",{staticClass:"loader-adminpanel text-center",class:t.extraClass},[t._m(0)])])])},pe=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"contain-pulse animate-pulse"},[n("div",{staticClass:"square"}),n("div",{staticClass:"square"}),n("div",{staticClass:"square"}),n("div",{staticClass:"square"})])}],de={name:"loaderWidget",props:{id:{type:String,default:Math.floor(1e3*Math.random())},extraClass:{type:String,default:""}}},he=de,ve=(n("6a47"),f(he,fe,pe,!1,null,"d2d9edba",null)),ge=ve.exports;r["a"].config.ignoredElements=["x-test"],r["a"].config.devtools=!1,r["a"].use(ue),r["a"].component("loader-widget",ge),r["a"].mixin({methods:{updatePjaxLinks:function(){this.$forceUpdate(),this.$store.commit("newToggleKey")},redoTooltips:function(){window.LS.doToolTip()},translate:function(t){return window.SideMenuData.translate[t]||t}},filters:{translate:function(t){return window.SideMenuData.translate[t]||t}}});var me=function(t,e){var n=le(t,e),i={},o=function(t){0!=e&&t.commit("updateSurveyId",e)},a=function(){var t=$("body").find("nav").first().height(),e=$("body").find("footer").last().height(),n=$(".menubar").outerHeight(),r=t+e+n+25,o=window.innerHeight,a=o-r,u=100*(1-parseInt($("#sidebar").width())/$("#vue-apps-main-container").width()),s=100*(1-parseInt("98px")/$("#vue-apps-main-container").width()),c=Math.floor($("#sidebar").data("collapsed")?u:s)+"%";i["surveyViewHeight"]=a,i["surveyViewWidth"]=c,$("#fullbody-container").css({"max-width":c,"overflow-x":"auto"})},u=function(){return new r["a"]({el:"#vue-sidebar-container",store:n,components:{sidebar:V},created:function(){var t=this;$(document).on("vue-sidebar-collapse",(function(){t.$store.commit("changeIsCollapsed",!0)}))},mounted:function(){var t=this;o(this.$store);var e=$("#in_survey_common").height()-35||400;this.$store.commit("changeMaxHeight",e),this.$store.commit("setAllowOrganizer",window.SideMenuData.allowOrganizer),this.updatePjaxLinks(),$(document).on("vue-redraw",(function(){t.updatePjaxLinks()})),$(document).trigger("vue-reload-remote")}})},s=function(){i.reloadcounter=5,$(document).off("pjax:send.panelloading").on("pjax:send.panelloading",(function(){$('
').appendTo("body"),$(".ui-dialog.ui-corner-all.ui-widget.ui-widget-content.ui-front.ui-draggable.ui-resizable").remove(),$("#pjax-file-load-container").find("div").css({width:"20%",display:"block"}),LS.adminsidepanel.reloadcounter--})),$(document).off("pjax:error.panelloading").on("pjax:error.panelloading",(function(t){console.ls.log(t)})),$(document).off("pjax:complete.panelloading").on("pjax:complete.panelloading",(function(){0===LS.adminsidepanel.reloadcounter&&location.reload()})),$(document).off("pjax:scriptcomplete.panelloading").on("pjax:scriptcomplete.panelloading",(function(){$("#pjax-file-load-container").find("div").css("width","100%"),$("#pjaxClickInhibitor").fadeOut(400,(function(){$(this).remove()})),$(document).trigger("vue-resize-height"),$(document).trigger("vue-reload-remote"),setTimeout((function(){$("#pjax-file-load-container").find("div").css({width:"0%",display:"none"})}),2200)}))},c=function(){window.singletonPjax(),document.getElementById("vue-sidebar-container")&&(i["sidemenu"]=u()),$(document).on("click","ul.pagination>li>a",(function(){$(document).trigger("pjax:refresh")})),a(),window.addEventListener("resize",LS.ld.debounce(a,300)),$(document).on("vue-resize-height",LS.ld.debounce(a,300)),s()};return LS.adminCore.addToNamespace(i,"adminsidepanel"),c};$(document).ready((function(){var t="newSurvey";void 0!=window.LS&&(t=window.LS.parameters.$GET.surveyid||window.LS.parameters.keyValuePairs.surveyid),window.SideMenuData&&(t=window.SideMenuData.surveyid),window.adminsidepanel=window.adminsidepanel||me(window.LS.globalUserId,t),window.adminsidepanel()}))},"7a56":function(t,e,n){"use strict";var r=n("7726"),i=n("86cc"),o=n("9e1e"),a=n("2b4c")("species");t.exports=function(t){var e=r[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},"7cd6":function(t,e,n){var r=n("40c3"),i=n("5168")("iterator"),o=n("481b");t.exports=n("584a").getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[r(t)]}},"7e90":function(t,e,n){var r=n("d9f6"),i=n("e4ae"),o=n("c3a1");t.exports=n("8e60")?Object.defineProperties:function(t,e){i(t);var n,a=o(e),u=a.length,s=0;while(u>s)r.f(t,n=a[s++],e[n]);return t}},"7f20":function(t,e,n){var r=n("86cc").f,i=n("69a8"),o=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},8079:function(t,e,n){var r=n("7726"),i=n("1991").set,o=r.MutationObserver||r.WebKitMutationObserver,a=r.process,u=r.Promise,s="process"==n("2d95")(a);t.exports=function(){var t,e,n,c=function(){var r,i;s&&(r=a.domain)&&r.exit();while(t){i=t.fn,t=t.next;try{i()}catch(o){throw t?n():e=void 0,o}}e=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(c)};else if(!o||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var l=u.resolve(void 0);n=function(){l.then(c)}}else n=function(){i.call(r,c)};else{var f=!0,p=document.createTextNode("");new o(c).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},8378:function(t,e){var n=t.exports={version:"2.6.10"};"number"==typeof __e&&(__e=n)},8436:function(t,e){t.exports=function(){}},"84f2":function(t,e){t.exports={}},"85f2":function(t,e,n){t.exports=n("454f")},"86cc":function(t,e,n){var r=n("cb7c"),i=n("c69a"),o=n("6a99"),a=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(u){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"8b97":function(t,e,n){var r=n("d3f4"),i=n("cb7c"),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n("9b43")(Function.call,n("11e9").f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(i){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},"8c57":function(t,e,n){"use strict";var r=n("f7bc"),i=n.n(r);i.a},"8e60":function(t,e,n){t.exports=!n("294c")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},"8f60":function(t,e,n){"use strict";var r=n("a159"),i=n("aebd"),o=n("45f2"),a={};n("35e8")(a,n("5168")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},9003:function(t,e,n){var r=n("6b4c");t.exports=Array.isArray||function(t){return"Array"==r(t)}},9093:function(t,e,n){var r=n("ce10"),i=n("e11e").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},9138:function(t,e,n){t.exports=n("35e8")},"95d5":function(t,e,n){var r=n("40c3"),i=n("5168")("iterator"),o=n("481b");t.exports=n("584a").isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||o.hasOwnProperty(r(e))}},9744:function(t,e,n){"use strict";var r=n("4588"),i=n("be13");t.exports=function(t){var e=String(i(this)),n="",o=r(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(n+=e);return n}},"9b43":function(t,e,n){var r=n("d8e8");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var r=n("2b4c")("unscopables"),i=Array.prototype;void 0==i[r]&&n("32e9")(i,r,{}),t.exports=function(t){i[r][t]=!0}},"9c80":function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},"9def":function(t,e,n){var r=n("4588"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a026:function(t,e,n){"use strict";(function(t){ +var n="~",r="\\x"+("0"+n.charCodeAt(0).toString(16)).slice(-2),i="\\"+r,o=new RegExp(r,"g"),a=new RegExp(i,"g"),u=new RegExp("(?:^|([^\\\\]))"+i),s=[].indexOf||function(t){for(var e=this.length;e--&&this[e]!==t;);return e},c=String;function l(t,e,a){var u,c,l=!1,f=!!e,p=[],d=[t],h=[t],v=[a?n:"[Circular]"],g=t,m=1;return f&&(c="object"===typeof e?function(t,n){return""!==t&&e.indexOf(t)<0?void 0:n}:e),function(t,e){return f&&(e=c.call(this,t,e)),l?(g!==this&&(u=m-s.call(d,this)-1,m-=u,d.splice(m,d.length),p.splice(m-1,p.length),g=this),"object"===typeof e&&e?(s.call(d,e)<0&&d.push(g=e),m=d.length,u=s.call(h,e),u<0?(u=h.push(e)-1,a?(p.push((""+t).replace(o,r)),v[u]=n+p.join(n)):v[u]=v[0]):e=v[u]):"string"===typeof e&&a&&(e=e.replace(r,i).replace(n,r))):l=!0,e}}function f(t,e){for(var r=0,i=e.length;r1?arguments[1]:void 0,g=void 0!==v,m=0,y=l(p);if(g&&(v=r(v,h>2?arguments[2]:void 0,2)),void 0==y||d==Array&&u(y))for(e=s(p.length),n=new d(e);e>m;m++)c(n,m,g?v(p[m],m):p[m]);else for(f=y.call(p),n=new d;!(i=f.next()).done;m++)c(n,m,g?a(f,v,[i.value,m],!0):i.value);return n.length=m,n}})},"54a1":function(t,e,n){n("6c1c"),n("1654"),t.exports=n("95d5")},"551c":function(t,e,n){"use strict";var r,i,o,a,u=n("2d00"),s=n("7726"),c=n("9b43"),l=n("23c6"),f=n("5ca1"),p=n("d3f4"),d=n("d8e8"),h=n("f605"),v=n("4a59"),g=n("ebd6"),m=n("1991").set,y=n("8079")(),_=n("a5b8"),b=n("9c80"),w=n("a25f"),x=n("bcaa"),S="Promise",$=s.TypeError,O=s.process,A=O&&O.versions,k=A&&A.v8||"",C=s[S],j="process"==l(O),T=function(){},M=i=_.f,E=!!function(){try{var t=C.resolve(1),e=(t.constructor={})[n("2b4c")("species")]=function(t){t(T,T)};return(j||"function"==typeof PromiseRejectionEvent)&&t.then(T)instanceof e&&0!==k.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(r){}}(),L=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},I=function(t,e){if(!t._n){t._n=!0;var n=t._c;y((function(){var r=t._v,i=1==t._s,o=0,a=function(e){var n,o,a,u=i?e.ok:e.fail,s=e.resolve,c=e.reject,l=e.domain;try{u?(i||(2==t._h&&N(t),t._h=1),!0===u?n=r:(l&&l.enter(),n=u(r),l&&(l.exit(),a=!0)),n===e.promise?c($("Promise-chain cycle")):(o=L(n))?o.call(n,s,c):s(n)):c(r)}catch(f){l&&!a&&l.exit(),c(f)}};while(n.length>o)a(n[o++]);t._c=[],t._n=!1,e&&!t._h&&P(t)}))}},P=function(t){m.call(s,(function(){var e,n,r,i=t._v,o=D(t);if(o&&(e=b((function(){j?O.emit("unhandledRejection",i,t):(n=s.onunhandledrejection)?n({promise:t,reason:i}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",i)})),t._h=j||D(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},D=function(t){return 1!==t._h&&0===(t._a||t._c).length},N=function(t){m.call(s,(function(){var e;j?O.emit("rejectionHandled",t):(e=s.onrejectionhandled)&&e({promise:t,reason:t._v})}))},R=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),I(e,!0))},q=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw $("Promise can't be resolved itself");(e=L(t))?y((function(){var r={_w:n,_d:!1};try{e.call(t,c(q,r,1),c(R,r,1))}catch(i){R.call(r,i)}})):(n._v=t,n._s=1,I(n,!1))}catch(r){R.call({_w:n,_d:!1},r)}}};E||(C=function(t){h(this,C,S,"_h"),d(t),r.call(this);try{t(c(q,this,1),c(R,this,1))}catch(e){R.call(this,e)}},r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n("dcbc")(C.prototype,{then:function(t,e){var n=M(g(this,C));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=j?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&I(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=c(q,t,1),this.reject=c(R,t,1)},_.f=M=function(t){return t===C||t===a?new o(t):i(t)}),f(f.G+f.W+f.F*!E,{Promise:C}),n("7f20")(C,S),n("7a56")(S),a=n("8378")[S],f(f.S+f.F*!E,S,{reject:function(t){var e=M(this),n=e.reject;return n(t),e.promise}}),f(f.S+f.F*(u||!E),S,{resolve:function(t){return x(u&&this===a?C:this,t)}}),f(f.S+f.F*!(E&&n("5cc5")((function(t){C.all(t)["catch"](T)}))),S,{all:function(t){var e=this,n=M(e),r=n.resolve,i=n.reject,o=b((function(){var n=[],o=0,a=1;v(t,!1,(function(t){var u=o++,s=!1;n.push(void 0),a++,e.resolve(t).then((function(t){s||(s=!0,n[u]=t,--a||r(n))}),i)})),--a||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=M(e),r=n.reject,i=b((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},5537:function(t,e,n){var r=n("8378"),i=n("7726"),o="__core-js_shared__",a=i[o]||(i[o]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n("2d00")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},5559:function(t,e,n){var r=n("dbdb")("keys"),i=n("62a0");t.exports=function(t){return r[t]||(r[t]=i(t))}},"584a":function(t,e){var n=t.exports={version:"2.6.10"};"number"==typeof __e&&(__e=n)},"5b4e":function(t,e,n){var r=n("36c3"),i=n("b447"),o=n("0fc9");t.exports=function(t){return function(e,n,a){var u,s=r(e),c=i(s.length),l=o(a,c);if(t&&n!=n){while(c>l)if(u=s[l++],u!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},"5ca1":function(t,e,n){var r=n("7726"),i=n("8378"),o=n("32e9"),a=n("2aba"),u=n("9b43"),s="prototype",c=function(t,e,n){var l,f,p,d,h=t&c.F,v=t&c.G,g=t&c.S,m=t&c.P,y=t&c.B,_=v?r:g?r[e]||(r[e]={}):(r[e]||{})[s],b=v?i:i[e]||(i[e]={}),w=b[s]||(b[s]={});for(l in v&&(n=e),n)f=!h&&_&&void 0!==_[l],p=(f?_:n)[l],d=y&&f?u(p,r):m&&"function"==typeof p?u(Function.call,p):p,_&&a(_,l,p,t&c.U),b[l]!=p&&o(b,l,d),m&&w[l]!=p&&(w[l]=p)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},"5cc5":function(t,e,n){var r=n("2b4c")("iterator"),i=!1;try{var o=[7][r]();o["return"]=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:n=!0}},o[r]=function(){return u},t(o)}catch(a){}return n}},"5dbc":function(t,e,n){var r=n("d3f4"),i=n("8b97").set;t.exports=function(t,e,n){var o,a=e.constructor;return a!==n&&"function"==typeof a&&(o=a.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},"5df3":function(t,e,n){"use strict";var r=n("02f4")(!0);n("01f9")(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},"5f1b":function(t,e,n){"use strict";var r=n("23c6"),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var o=n.call(t,e);if("object"!==typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},"613b":function(t,e,n){var r=n("5537")("keys"),i=n("ca5a");t.exports=function(t){return r[t]||(r[t]=i(t))}},"626a":function(t,e,n){var r=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},"62a0":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},"62e4":function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},"63b6":function(t,e,n){var r=n("e53d"),i=n("584a"),o=n("d864"),a=n("35e8"),u=n("07e3"),s="prototype",c=function(t,e,n){var l,f,p,d=t&c.F,h=t&c.G,v=t&c.S,g=t&c.P,m=t&c.B,y=t&c.W,_=h?i:i[e]||(i[e]={}),b=_[s],w=h?r:v?r[e]:(r[e]||{})[s];for(l in h&&(n=e),n)f=!d&&w&&void 0!==w[l],f&&u(_,l)||(p=f?w[l]:n[l],_[l]=h&&"function"!=typeof w[l]?n[l]:m&&f?o(p,r):y&&w[l]==p?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[s]=t[s],e}(p):g&&"function"==typeof p?o(Function.call,p):p,g&&((_.virtual||(_.virtual={}))[l]=p,t&c.R&&b&&!b[l]&&a(b,l,p)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},6821:function(t,e,n){var r=n("626a"),i=n("be13");t.exports=function(t){return r(i(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a47":function(t,e,n){"use strict";var r=n("2e4c"),i=n.n(r);i.a},"6a99":function(t,e,n){var r=n("d3f4");t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},"6af4":function(t,e,n){},"6b4c":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"6b54":function(t,e,n){"use strict";n("3846");var r=n("cb7c"),i=n("0bfb"),o=n("9e1e"),a="toString",u=/./[a],s=function(t){n("2aba")(RegExp.prototype,a,t,!0)};n("79e5")((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?s((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):u.name!=a&&s((function(){return u.call(this)}))},"6c1c":function(t,e,n){n("c367");for(var r=n("e53d"),i=n("35e8"),o=n("481b"),a=n("5168")("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s=c?t?"":void 0:(o=u.charCodeAt(s),o<55296||o>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):o:t?u.slice(s,s+2):a-56320+(o-55296<<10)+65536)}}},7333:function(t,e,n){"use strict";var r=n("9e1e"),i=n("0d58"),o=n("2621"),a=n("52a7"),u=n("4bf8"),s=n("626a"),c=Object.assign;t.exports=!c||n("79e5")((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function(t,e){var n=u(t),c=arguments.length,l=1,f=o.f,p=a.f;while(c>l){var d,h=s(arguments[l++]),v=f?i(h).concat(f(h)):i(h),g=v.length,m=0;while(g>m)d=v[m++],r&&!p.call(h,d)||(n[d]=h[d])}return n}:c},7514:function(t,e,n){"use strict";var r=n("5ca1"),i=n("0a49")(5),o="find",a=!0;o in[]&&Array(1)[o]((function(){a=!1})),r(r.P+r.F*a,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")(o)},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"774e":function(t,e,n){t.exports=n("d2d5")},"77f1":function(t,e,n){var r=n("4588"),i=Math.max,o=Math.min;t.exports=function(t,e){return t=r(t),t<0?i(t+e,0):o(t,e)}},"794b":function(t,e,n){t.exports=!n("8e60")&&!n("294c")((function(){return 7!=Object.defineProperty(n("1ec9")("div"),"a",{get:function(){return 7}}).a}))},"79aa":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},"7a1c":function(t,e,n){"use strict";n.r(e);n("7514"),n("cadf"),n("551c"),n("f751"),n("097d");var r=n("a026"),i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex ls-ba ls-space padding left-0 col-md-4 nofloat transition-animate-width scoped-hide-on-small",class:t.smallScreenHidden?"toggled":"",style:{"max-height":t.$store.state.inSurveyViewHeight,display:t.hiddenStateToggleDisplay},attrs:{id:"sidebar"},on:{mouseleave:t.mouseleave,mouseup:t.mouseup}},[t.useMobileView&&t.smallScreenHidden||!t.useMobileView?[t.showLoader?n("div",{key:"dragaroundLoader",staticClass:"sidebar_loader",style:{width:t.getSideBarWidth,height:t.getloaderHeight}},[t._m(0)]):t._e(),n("div",{key:"mainContentContainer",staticClass:"col-12 fill-height ls-space padding all-0 mainContentContainer",staticStyle:{height:"100%"}},[n("div",{staticClass:"mainMenu container-fluid col-12 ls-space padding right-0 fill-height"},[n("sidebar-state-toggle",{on:{collapse:t.toggleCollapse}}),n("transition",{attrs:{name:"slide-fade"}},[n("sidemenu",{directives:[{name:"show",rawName:"v-show",value:t.showSideMenu,expression:"showSideMenu"}],style:{"min-height":t.calculateSideBarMenuHeight},attrs:{loading:t.loading},on:{changeLoadingState:t.applyLoadingState}})],1),n("transition",{attrs:{name:"slide-fade"}},[n("questionexplorer",{directives:[{name:"show",rawName:"v-show",value:t.showQuestionTree,expression:"showQuestionTree"}],style:{"min-height":t.calculateSideBarMenuHeight},attrs:{loading:t.loading},on:{changeLoadingState:t.applyLoadingState,openentity:t.openEntity,questiongrouporder:t.changedQuestionGroupOrder}})],1),n("transition",{attrs:{name:"slide-fade"}},[n("quickmenu",{directives:[{name:"show",rawName:"v-show",value:t.$store.getters.isCollapsed,expression:"$store.getters.isCollapsed"}],style:{"min-height":t.calculateSideBarMenuHeight},attrs:{loading:t.loading},on:{changeLoadingState:t.applyLoadingState}})],1)],1)])]:t._e(),t.useMobileView&&!t.smallScreenHidden||!t.useMobileView?n("div",{key:"resizeHandle",staticClass:"resize-handle ls-flex-column",style:{height:t.calculateSideBarMenuHeight,"max-height":t.getWindowHeight}},[n("button",{directives:[{name:"show",rawName:"v-show",value:!t.$store.getters.isCollapsed,expression:"!$store.getters.isCollapsed"}],staticClass:"btn btn-default",on:{mousedown:t.mousedown,click:function(t){return t.preventDefault(),function(){return!1}()}}},[n("i",{staticClass:"fa fa-ellipsis-v"})])]):t._e(),t.useMobileView&&t.smallScreenHidden?n("div",{staticClass:"scoped-placeholder-greyed-area",domProps:{innerHTML:t._s(" ")},on:{click:t.toggleSmallScreenHide}}):t._e()],2)},o=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex ls-flex-column fill align-content-center align-items-center"},[n("i",{staticClass:"fa fa-circle-o-notch fa-2x fa-spin"})])}],a=(n("5df3"),n("3b2b"),n("b54a"),n("aef6"),n("ac6a"),n("2ef0"),{methods:{_runAjax:function(t,e,n){return e=e||{},n=n||"get",new Promise((function(r,i){void 0==$&&i("JQUERY NOT AVAILABLE!"),$.ajax({url:t,method:n||"get",data:e,dataType:"json",success:function(t,e,n){r({success:!0,data:t,transferStatus:e,xhr:n})},error:function(t,e,n){var r=t.responseJSON||t.responseText;i({success:!1,error:n,data:r,transferStatus:e,xhr:t})}})}))},post:function(t,e){return this._runAjax(t,e,"post")},get:function(t,e){return this._runAjax(t,e,"get")},delete:function(t,e){return this._runAjax(t,e,"delete")},put:function(t,e){return this._runAjax(t,e,"put")}}}),u=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex-column fill ls-ba menu-pane ls-space padding left-0 top-0 bottom-0 right-5 margin top-5",attrs:{id:"questionexplorer"}},[""!=t.createAllowance?n("div",{staticClass:"ls-flex-row wrap align-content-center align-items-center ls-space margin top-5 bottom-15 button-sub-bar"},[n("div",{staticClass:"scoped-toolbuttons-left"},[void 0!=t.createQuestionGroupLink&&t.createQuestionGroupLink.length>1?n("a",{staticClass:"btn btn-small btn-primary pjax",attrs:{id:"adminsidepanel__sidebar--selectorCreateQuestionGroup",href:t.createQuestionGroupLink}},[n("i",{staticClass:"fa fa-plus"}),t._v(" \n "+t._s(t._f("translate")("createPage"))+"\n ")]):t._e(),t.createQuestionAllowed?n("a",{staticClass:"btn btn-small btn-default ls-space margin right-10 pjax",attrs:{id:"adminsidepanel__sidebar--selectorCreateQuestion",href:t.createFullQuestionLink()}},[n("i",{staticClass:"fa fa-plus-circle"}),t._v(" \n "+t._s(t._f("translate")("createQuestion"))+"\n ")]):t._e()]),n("div",{staticClass:"scoped-toolbuttons-right"},[n("button",{staticClass:"btn btn-default",attrs:{title:t.translate(t.allowOrganizer?"lockOrganizerTitle":"unlockOrganizerTitle")},on:{click:t.toggleOrganizer}},[n("i",{class:t.allowOrganizer?"fa fa-unlock":"fa fa-lock"})]),n("button",{staticClass:"btn btn-default",attrs:{title:t.translate("collapseAll")},on:{click:t.collapseAll}},[n("i",{staticClass:"fa fa-compress"})])])]):t._e(),n("div",{staticClass:"ls-flex-row ls-space padding all-0"},[n("ul",{staticClass:"list-group col-12 questiongroup-list-group",on:{drop:function(e){return t.dropQuestionGroup(e,t.questiongroup)}}},t._l(t.orderedQuestionGroups,(function(e){return n("li",{key:e.gid,staticClass:"list-group-item ls-flex-column",class:t.questionGroupItemClasses(e),on:{dragenter:function(n){return t.dragoverQuestiongroup(n,e)}}},[n("div",{staticClass:"col-12 ls-flex-row nowrap ls-space padding right-5 bottom-5"},[t.surveyIsActive?t._e():n("i",{staticClass:"fa fa-bars bigIcons dragPointer",class:t.allowOrganizer?"":"disabled",attrs:{draggable:t.allowOrganizer},on:{dragend:function(n){return t.endDraggingGroup(n,e)},dragstart:function(n){return t.startDraggingGroup(n,e)},click:function(t){return t.stopPropagation(),t.preventDefault(),function(){return!1}()}}},[t._v("\n  \n ")]),n("a",{staticClass:"col-12 pjax",attrs:{href:e.link},on:{click:function(n){return n.stopPropagation(),t.openQuestionGroup(e)}}},[n("span",{class:t.$store.getters.isRTL?"question_text_ellipsize pull-right":"question_text_ellipsize pull-left",style:{"max-width":t.itemWidth}},[t._v("\n "+t._s(e.group_name)+" \n ")]),n("span",{class:t.$store.getters.isRTL?"badge ls-space margin right-5 pull-left":"badge ls-space margin right-5 pull-right"},[t._v("\n "+t._s(e.questions.length)+"\n ")])]),n("i",{staticClass:"fa bigIcons",class:t.isOpen(e.gid)?"fa-caret-up":"fa-caret-down",on:{click:function(n){return n.preventDefault(),t.toggleActivation(e.gid)}}},[t._v(" ")])]),n("transition",{attrs:{name:"slide-fade-down"}},[t.isOpen(e.gid)?n("ul",{staticClass:"list-group background-muted padding-left question-question-list",on:{drop:function(e){return t.dropQuestion(e,t.question)}}},t._l(t.orderQuestions(e.questions),(function(r){return n("li",{key:r.qid,staticClass:"list-group-item question-question-list-item ls-flex-row align-itmes-flex-start",class:t.questionItemClasses(r),attrs:{"data-toggle":"tootltip","data-is-hidden":r.hidden,"data-questiontype":r.type,"data-has-condition":t.questionHasCondition(r),title:r.question_flat},on:{dragenter:function(n){return t.dragoverQuestion(n,r,e)}}},[t.$store.state.surveyActiveState?t._e():n("i",{staticClass:"fa fa-bars margin-right bigIcons dragPointer question-question-list-item-drag",class:t.allowOrganizer?"":"disabled",attrs:{draggable:t.allowOrganizer},on:{dragend:function(e){return t.endDraggingQuestion(e,r)},dragstart:function(n){return t.startDraggingQuestion(n,r,e)},click:function(t){return t.stopPropagation(),t.preventDefault(),function(){return!1}()}}},[t._v("\n  \n ")]),n("a",{staticClass:"col-9 pjax question-question-list-item-link display-as-container",attrs:{href:r.link},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.openQuestion(r)}}},[n("span",{staticClass:"question_text_ellipsize",class:{"question-hidden":r.hidden},style:{width:t.itemWidth}},[t._v("\n ["+t._s(r.title)+"] › "+t._s(r.question_flat)+" \n ")])])])})),0):t._e()])],1)})),0)])])},s=[],c={mixins:[a],data:function(){return{active:[],questiongroupDragging:!1,draggedQuestionGroup:null,questionDragging:!1,draggedQuestion:null,draggedQuestionsGroup:null}},computed:{allowOrganizer:function(){return 1===this.$store.state.allowOrganizer},surveyIsActive:function(){return window.SideMenuData.isActive},createQuestionGroupLink:function(){return window.SideMenuData.createQuestionGroupLink},createQuestionLink:function(){return window.SideMenuData.createQuestionLink},calculatedHeight:function(){var t=this.$store.state.maxHeight;return t-100},orderedQuestionGroups:function(){return LS.ld.orderBy(this.$store.state.questiongroups,(function(t){return parseInt(t.group_order||999999)}),["asc"])},createQuestionAllowed:function(){return this.$store.state.questiongroups.length>0&&void 0!=this.createQuestionLink&&this.createQuestionLink.length>1},createAllowance:function(){var t=void 0!=this.createQuestionGroupLink&&this.createQuestionGroupLink.length>1?"g":"",e=this.createQuestionAllowed?"q":"";return t+e},itemWidth:function(){return parseInt(this.$store.state.sidebarwidth)-95+"px"}},methods:{toggleOrganizer:function(){this.$store.dispatch("unlockLockOrganizer")},collapseAll:function(){this.active=[]},createFullQuestionLink:function(){return LS.reparsedParameters().combined.gid?LS.createUrl(this.createQuestionLink,{gid:LS.reparsedParameters().combined.gid}):LS.createUrl(this.createQuestionLink,{})},questionHasCondition:function(t){return"1"!==t.relevance},questionItemClasses:function(t){var e="";return e+=this.$store.state.lastQuestionOpen===t.qid?"selected activated":" ",null!==this.draggedQuestion&&(e+=this.draggedQuestion.qid===t.qid?" dragged":" "),e},questionGroupItemClasses:function(t){var e="";return e+=this.isOpen(t.gid)?" selected ":" ",e+=this.isActive(t.gid)?" activated ":" ",null!==this.draggedQuestionGroup&&(e+=this.draggedQuestionGroup.gid===t.gid?" dragged":" "),e},orderQuestions:function(t){return LS.ld.orderBy(t,(function(t){return parseInt(t.question_order||999999)}),["asc"])},isActive:function(t){return t==this.$store.state.lastQuestionGroupOpen},isOpen:function(t){var e=-1!=LS.ld.indexOf(this.active,t);return!0!==this.questiongroupDragging&&e},toggleActivation:function(t){if(this.isOpen(t))LS.ld.remove(this.active,(function(e){return e===t}));else this.active.push(t);this.$store.commit("questionGroupOpenArray",this.active),this.updatePjaxLinks()},addActive:function(t){this.isOpen(t)||this.active.push(t),this.$store.commit("questionGroupOpenArray",this.active)},openQuestionGroup:function(t){this.addActive(t.gid),this.$store.commit("lastQuestionGroupOpen",t),this.updatePjaxLinks()},openQuestion:function(t){this.addActive(t.gid),this.$store.commit("lastQuestionOpen",t),this.updatePjaxLinks(),$(document).trigger("pjax:load",{url:t.link})},startDraggingGroup:function(t,e){this.draggedQuestionGroup=e,this.questiongroupDragging=!0,t.dataTransfer.setData("text/plain","node")},endDraggingGroup:function(t,e){null!==this.draggedQuestionGroup&&(this.draggedQuestionGroup=null,this.questiongroupDragging=!1,this.$emit("questiongrouporder"))},dragoverQuestiongroup:function(t,e){var n=this;if(void 0!=this.draggedQuestion&&null!=this.draggedQuestion||this.$log.log({this:this,questiongroupObject:e,draggedQuestion:this.draggedQuestion}),this.questiongroupDragging){var r=parseInt(e.group_order),i=parseInt(this.draggedQuestionGroup.group_order);1==Math.abs(parseInt(r)-parseInt(i))&&(e.group_order=i,this.draggedQuestionGroup.group_order=r)}else{if(window.SideMenuData.isActive)return;if(this.addActive(e.gid),this.draggedQuestion.gid!==e.gid){var o=LS.ld.remove(this.draggedQuestionsGroup.questions,(function(t,e){return t.qid===n.draggedQuestion.qid}));o.length>0&&(this.draggedQuestion.question_order=null,e.questions.push(this.draggedQuestion),this.draggedQuestion.gid=e.gid,e.group_order>this.draggedQuestionsGroup.group_order?(this.draggedQuestion.question_order=0,LS.ld.each(e.questions,(function(t,e){t.question_order=parseInt(t.question_order)+1}))):this.draggedQuestion.question_order=this.draggedQuestionsGroup.questions.length+1,this.draggedQuestionsGroup=e)}}},startDraggingQuestion:function(t,e,n){this.$log.log("Dragging started",e),t.dataTransfer.setData("application/node",this),this.questionDragging=!0,this.draggedQuestion=e,this.draggedQuestionsGroup=n},endDraggingQuestion:function(t,e){this.questionDragging&&(this.questionDragging=!1,this.draggedQuestion=null,this.draggedQuestionsGroup=null,this.$emit("questiongrouporder"))},dragoverQuestion:function(t,e,n){if(this.questionDragging){if(this.questionDragging.gid!==e.gid&&window.SideMenuData.isActive)return;var r=e.question_order;e.question_order=this.draggedQuestion.question_order,this.draggedQuestion.question_order=r}}},mounted:function(){this.active=this.$store.state.questionGroupOpenArray,this.updatePjaxLinks(),$(document).on("vue-reload-remote",(function(){}))}},l=c;n("8c57");function f(t,e,n,r,i,o,a,u){var s,c="function"===typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),o&&(c._scopeId="data-v-"+o),a?(s=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=s):i&&(s=u?function(){i.call(this,this.$root.$options.shadowRoot)}:i),s)if(c.functional){c._injectStyles=s;var l=c.render;c.render=function(t,e){return s.call(e),l(t,e)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,s):[s]}return{exports:t,options:c}}var p=f(l,u,s,!1,null,null,null),d=p.exports,h=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{key:t.currentKey,staticClass:"ls-space margin bottom-15 top-5 col-12",staticStyle:{height:"40px"}},[n("div",{staticClass:"ls-flex-row align-content-space-between align-items-flex-end ls-space padding left-0 right-10 bottom-0 top-0"},[n("transition",{attrs:{name:"fade"}},[t.$store.getters.isCollapsed?t._e():n("button",{staticClass:"btn btn-default ls-space padding left-15 right-15",on:{click:function(e){return t.$emit("collapse")}}},[n("i",{class:t.$store.getters.isRTL?"fa fa-chevron-right":"fa fa-chevron-left"})])]),n("transition",{attrs:{name:"fade"}},[t.$store.getters.isCollapsed?t._e():n("div",{staticClass:"ls-flex-item grow-10 col-12"},[n("div",{staticClass:"btn-group btn-group col-12"},[n("button",{staticClass:"btn col-6 force color white onhover tabbutton",class:"settings"==t.currentTab?"btn-primary":"btn-default",attrs:{id:"adminsidepanel__sidebar--selectorSettingsButton"},on:{click:function(e){t.currentTab="settings"}}},[t._v("\n "+t._s(t._f("translate")("settings"))+"\n ")]),n("button",{staticClass:"btn col-6 force color white onhover tabbutton",class:"questiontree"==t.currentTab?"btn-primary":"btn-default",attrs:{id:"adminsidepanel__sidebar--selectorStructureButton"},on:{click:function(e){t.currentTab="questiontree"}}},[t._v("\n "+t._s(t._f("translate")("structure"))+"\n ")])])])]),n("transition",{attrs:{name:"fade"}},[t.$store.getters.isCollapsed?n("button",{staticClass:"btn btn-default ls-space padding left-15 right-15",on:{click:function(e){return t.$emit("collapse")}}},[n("i",{class:t.$store.getters.isRTL?"fa fa-chevron-left":"fa fa-chevron-right"})]):t._e()])],1)])},v=[],g={name:"sidebar-state-toggle",computed:{currentKey:function(){return this.$store.state.toggleKey},currentTab:{get:function(){return this.$store.state.currentTab},set:function(t){this.$store.dispatch("changeCurrentTab",t)}}}},m=g,y=f(m,h,v,!1,null,null,null),_=y.exports,b=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex-column fill menu-pane overflow-enabled ls-space padding all-0 margin top-5"},[t._l(t.sortedMenues,(function(e){return n("div",{directives:[{name:"show",rawName:"v-show",value:!t.loadingState,expression:"!loadingState"}],key:e.id,staticClass:"ls-flex-row wrap ls-space padding all-0",attrs:{title:e.title,id:e.id}},[n("label",{staticClass:"menu-label"},[t._v(t._s(e.title))]),n("submenu",{attrs:{menu:e}})],1)})),t.loadingState?n("loader-widget",{attrs:{id:"sidemenuLoaderWidget"}}):t._e()],2)},w=[],x=(n("c5f6"),function(){var t=this,e=t.$createElement,n=t._self._c||e;return"fontawesome"==t.iconType?n("i",{staticClass:"fa",class:"fa-"+t.icon},[t._v(" ")]):"image"==t.iconType?n("img",{attrs:{width:"32px",src:t.icon}}):"iconclass"==t.iconType?n("i",{class:t.icon},[t._v(" ")]):n("span")}),S=[],O={props:{icon:{type:String},iconType:{type:String}}},A=O,k=f(A,x,S,!1,null,null,null),C=k.exports,j=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"list-group subpanel col-12",class:"level-"+t.menu.level},[t._l(t.sortedMenuEntries,(function(e){return n("a",{key:e.id,staticClass:"list-group-item",class:t.getLinkClass(e),attrs:{href:e.link,target:1==e.link_external?"_blank":"",id:"sidemenu_"+e.name},on:{click:function(n){return n.stopPropagation(),t.setActiveMenuItemIndex(e)}}},[n("div",{staticClass:"col-12",class:e.menu_class,attrs:{title:t.reConvertHTML(e.menu_description),"data-toggle":"tooltip"}},[n("div",{staticClass:"ls-space padding all-0",class:t.$store.state.lastMenuItemOpen==e.id?"col-sm-10":"col-sm-12"},[n("menuicon",{attrs:{"icon-type":e.menu_icon_type,icon:e.menu_icon}}),n("span",{domProps:{innerHTML:t._s(e.menu_title)}}),1==e.link_external?n("i",{staticClass:"fa fa-external-link"},[t._v(" ")]):t._e()],1),n("div",{directives:[{name:"show",rawName:"v-show",value:t.$store.state.lastMenuItemOpen==e.id,expression:"$store.state.lastMenuItemOpen == menuItem.id"}],staticClass:"col-sm-2 text-center ls-space padding all-0 background white"},[n("i",{staticClass:"fa fa-chevron-right"},[t._v(" ")])])])])})),t._l(t.menu.submenus,(function(e){return n("li",{key:e.id,staticClass:"list-group-item",class:t.checkIsOpen(e)?"menu-selected":"",on:{"!click":function(n){return n.stopPropagation(),t.setActiveMenuIndex(e)}}},[n("a",{staticClass:"ls-flex-row nowrap align-item-center align-content-center",class:t.checkIsOpen(e)?"ls-space margin bottom-5":"",attrs:{href:"#",title:t.reConvertHTML(e.description),"data-toggle":"tooltip"}},[n("div",{staticClass:"ls-space col-sm-10 padding all-0"},[n("menuicon",{attrs:{"icon-type":"fontawesome",icon:"arrow-right"}}),n("span",{domProps:{innerHTML:t._s(e.title)}})],1),n("div",{staticClass:"col-sm-2 text-center ls-space padding all-0",class:t.checkIsOpen(e)?"menu-open":""},[n("i",{staticClass:"fa fa-level-down"})])]),n("transition",{attrs:{name:"slide-fade-down"}},[t.checkIsOpen(e)?n("submenu",{attrs:{menu:e}}):t._e()],1)],1)}))],2)},T=[],M=(n("a481"),{name:"submenu",components:{menuicon:C},mixins:[a],props:{menu:{type:[Object,Array],required:!0}},data:function(){return{menues:{}}},computed:{sortedMenuEntries:function(){return LS.ld.orderBy(this.menu.entries,(function(t){return parseInt(t.ordering||999999)}),["asc"])}},methods:{setActiveMenuItemIndex:function(t){t.id;return this.$store.commit("lastMenuItemOpen",t),this.$log.log("Opened Menuitem",t),!0},checkIsOpen:function(t){var e=this,n=this.$store.state.lastMenuOpen==t.id,r=!1;return LS.ld.each(t.submenus,(function(t,n){r=e.$store.state.lastMenuOpen==t.id||r})),n||r||!1},setActiveMenuIndex:function(t){t.id;this.$store.commit("lastMenuOpen",t)},setOpenSubpanel:function(t){this.openSubpanelId=t,this.$emit("menuselected",t)},debugOut:function(t){return JSON.stringify(t)},getLinkClass:function(t){var e="ls-flex-row nowrap ";return e+=t.pjax?"pjax ":" ",e+=this.$store.state.lastMenuItemOpen==t.id?"selected ":" ",e},reConvertHTML:function(t){var e=["'","©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"],n=["'","©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"];return LS.ld.each(n,(function(n,r){t=t.replace(n,e[r])})),t}},created:function(){},mounted:function(){this.updatePjaxLinks(),this.redoTooltips()}}),E=M,L=f(E,j,T,!1,null,null,null),I=L.exports,P={name:"sidemenu",components:{menuicon:C,submenu:I},mixins:[a],props:{openSubpanelId:{type:Number},loading:{type:Boolean,default:!1}},data:function(){return{menues:{}}},computed:{sortedMenues:function(){return LS.ld.orderBy(this.$store.state.sidemenus,(function(t){return parseInt(t.ordering||999999)}),["asc"])},loadingState:{get:function(){return this.loading},set:function(t){this.$emit("changeLoadingState",t)}}},methods:{sortedMenuEntries:function(t){var e=LS.ld.orderBy(t,(function(t){return parseInt(t.ordering||999999)}),["asc"]);return e},setActiveMenuIndex:function(t){t.id;this.$store.commit("lastMenuOpen",t)},setActiveMenuItemIndex:function(t){t.id;this.$store.commit("lastMenuItemOpen",t)},setOpenSubpanel:function(t){this.openSubpanelId=t,this.$emit("menuselected",t)},debugOut:function(t){return JSON.stringify(t)}},created:function(){var t=this;this.$store.dispatch("getSidemenus").then((function(t){}),this.$log.error).finally((function(e){t.loadingState=!1}))},mounted:function(){this.updatePjaxLinks(),$(document).on("vue-reload-remote",(function(){}))}},D=P,N=f(D,b,w,!1,null,null,null),R=N.exports,q=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"ls-flex-column fill"},[t._l(t.sortedMenues,(function(e){return n("div",{directives:[{name:"show",rawName:"v-show",value:!t.loadingState,expression:"!loadingState"}],key:e.title,staticClass:"ls-space margin top-10",attrs:{title:e.title}},[n("div",{staticClass:"btn-group-vertical ls-space padding right-10"},t._l(t.sortedMenuEntries(e.entries),(function(e){return n("a",{key:e.id,staticClass:"btn btn-icon",class:t.compileEntryClasses(e),attrs:{href:e.link,title:e.menu_description,target:e.link_external?"_blank":"_self","data-toggle":"tooltip"},on:{click:function(n){return t.setActiveMenuIndex(e)}}},["fontawesome"==e.menu_icon_type?[n("i",{staticClass:"quickmenuIcon fa",class:"fa-"+e.menu_icon})]:"image"==e.menu_icon_type?[n("img",{attrs:{width:"32px",src:e.menu_icon}})]:"iconclass"==e.menu_icon_type?[n("i",{staticClass:"quickmenuIcon",class:e.menu_icon})]:t._e()],2)})),0)])})),t.loadingState?n("loader-widget",{attrs:{id:"quickmenuLoadingIcon","extra-class":"loader-quickmenu"}}):t._e()],2)},F=[],B={mixins:[a],props:{menuEntries:{type:[Array,Object]},activeMenuIndex:{type:String},loading:{type:Boolean,default:!1}},data:function(){return{}},computed:{loadingState:{get:function(){return this.loading},set:function(t){this.$emit("changeLoadingState",t)}},sortedMenues:function(){return LS.ld.orderBy(this.$store.state.collapsedmenus,(function(t){return parseInt(t.ordering||999999)}),["asc"])}},methods:{sortedMenuEntries:function(t){var e=LS.ld.orderBy(t,(function(t){return parseInt(t.ordering||999999)}),["asc"]);return e},setActiveMenuIndex:function(t){t.id;this.$store.commit("lastMenuItemOpen",t)},compileEntryClasses:function(t){var e="";return this.$store.state.lastMenuItemOpen==t.id?e+=" btn-primary ":e+=" btn-default ",t.link_external||(e+=" pjax "),e}},created:function(){var t=this;this.$store.dispatch("getCollapsedmenus").then((function(t){}),this.$log.error).finally((function(e){t.loadingState=!1}))},mounted:function(){}},z=B,H=(n("ab94"),f(z,q,F,!1,null,null,null)),Q=H.exports,G={props:{landOnTab:String},components:{questionexplorer:d,sidemenu:R,quickmenu:Q,SidebarStateToggle:_},mixins:[a],data:function(){return{activeMenuIndex:0,openSubpanelId:0,menues:[],collapsed:!1,sideBarWidth:"315",initialPos:{x:0,y:0},isMouseDown:!1,isMouseDownTimeOut:null,sideBarHeight:"400px",showLoader:!1,loading:!0,hiddenStateToggleDisplay:"flex",smallScreenHidden:!1}},computed:{useMobileView:function(){return window.innerWidth<768},isActive:function(){return window.SideMenuData.isActive},questiongroups:function(){return this.$store.state.questiongroups},sidemenus:{get:function(){return this.$store.state.sidemenus},set:function(t){this.$store.commit("updateSidemenus",t)}},collapsedmenus:{get:function(){return this.$store.state.collapsedmenus},set:function(t){this.$store.commit("updateCollapsedmenus",t)}},currentTab:{get:function(){return this.$store.state.currentTab},set:function(t){this.$store.commit("changeCurrentTab",t)}},getSideBarWidth:function(){return this.$store.getters.isCollapsed?"98":this.sideBarWidth},sortedMenus:function(){return LS.ld.orderBy(this.menues,(function(t){return parseInt(t.order||999999)}),["asc"])},showSideMenu:function(){return!this.$store.getters.isCollapsed&&"settings"==this.currentTab},showQuestionTree:function(){return!this.$store.getters.isCollapsed&&"questiontree"==this.currentTab},calculateSideBarMenuHeight:function(){var t=this.$store.state.sideBarHeight;return LS.ld.min(t,Math.floor(2*screen.height))+"px"},getWindowHeight:function(){return 2*screen.height+"px"},getloaderHeight:function(){return $("#sidebar").height()}},methods:{applyLoadingState:function(t){this.loading=t},calculateHeight:function(t){t.$store.commit("changeSideBarHeight",$("#in_survey_common").height())},changedQuestionGroupOrder:function(){var t=this,e=this,n=LS.ld.map(this.questiongroups,(function(t,e){var n=LS.ld.map(t.questions,(function(t,e){return{qid:t.qid,question:t.question,gid:t.gid,question_order:t.question_order}}));return{gid:t.gid,group_name:t.group_name,group_order:t.group_order,questions:n}}));this.$log.log("QuestionGroup order changed"),this.showLoader=!0,this.post(window.SideMenuData.updateOrderLink,{grouparray:n,surveyid:this.$store.surveyid}).then((function(t){e.$log.log("questiongroups updated"),e.$store.dispatch("getQuestions").then((function(){e.showLoader=!1}))}),(function(n){e.$log.error("questiongroups updating error!"),t.post(window.SideMenuData.updateOrderLink,{surveyid:t.$store.surveyid}).then((function(){e.getQuestions().then((function(){e.showLoader=!1}))}))}))},controlActiveLink:function(){var t=window.location.href,e=!1;LS.ld.each(this.sidemenus,(function(n,r){LS.ld.each(n.entries,(function(n,r){e=LS.ld.endsWith(t,n.link)?n:e}))}));var n=!1;LS.ld.each(this.collapsedmenus,(function(e,r){LS.ld.each(e.entries,(function(e,r){n=LS.ld.endsWith(t,e.link)?e:n}))}));var r=!1;LS.ld.each(this.questiongroups,(function(e,n){var i=new RegExp("questiongroups/sa/edit/surveyid/"+e.sid+"/gid/"+e.gid);r=i.test(t)||LS.ld.endsWith(t,e.link)?e:r}));var i=!1;LS.ld.each(this.questiongroups,(function(e,n){LS.ld.each(e.questions,(function(e,n){var r=new RegExp("editquestion/surveyid/"+e.sid+"/gid/"+e.gid+"/qid/"+e.qid);i=LS.ld.endsWith(t,e.link)||r.test(t)?e:i}))})),this.$store.commit("closeAllMenus"),0!=e&&1!=this.$store.getters.isCollapsed&&this.$store.commit("lastMenuItemOpen",e),0!=n&&1==this.$store.getters.isCollapsed&&this.$store.commit("lastMenuItemOpen",n),0!=i&&this.$store.commit("lastQuestionOpen",i),0!=r&&(this.$store.commit("lastQuestionGroupOpen",r),this.$store.commit("addToQuestionGroupOpenArray",r))},editEntity:function(){this.setActiveMenuIndex(null,"question")},openEntity:function(){this.setActiveMenuIndex(null,"question")},setActiveMenuIndex:function(t){this.$store.commit("lastMenuItemOpen",t),this.activeMenuIndex=t},setOpenSubpanel:function(t){this.openSubpanelId=t,this.$store.commit("lastMenuOpen",t),this.$emit("menuselected",t)},toggleCollapse:function(){this.$store.commit("changeIsCollapsed",!this.$store.state.isCollapsed),this.$store.getters.isCollapsed?this.sideBarWidth="98":this.sideBarWidth=this.$store.state.sidebarwidth},toggleSmallScreenHide:function(){this.smallScreenHidden=!this.smallScreenHidden},mousedown:function(t){this.useMobileView&&(this.$store.commit("changeIsCollapsed",!1),this.smallScreenHidden=!this.smallScreenHidden),this.isMouseDown=!this.$store.getters.isCollapsed,$("#sidebar").removeClass("transition-animate-width"),$("#pjax-content").removeClass("transition-animate-width")},mouseup:function(t){this.isMouseDown&&(this.isMouseDown=!1,parseInt(this.sideBarWidth)<250&&!this.$store.getters.isCollapsed?(this.toggleCollapse(),this.$store.commit("changeSidebarwidth","340")):this.$store.commit("changeSidebarwidth",this.sideBarWidth),$("#sidebar").addClass("transition-animate-width"),$("#pjax-content").removeClass("transition-animate-width"))},mouseleave:function(t){if(this.isMouseDown){var e=this;this.isMouseDownTimeOut=setTimeout((function(){e.mouseup(t)}),1e3)}},mousemove:function(t,e){if(this.isMouseDown){if(e.$store.getters.isRTL){if(0===t.screenX&&0===t.screenY)return;if(window.innerWidth-t.clientX>screen.width/2)return void this.$store.commit("maxSideBarWidth",!0);e.sideBarWidth=window.innerWidth-t.pageX-8+"px",this.$store.commit("changeSidebarwidth",e.sideBarWidth),this.$store.commit("maxSideBarWidth",!1)}else{if(0===t.screenX&&0===t.screenY)return;if(t.clientX>screen.width/2)return void this.$store.commit("maxSideBarWidth",!0);e.sideBarWidth=t.pageX+8+"px",this.$store.commit("changeSidebarwidth",e.sideBarWidth),this.$store.commit("maxSideBarWidth",!1)}window.clearTimeout(e.isMouseDownTimeOut),e.isMouseDownTimeOut=null}},setBaseMenuPosition:function(t,e){switch(e){case"side":this.sidemenus=LS.ld.orderBy(t,(function(t){return parseInt(t.order||999999)}),["desc"]);break;case"collapsed":this.collapsedmenus=LS.ld.orderBy(t,(function(t){return parseInt(t.order||999999)}),["desc"]);break}},changeCurrentTab:function(t){t="structure"===t?"questiontree":"settings",this.currentTab=t}},created:function(){var t=this;window.innerWidth<768&&this.$store.commit("changeIsCollapsed",!1),t.$store.commit("setSurveyActiveState",1===parseInt(this.isActive)),this.activeMenuIndex=this.$store.state.lastMenuOpen,this.$store.getters.isCollapsed?this.sideBarWidth="98":this.sideBarWidth=t.$store.state.sidebarwidth,LS.ld.each(window.SideMenuData.basemenus,this.setBaseMenuPosition)},mounted:function(){var t=this,e=this;LS.EventBus.$on("updateSideBar",(function(e){t.loading=!0;var n=[Promise.resolve()];e.updateQuestions&&n.push(t.$store.dispatch("getQuestions")),e.collectMenus&&n.push(t.$store.dispatch("collectMenus")),e.activeMenuIndex&&(t.controlActiveLink(),n.push(Promise.resolve())),Promise.all(n).then((function(t){})).catch((function(e){t.$log.error(e)})).finally((function(){t.loading=!1}))})),$(document).trigger("sidebar:mounted"),e.calculateHeight(e),window.addEventListener("resize",(function(){e.calculateHeight(e)})),$(document).on("pjax:send",(function(){t.useMobileView&&t.smallScreenHidden&&(t.smallScreenHidden=!1)})),$(document).on("vue-sidemenu-update-link",(function(){t.controlActiveLink()})),$(document).on("vue-reload-remote",(function(){t.$log.log("vue-reload-remote"),t.$store.dispatch("getQuestions"),t.$store.dispatch("collectMenus"),t.updatePjaxLinks()})),$(document).on("vue-redraw",(function(){t.$log.log("vue-redraw"),t.$store.dispatch("getQuestions"),t.$store.dispatch("collectMenus")})),this.controlActiveLink(),this.updatePjaxLinks(),$("body").on("mousemove",(function(t){e.mousemove(t,e)})),""!==this.landOnTab&&this.changeCurrentTab(this.landOnTab)}},U=G,W=(n("d399"),f(U,i,o,!1,null,"3269e70e",null)),V=W.exports,K=function(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:r});else{var n=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[r].concat(t.init):r,n.call(this,t)}}function r(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}},J="undefined"!==typeof window&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function Z(t){J&&(t._devtoolHook=J,J.emit("vuex:init",t),J.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){J.emit("vuex:mutation",t,e)})))}function X(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function Y(t){return null!==t&&"object"===typeof t}function tt(t){return t&&"function"===typeof t.then}var et=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},nt={namespaced:{configurable:!0}};nt.namespaced.get=function(){return!!this._rawModule.namespaced},et.prototype.addChild=function(t,e){this._children[t]=e},et.prototype.removeChild=function(t){delete this._children[t]},et.prototype.getChild=function(t){return this._children[t]},et.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},et.prototype.forEachChild=function(t){X(this._children,t)},et.prototype.forEachGetter=function(t){this._rawModule.getters&&X(this._rawModule.getters,t)},et.prototype.forEachAction=function(t){this._rawModule.actions&&X(this._rawModule.actions,t)},et.prototype.forEachMutation=function(t){this._rawModule.mutations&&X(this._rawModule.mutations,t)},Object.defineProperties(et.prototype,nt);var rt=function(t){this.register([],t,!1)};function it(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return void 0;it(t.concat(r),e.getChild(r),n.modules[r])}}rt.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},rt.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},rt.prototype.update=function(t){it([],this.root,t)},rt.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var i=new et(e,n);if(0===t.length)this.root=i;else{var o=this.get(t.slice(0,-1));o.addChild(t[t.length-1],i)}e.modules&&X(e.modules,(function(e,i){r.register(t.concat(i),e,n)}))},rt.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var ot;var at=function(t){var e=this;void 0===t&&(t={}),!ot&&"undefined"!==typeof window&&window.Vue&&bt(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var r=t.strict;void 0===r&&(r=!1);var i=t.state;void 0===i&&(i={}),"function"===typeof i&&(i=i()||{}),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new rt(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new ot;var o=this,a=this,u=a.dispatch,s=a.commit;this.dispatch=function(t,e){return u.call(o,t,e)},this.commit=function(t,e,n){return s.call(o,t,e,n)},this.strict=r,ft(this,i,[],this._modules.root),lt(this,i),n.forEach((function(t){return t(e)})),ot.config.devtools&&Z(this)},ut={state:{configurable:!0}};function st(t,e){return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function ct(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;ft(t,n,[],t._modules.root,!0),lt(t,n,e)}function lt(t,e,n){var r=t._vm;t.getters={};var i=t._wrappedGetters,o={};X(i,(function(e,n){o[n]=function(){return e(t)},Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var a=ot.config.silent;ot.config.silent=!0,t._vm=new ot({data:{$$state:e},computed:o}),ot.config.silent=a,t.strict&&mt(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),ot.nextTick((function(){return r.$destroy()})))}function ft(t,e,n,r,i){var o=!n.length,a=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[a]=r),!o&&!i){var u=yt(e,n.slice(0,-1)),s=n[n.length-1];t._withCommit((function(){ot.set(u,s,r.state)}))}var c=r.context=pt(t,a,n);r.forEachMutation((function(e,n){var r=a+n;ht(t,r,e,c)})),r.forEachAction((function(e,n){var r=e.root?n:a+n,i=e.handler||e;vt(t,r,i,c)})),r.forEachGetter((function(e,n){var r=a+n;gt(t,r,e,c)})),r.forEachChild((function(r,o){ft(t,e,n.concat(o),r,i)}))}function pt(t,e,n){var r=""===e,i={dispatch:r?t.dispatch:function(n,r,i){var o=_t(n,r,i),a=o.payload,u=o.options,s=o.type;return u&&u.root||(s=e+s),t.dispatch(s,a)},commit:r?t.commit:function(n,r,i){var o=_t(n,r,i),a=o.payload,u=o.options,s=o.type;u&&u.root||(s=e+s),t.commit(s,a,u)}};return Object.defineProperties(i,{getters:{get:r?function(){return t.getters}:function(){return dt(t,e)}},state:{get:function(){return yt(t.state,n)}}}),i}function dt(t,e){var n={},r=e.length;return Object.keys(t.getters).forEach((function(i){if(i.slice(0,r)===e){var o=i.slice(r);Object.defineProperty(n,o,{get:function(){return t.getters[i]},enumerable:!0})}})),n}function ht(t,e,n,r){var i=t._mutations[e]||(t._mutations[e]=[]);i.push((function(e){n.call(t,r.state,e)}))}function vt(t,e,n,r){var i=t._actions[e]||(t._actions[e]=[]);i.push((function(e,i){var o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e,i);return tt(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))}function gt(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function mt(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}function yt(t,e){return e.length?e.reduce((function(t,e){return t[e]}),t):t}function _t(t,e,n){return Y(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function bt(t){ot&&t===ot||(ot=t,K(ot))}ut.state.get=function(){return this._vm._data.$$state},ut.state.set=function(t){0},at.prototype.commit=function(t,e,n){var r=this,i=_t(t,e,n),o=i.type,a=i.payload,u=(i.options,{type:o,payload:a}),s=this._mutations[o];s&&(this._withCommit((function(){s.forEach((function(t){t(a)}))})),this._subscribers.forEach((function(t){return t(u,r.state)})))},at.prototype.dispatch=function(t,e){var n=this,r=_t(t,e),i=r.type,o=r.payload,a={type:i,payload:o},u=this._actions[i];if(u)return this._actionSubscribers.forEach((function(t){return t(a,n.state)})),u.length>1?Promise.all(u.map((function(t){return t(o)}))):u[0](o)},at.prototype.subscribe=function(t){return st(t,this._subscribers)},at.prototype.subscribeAction=function(t){return st(t,this._actionSubscribers)},at.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},at.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},at.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),ft(this,this.state,t,this._modules.get(t),n.preserveState),lt(this,this.state)},at.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=yt(e.state,t.slice(0,-1));ot.delete(n,t[t.length-1])})),ct(this)},at.prototype.hotUpdate=function(t){this._modules.update(t),ct(this,!0)},at.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(at.prototype,ut);var wt=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=Ct(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof i?i.call(this,e,n):e[i]},n[r].vuex=!0})),n})),xt=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var o=Ct(this.$store,"mapMutations",t);if(!o)return;r=o.context.commit}return"function"===typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n})),St=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;i=t+i,n[r]=function(){if(!t||Ct(this.$store,"mapGetters",t))return this.$store.getters[i]},n[r].vuex=!0})),n})),$t=kt((function(t,e){var n={};return At(e).forEach((function(e){var r=e.key,i=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var o=Ct(this.$store,"mapActions",t);if(!o)return;r=o.context.dispatch}return"function"===typeof i?i.apply(this,[r].concat(e)):r.apply(this.$store,[i].concat(e))}})),n})),Ot=function(t){return{mapState:wt.bind(null,t),mapGetters:St.bind(null,t),mapMutations:xt.bind(null,t),mapActions:$t.bind(null,t)}};function At(t){return Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}}))}function kt(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function Ct(t,e,n){var r=t._modulesNamespaceMap[n];return r}var jt={Store:at,install:bt,version:"2.5.0",mapState:wt,mapMutations:xt,mapGetters:St,mapActions:$t,createNamespacedHelpers:Ot},Tt=jt,Mt=n("da81"),Et=n.n(Mt);(function(){function t(){}Object.defineProperty(t.prototype,"length",{get:function(){return Object.keys(this).length},enumerable:!0,configurable:!0}),t.prototype.key=function(t){return Object.keys(this)[t]},t.prototype.setItem=function(t,e){this[t]=e.toString()},t.prototype.getItem=function(t){return this[t]},t.prototype.removeItem=function(t){delete this[t]},t.prototype.clear=function(){for(var t=0,e=Object.keys(this);t0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];Yt(this,t),this.param=e,this.silencer=n,this.collector=[],this.currentGroupDescription="",this.activeGroups=0,this.timeHolder=null,this.methods=["group","groupEnd","log","trace","time","timeEnd","error","warn"],this.silent={group:function(){},groupEnd:function(){},log:function(){},trace:function(){},time:function(){},timeEnd:function(){},error:function(){},err:function(){},debug:function(){},warn:function(){}}}return re(t,[{key:"_generateError",value:function(){try{throw new Error}catch(t){return t}}},{key:"_insertParamToArguments",value:function(t){if(""!==this.param){var e=Xt(t);return e.unshift(this.param),e}return Array.from(arguments)}},{key:"setSilent",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.silencer=t||!this.silencer}},{key:"group",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);if("function"!==typeof console.group){var e=t[0]||"GROUP";this.currentGroupDescription=e,this.activeGroups++}else console.group.apply(console,t)}}},{key:"groupEnd",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);"function"!==typeof console.groupEnd?(this.currentGroupDescription="",this.activeGroups--,this.activeGroups=0===this.activeGroups?0:this.activeGroups--):console.groupEnd.apply(console,t)}}},{key:"log",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);"function"!==typeof console.group?(t.shift(),t.unshift(" ".repeat(2*this.activeGroups)),this.log.apply(this,t)):console.log.apply(console,t)}}},{key:"trace",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);if("function"!==typeof console.trace){var e=this._generateError();e.stack?this.log.apply(console,e.stack):(this.log(t),void 0!=arguments.callee&&this.trace.apply(console,arguments.callee))}else console.trace.apply(console,t)}}},{key:"time",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);"function"!==typeof console.time?this.timeHolder=new Date:console.time.apply(console,t)}}},{key:"timeEnd",value:function(){if(!this.silencer){var t=this._insertParamToArguments(arguments);if("function"!==typeof console.timeEnd){var e=new Date-this.timeHolder;this.log("Took ".concat(Math.floor(e/36e5)," hours, ").concat(Math.floor(e/6e4)," minutes and ").concat(Math.floor(e/1e3)," seconds ( ").concat(e," ms)")),this.time=new Date}else console.timeEnd.apply(console,t)}}},{key:"error",value:function(){var t=this._insertParamToArguments(arguments);"function"!==typeof console.error?(this.log("--- ERROR ---"),this.log(t)):console.error.apply(console,t)}},{key:"warn",value:function(){var t=this._insertParamToArguments(arguments);"function"!==typeof console.warn?(this.log("--- WARN ---"),this.log(t)):console.warn.apply(console,t)}}]),t}(),oe=ie,ae=new oe("adminsidepanel");window.debugState.backend||ae.setSilent(!0);var ue=function(t){t.prototype.$log=ae},se={updatePjax:function(t){var e=t.commit;$(document).trigger("pjax:refresh"),e("newToggleKey")},getSidemenus:function(t){return new Promise((function(e,n){a.methods.get(window.SideMenuData.getMenuUrl,{position:"side"}).then((function(n){ae.log("sidemenues",n);var r=LS.ld.orderBy(n.data.menues,(function(t){return parseInt(t.order||999999)}),["desc"]);t.commit("updateSidemenus",r),t.dispatch("updatePjax"),e()})).catch((function(t){n(t)}))}))},getCollapsedmenus:function(t){return new Promise((function(e,n){a.methods.get(window.SideMenuData.getMenuUrl,{position:"collapsed"}).then((function(n){ae.log("quickmenu",n);var r=LS.ld.orderBy(n.data.menues,(function(t){return parseInt(t.order||999999)}),["desc"]);t.commit("updateCollapsedmenus",r),t.dispatch("updatePjax"),e()})).catch((function(t){n(t)}))}))},getQuestions:function(t){return new Promise((function(e,n){a.methods.get(window.SideMenuData.getQuestionsUrl).then((function(n){ae.log("Questions",n);var r=n.data.groups;t.commit("updateQuestiongroups",r),t.dispatch("updatePjax"),e()})).catch((function(t){n(t)}))}))},collectMenus:function(t){return Promise.all([t.dispatch("getSidemenus"),t.dispatch("getCollapsedmenus")])},unlockLockOrganizer:function(t){return new Promise((function(e,n){a.methods.post(window.SideMenuData.unlockLockOrganizerUrl,{setting:"lock_organizer",newValue:t.state.allowOrganizer?"0":"1"}).then((function(e){ae.log("setUsersettingLog",e),t.commit("setAllowOrganizer",parseInt(e.data.result))})).catch((function(t){n(t)}))}))},changeCurrentTab:function(t,e){t.commit("changeCurrentTab",e),t.dispatch("collectMenus"),t.dispatch("getQuestions")}};r["a"].use(qt.a),r["a"].use(Tt);var ce=function(t,e){var n="limesurveyadminsidepanel",r=new Nt({key:n+"_"+t+"_"+e,storage:window.localStorage});return new Tt.Store({state:Ft(t),plugins:[r.plugin],getters:Bt,mutations:zt,actions:se})},le=ce,fe=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:" loader--loaderWidget ls-flex ls-flex-column align-content-center align-items-center",staticStyle:{"min-height":"100%"},attrs:{id:"loader-"+t.id}},[n("div",{staticClass:"ls-flex align-content-center align-items-center"},[n("div",{staticClass:"loader-adminpanel text-center",class:t.extraClass},[t._m(0)])])])},pe=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"contain-pulse animate-pulse"},[n("div",{staticClass:"square"}),n("div",{staticClass:"square"}),n("div",{staticClass:"square"}),n("div",{staticClass:"square"})])}],de={name:"loaderWidget",props:{id:{type:String,default:Math.floor(1e3*Math.random())},extraClass:{type:String,default:""}}},he=de,ve=(n("6a47"),f(he,fe,pe,!1,null,"d2d9edba",null)),ge=ve.exports;r["a"].config.ignoredElements=["x-test"],r["a"].config.devtools=!0,r["a"].use(ue),r["a"].component("loader-widget",ge),r["a"].mixin({methods:{updatePjaxLinks:function(){this.$forceUpdate(),this.$store.commit("newToggleKey")},redoTooltips:function(){window.LS.doToolTip()},translate:function(t){return window.SideMenuData.translate[t]||t}},filters:{translate:function(t){return window.SideMenuData.translate[t]||t}}});var me=function(t,e){var n=le(t,e),i={},o=function(t){0!=e&&t.commit("updateSurveyId",e)},a=function(){var t=$("body").find("nav").first().height(),e=$("body").find("footer").last().height(),n=$(".menubar").outerHeight(),r=t+e+n+25,o=window.innerHeight,a=o-r,u=100*(1-parseInt($("#sidebar").width())/$("#vue-apps-main-container").width()),s=100*(1-parseInt("98px")/$("#vue-apps-main-container").width()),c=Math.floor($("#sidebar").data("collapsed")?u:s)+"%";i["surveyViewHeight"]=a,i["surveyViewWidth"]=c,$("#fullbody-container").css({"max-width":c,"overflow-x":"auto"})},u=function(){return new r["a"]({el:"#vue-sidebar-container",store:n,components:{sidebar:V},created:function(){var t=this;$(document).on("vue-sidebar-collapse",(function(){t.$store.commit("changeIsCollapsed",!0)}))},mounted:function(){var t=this;o(this.$store);var e=$("#in_survey_common").height()-35||400;this.$store.commit("changeMaxHeight",e),this.$store.commit("setAllowOrganizer",window.SideMenuData.allowOrganizer),this.updatePjaxLinks(),$(document).on("vue-redraw",(function(){t.updatePjaxLinks()})),$(document).trigger("vue-reload-remote")}})},s=function(){i.reloadcounter=5,$(document).off("pjax:send.panelloading").on("pjax:send.panelloading",(function(){$('
').appendTo("body"),$(".ui-dialog.ui-corner-all.ui-widget.ui-widget-content.ui-front.ui-draggable.ui-resizable").remove(),$("#pjax-file-load-container").find("div").css({width:"20%",display:"block"}),LS.adminsidepanel.reloadcounter--})),$(document).off("pjax:error.panelloading").on("pjax:error.panelloading",(function(t){console.ls.log(t)})),$(document).off("pjax:complete.panelloading").on("pjax:complete.panelloading",(function(){0===LS.adminsidepanel.reloadcounter&&location.reload()})),$(document).off("pjax:scriptcomplete.panelloading").on("pjax:scriptcomplete.panelloading",(function(){$("#pjax-file-load-container").find("div").css("width","100%"),$("#pjaxClickInhibitor").fadeOut(400,(function(){$(this).remove()})),$(document).trigger("vue-resize-height"),$(document).trigger("vue-reload-remote"),setTimeout((function(){$("#pjax-file-load-container").find("div").css({width:"0%",display:"none"})}),2200)}))},c=function(){window.singletonPjax(),document.getElementById("vue-sidebar-container")&&(i["sidemenu"]=u()),$(document).on("click","ul.pagination>li>a",(function(){$(document).trigger("pjax:refresh")})),a(),window.addEventListener("resize",LS.ld.debounce(a,300)),$(document).on("vue-resize-height",LS.ld.debounce(a,300)),s()};return LS.adminCore.addToNamespace(i,"adminsidepanel"),c};$(document).ready((function(){var t="newSurvey";void 0!=window.LS&&(t=window.LS.parameters.$GET.surveyid||window.LS.parameters.keyValuePairs.surveyid),window.SideMenuData&&(t=window.SideMenuData.surveyid),window.adminsidepanel=window.adminsidepanel||me(window.LS.globalUserId,t),window.adminsidepanel()}))},"7a56":function(t,e,n){"use strict";var r=n("7726"),i=n("86cc"),o=n("9e1e"),a=n("2b4c")("species");t.exports=function(t){var e=r[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},"7cd6":function(t,e,n){var r=n("40c3"),i=n("5168")("iterator"),o=n("481b");t.exports=n("584a").getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[r(t)]}},"7e90":function(t,e,n){var r=n("d9f6"),i=n("e4ae"),o=n("c3a1");t.exports=n("8e60")?Object.defineProperties:function(t,e){i(t);var n,a=o(e),u=a.length,s=0;while(u>s)r.f(t,n=a[s++],e[n]);return t}},"7f20":function(t,e,n){var r=n("86cc").f,i=n("69a8"),o=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},8079:function(t,e,n){var r=n("7726"),i=n("1991").set,o=r.MutationObserver||r.WebKitMutationObserver,a=r.process,u=r.Promise,s="process"==n("2d95")(a);t.exports=function(){var t,e,n,c=function(){var r,i;s&&(r=a.domain)&&r.exit();while(t){i=t.fn,t=t.next;try{i()}catch(o){throw t?n():e=void 0,o}}e=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(c)};else if(!o||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var l=u.resolve(void 0);n=function(){l.then(c)}}else n=function(){i.call(r,c)};else{var f=!0,p=document.createTextNode("");new o(c).observe(p,{characterData:!0}),n=function(){p.data=f=!f}}return function(r){var i={fn:r,next:void 0};e&&(e.next=i),t||(t=i,n()),e=i}}},8378:function(t,e){var n=t.exports={version:"2.6.10"};"number"==typeof __e&&(__e=n)},8436:function(t,e){t.exports=function(){}},"84f2":function(t,e){t.exports={}},"85f2":function(t,e,n){t.exports=n("454f")},"86cc":function(t,e,n){var r=n("cb7c"),i=n("c69a"),o=n("6a99"),a=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(u){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"8b97":function(t,e,n){var r=n("d3f4"),i=n("cb7c"),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{r=n("9b43")(Function.call,n("11e9").f(Object.prototype,"__proto__").set,2),r(t,[]),e=!(t instanceof Array)}catch(i){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},"8c57":function(t,e,n){"use strict";var r=n("f7bc"),i=n.n(r);i.a},"8e60":function(t,e,n){t.exports=!n("294c")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},"8f60":function(t,e,n){"use strict";var r=n("a159"),i=n("aebd"),o=n("45f2"),a={};n("35e8")(a,n("5168")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:i(1,n)}),o(t,e+" Iterator")}},9003:function(t,e,n){var r=n("6b4c");t.exports=Array.isArray||function(t){return"Array"==r(t)}},9093:function(t,e,n){var r=n("ce10"),i=n("e11e").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},9138:function(t,e,n){t.exports=n("35e8")},"95d5":function(t,e,n){var r=n("40c3"),i=n("5168")("iterator"),o=n("481b");t.exports=n("584a").isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||o.hasOwnProperty(r(e))}},9744:function(t,e,n){"use strict";var r=n("4588"),i=n("be13");t.exports=function(t){var e=String(i(this)),n="",o=r(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(n+=e);return n}},"9b43":function(t,e,n){var r=n("d8e8");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var r=n("2b4c")("unscopables"),i=Array.prototype;void 0==i[r]&&n("32e9")(i,r,{}),t.exports=function(t){i[r][t]=!0}},"9c80":function(t,e){t.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},"9def":function(t,e,n){var r=n("4588"),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a026:function(t,e,n){"use strict";(function(t){ /*! * Vue.js v2.6.10 * (c) 2014-2019 Evan You diff --git a/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js.map b/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js.map index 0caddd11093..12879aa411a 100644 --- a/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js.map +++ b/assets/packages/adminsidepanel/build.min/js/adminsidepanel.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/library/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/library/fn/object/define-property.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.js","webpack:///./node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/circular-json/build/circular-json.node.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/core-js/library/fn/is-iterable.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./src/helperComponents/loader.vue?4c25","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./src/components/sidebar.vue?a8b7","webpack:///./src/mixins/runAjax.js","webpack:///./src/components/subcomponents/_questionsgroups.vue?ad28","webpack:///src/components/subcomponents/_questionsgroups.vue","webpack:///./src/components/subcomponents/_questionsgroups.vue?33c8","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/components/subcomponents/_questionsgroups.vue?3144","webpack:///./src/components/subcomponents/_sidebarStateToggle.vue?7e6c","webpack:///src/components/subcomponents/_sidebarStateToggle.vue","webpack:///./src/components/subcomponents/_sidebarStateToggle.vue?16fe","webpack:///./src/components/subcomponents/_sidebarStateToggle.vue","webpack:///./src/components/subcomponents/_sidemenu.vue?f18c","webpack:///./src/components/subcomponents/_menuicon.vue?e0e9","webpack:///src/components/subcomponents/_menuicon.vue","webpack:///./src/components/subcomponents/_menuicon.vue?a4f5","webpack:///./src/components/subcomponents/_menuicon.vue","webpack:///./src/components/subcomponents/_submenu.vue?bece","webpack:///src/components/subcomponents/_submenu.vue","webpack:///./src/components/subcomponents/_submenu.vue?8a3f","webpack:///./src/components/subcomponents/_submenu.vue","webpack:///src/components/subcomponents/_sidemenu.vue","webpack:///./src/components/subcomponents/_sidemenu.vue?d5e7","webpack:///./src/components/subcomponents/_sidemenu.vue","webpack:///./src/components/subcomponents/_quickmenu.vue?5b7d","webpack:///src/components/subcomponents/_quickmenu.vue","webpack:///./src/components/subcomponents/_quickmenu.vue?fe76","webpack:///./src/components/subcomponents/_quickmenu.vue?aee4","webpack:///src/components/sidebar.vue","webpack:///./src/components/sidebar.vue?84a8","webpack:///./src/components/sidebar.vue?d05f","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/vuex-persist/dist/esm/index.js","webpack:///./src/store/state.js","webpack:///./src/store/getters.js","webpack:///./src/store/mutations.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/createClass.js","webpack:///../meta/lib/ConsoleShim.js","webpack:///./src/mixins/logSystem.js","webpack:///./src/store/actions.js","webpack:///./src/store/vuex-store.js","webpack:///./src/helperComponents/loader.vue?951a","webpack:///src/helperComponents/loader.vue","webpack:///./src/helperComponents/loader.vue?f99f","webpack:///./src/helperComponents/loader.vue?6c05","webpack:///./src/adminsidepanelmain.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./src/components/subcomponents/_questionsgroups.vue?ac0c","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/core-js/library/modules/core.is-iterable.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./lib/surveysettings.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./src/components/subcomponents/_quickmenu.vue?964e","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/library/fn/array/from.js","webpack:///./src/components/sidebar.vue?74ce","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/lodash.merge/index.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/vue-localstorage/dist/vue-local-storage.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/core-js/library/fn/array/is-array.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_string-ws.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","FF_ITERATOR","KEYS","VALUES","returnThis","this","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","undefined","$anyNative","entries","values","P","F","toInteger","defined","TO_STRING","that","pos","a","b","String","length","charCodeAt","charAt","slice","at","S","index","unicode","it","core","global","speciesConstructor","promiseResolve","R","onFinally","C","Promise","isFunction","then","x","e","ctx","IObject","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","val","res","O","self","f","result","push","anObject","ignoreCase","multiline","sticky","$keys","enumBugKeys","max","Math","min","cof","Array","isArray","arg","pIE","createDesc","toIObject","toPrimitive","has","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","dP","getKeys","defineProperties","Properties","repeat","$at","iterated","_t","_i","point","done","split","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","id","fn","listener","event","data","args","arguments","Function","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","set","clear","isObject","toString","valueOf","TypeError","isArrayIter","createProperty","getIterFn","iter","from","arrayLike","step","iterator","aLen","mapfn","mapping","iterFn","document","is","createElement","ret","$defineProperty","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","re","exec","groups","replace","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","apply","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","constructor","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","strfn","rxfn","RegExp","string","ARG","tryGet","T","B","callee","getOwnPropertySymbols","classof","getIteratorMethod","isRegExp","advanceStringIndex","callRegExpExec","$min","$push","$SPLIT","LENGTH","LAST_INDEX","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","maybeCallNative","internalSplit","separator","limit","match","lastIndex","lastLength","output","flags","lastLastIndex","splitLimit","separatorCopy","source","test","splitter","rx","unicodeMatching","lim","q","A","z","SRC","$toString","TPL","inspectSource","safe","join","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","style","display","src","contentWindow","open","write","close","store","uid","USE_SYMBOL","$exports","VERSION","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","parseFloat","freeParseInt","parseInt","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","types","require","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","func","thisArg","arrayAggregator","array","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","asciiToArray","asciiWords","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseSortBy","comparer","sort","current","baseTimes","baseToPairs","props","baseUnary","baseValues","cacheHas","cache","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","getValue","hasUnicode","hasUnicodeWord","iteratorToArray","mapToArray","map","size","forEach","overArg","transform","replaceHolders","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","unescapeHtmlChar","unicodeWords","runInContext","context","_","defaults","pick","Date","Error","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","clearTimeout","ctxNow","ctxSetTimeout","nativeCeil","ceil","nativeFloor","floor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","reverse","DataView","Map","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","clone","lazyValue","dir","isArr","isRight","arrLength","view","getView","start","end","iteratees","iterLength","takeCount","baseWrapperValue","outer","iterIndex","type","computed","Hash","entry","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","pop","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","add","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","skip","number","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","wait","baseDifference","includes","isCommon","valuesLength","valuesIndex","templateSettings","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFill","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","path","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInverter","baseInvoke","parent","last","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","pattern","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","newValue","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","isPlainObject","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","indexOf","basePullAt","indexes","previous","baseUnset","baseRange","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","buffer","copy","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","dataView","byteOffset","cloneRegExp","cloneSymbol","symbol","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","order","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createBind","isBind","Ctor","createCtor","wrapper","createCaseFirst","methodName","trailing","createCompounder","callback","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","funcName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createPartial","createRange","toFinite","createRelationalOperation","toNumber","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","precision","pair","noop","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrValue","othValue","compared","message","convert","objProps","objLength","othProps","skipCtor","objCtor","othCtor","flatten","otherFunc","isKeyable","isOwn","unmasked","stubArray","transforms","getWrapDetails","hasPath","hasFunc","input","insertWrapDetails","details","ArrayBuffer","resolve","ctorString","isMaskable","stubFalse","memoizeCapped","memoize","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","reference","updateWrapDetails","count","lastCalled","stamp","remaining","rand","quote","subString","chunk","compact","concat","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","head","initial","intersection","mapped","intersectionBy","intersectionWith","lastIndexOf","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","remove","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","tail","take","takeRight","takeRightWhile","takeWhile","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","chain","tap","interceptor","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","toArray","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","countBy","every","filter","find","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","isString","invokeMap","keyBy","orderBy","partition","reduce","reduceRight","reject","negate","sample","sampleSize","shuffle","some","sortBy","after","before","bindKey","curry","curryRight","debounce","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","delay","flip","resolver","memoized","Cache","once","overArgs","funcsLength","partial","partialRight","rearg","rest","spread","throttle","unary","wrap","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","gte","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isInteger","isMatch","isMatchWith","isNaN","isNumber","isNative","isNull","isNil","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lte","sign","remainder","isBinary","toSafeInteger","assign","assignIn","assignInWith","assignWith","properties","propsIndex","propsLength","defaultsDeep","mergeWith","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","invert","invertBy","mapKeys","mapValues","merge","omit","omitBy","pickBy","prop","setWith","toPairs","toPairsIn","isArrLike","unset","update","updateWith","valuesIn","clamp","inRange","floating","temp","camelCase","word","toLowerCase","capitalize","upperFirst","endsWith","target","position","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","pad","strLength","padEnd","padStart","radix","snakeCase","startCase","startsWith","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","toUpperCase","trim","trimEnd","trimStart","truncate","omission","search","substring","newEnd","unescape","upperCase","bindAll","methodNames","cond","conforms","defaultTo","flow","flowRight","matches","matchesProperty","method","methodOf","mixin","noConflict","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubObject","stubString","stubTrue","times","toPath","uniqueId","prefix","augend","addend","divide","dividend","divisor","maxBy","mean","meanBy","minBy","multiply","multiplier","multiplicand","round","subtract","minuend","subtrahend","sum","sumBy","entriesIn","extend","extendWith","each","eachRight","first","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","toJSON","un","documentElement","ArrayProto","configurable","quot","createHTML","attribute","p1","ObjectProto","inheritIfRequired","gOPN","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","proxy","descriptor","$Object","desc","def","stat","bitmap","writable","BREAK","RETURN","SAFE_CLOSING","riter","skipClosing","arr","MATCH","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","PATCH","reCopy","specialChar","safeSpecialChar","escapedSafeSpecialChar","specialCharRG","safeSpecialCharRG","safeStartWithSpecialCharRG","v","$String","generateReplacer","replacer","doNotIgnore","inspect","all","mapp","lvl","retrieveFromPath","generateReviver","reviver","regenerate","regenerateArray","retrieve","regenerateObject","CircularJSON","stringify","space","doNotResolve","parser","parse","text","JSON","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","aFunction","anInstance","forOf","task","microtask","newPromiseCapabilityModule","perform","userAgent","PROMISE","versions","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","promise","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_n","_c","_v","ok","_s","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","onrejectionhandled","$reject","_d","_w","$resolve","executor","err","onFulfilled","onRejected","G","W","capability","$$reject","$index","alreadyCalled","race","SHARED","version","copyright","shared","__e","toAbsoluteIndex","IS_INCLUDES","el","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","setPrototypeOf","builtinExec","px","webpackPolyfill","deprecate","children","IS_WRAP","virtual","DESCRIPTORS","define","TO_STRING_TAG","DOMIterables","Collection","gOPS","$assign","K","k","isEnum","j","$find","forced","window","__g","render","_vm","$createElement","_self","staticClass","class","smallScreenHidden","$store","state","inSurveyViewHeight","hiddenStateToggleDisplay","attrs","on","mouseleave","mouseup","useMobileView","width","getSideBarWidth","height","getloaderHeight","_m","_e","staticStyle","toggleCollapse","directives","rawName","expression","calculateSideBarMenuHeight","loading","applyLoadingState","openEntity","changedQuestionGroupOrder","getters","getWindowHeight","isCollapsed","mousedown","$event","preventDefault","domProps","toggleSmallScreenHide","staticRenderFns","_runAjax","uri","$","ajax","url","dataType","success","response","status","xhr","transferStatus","responseData","responseJSON","responseText","post","delete","put","createAllowance","createQuestionGroupLink","_f","createFullQuestionLink","translate","allowOrganizer","toggleOrganizer","collapseAll","dropQuestionGroup","questiongroup","_l","gid","questionGroupItemClasses","dragoverQuestiongroup","surveyIsActive","endDraggingGroup","startDraggingGroup","stopPropagation","link","openQuestionGroup","isRTL","itemWidth","group_name","questions","isOpen","toggleActivation","dropQuestion","question","orderQuestions","qid","questionItemClasses","hidden","questionHasCondition","question_flat","dragoverQuestion","surveyActiveState","endDraggingQuestion","startDraggingQuestion","openQuestion","title","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","component","currentKey","$emit","currentTab","menu","loadingState","iconType","icon","menuItem","getLinkClass","link_external","setActiveMenuItemIndex","menu_class","reConvertHTML","menu_description","lastMenuItemOpen","menu_icon_type","menu_icon","menu_title","submenu","checkIsOpen","setActiveMenuIndex","description","sortedMenuEntries","compileEntryClasses","applyMixin","Vue","Number","vuexInit","_init","init","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","targetState","replaceState","subscribe","mutation","forEachValue","obj","isPromise","Module","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors$1","namespaced","addChild","getChild","mutations","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","targetModule","newModule","getNamespace","namespace","this$1","rawChildModule","unregister","Store","install","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","ref","dispatch","payload","installModule","resetStoreVM","plugin","config","devtools","prototypeAccessors","genericSubscribe","subs","resetStore","hot","oldVm","wrappedGetters","silent","$$state","enableStrictMode","_withCommit","_data","$destroy","rootState","isRoot","parentState","getNestedState","moduleName","local","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","child","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","cb","rootGetters","catch","rawGetter","$watch","deep","sync","_Vue","sub","subscribeAction","watch","registerModule","preserveState","unregisterModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","len","mapGetters","mapActions","createNamespacedHelpers","helper","index_esm","class_1","setItem","getItem","removeItem","SimplePromiseQueue","_queue","_flushing","enqueue","flushQueue","_this","nextTask","shift","into","VuexPersistence","_mutex","subscriber","subscribed","supportCircular","storage","localStorage","reducer","strictMode","RESTORE_MUTATION","savedState","mergedState","propertyName","$set","asyncStorage","storageConfig","_config","restoreState","saveState","userid","surveyid","language","maxHeight","sideBodyHeight","sideBarHeight","currentUser","sidebarwidth","maximalSidebar","pjax","pjaxLoading","lastMenuOpen","lastQuestionOpen","lastQuestionGroupOpen","questionGroupOpenArray","questiongroups","collapsedmenus","sidemenus","topmenus","bottommenus","toggleKey","substractContainer","bodyWidth","collapsedBodyWidth","sideBarSize","sidebarWidth","collapsedSidebarWidth","getElementsByTagName","getAttribute","innerWidth","updateSurveyId","newSurveyId","changeLanguage","changeCurrentTab","changeSidebarwidth","maxSideBarWidth","changeIsCollapsed","trigger","changeMaxHeight","newHeight","changeSideBarHeight","changeInSurveyViewHeight","changeSideBodyHeight","changeCurrentUser","newUser","closeAllMenus","menu_id","menuObject","questionObject","questionGroupObject","updateQuestiongroups","addToQuestionGroupOpenArray","questiongroupToAdd","tmpArray","updateSidemenus","updateCollapsedmenus","updateTopmenus","updateBottommenus","setSurveyActiveState","surveyState","newToggleKey","setAllowOrganizer","newVal","_arrayWithoutHoles","arr2","_iterableToArray","_nonIterableSpread","_toConsumableArray","_classCallCheck","instance","_defineProperties","_createClass","protoProps","staticProps","ConsoleShim","param","silencer","collector","currentGroupDescription","activeGroups","timeHolder","groupEnd","log","trace","timeEnd","debug","warn","rawArgs","unshift","_insertParamToArguments","artificialError","_generateError","diff","LOG","debugState","backend","setSilent","PluginLog","$log","updatePjax","getSidemenus","SideMenuData","getMenuUrl","newSidemenus","LS","ld","menues","getCollapsedmenus","newCollapsedmenus","getQuestions","getQuestionsUrl","newQuestiongroups","collectMenus","unlockLockOrganizer","unlockLockOrganizerUrl","setting","use","VueLocalStorage","Vuex","getAppState","AppStateName","vuexLocal","statePreset","extraClass","ignoredElements","Loader","updatePjaxLinks","$forceUpdate","redoTooltips","doToolTip","filters","Lsadminsidepanel","AppState","panelNameSpace","applySurveyId","controlWindowSize","adminmenuHeight","footerHeight","menuHeight","outerHeight","inSurveyOffset","windowHeight","innerHeight","inSurveyViewWidth","css","createSideMenu","components","sidebar","Sidebar","created","mounted","applyPjaxMethods","reloadcounter","off","appendTo","adminsidepanel","ls","location","reload","fadeOut","createPanelAppliance","singletonPjax","getElementById","adminCore","addToNamespace","ready","parameters","$GET","keyValuePairs","globalUserId","macrotask","Observer","MutationObserver","WebKitMutationObserver","navigator","standalone","toggle","node","createTextNode","observe","characterData","Attributes","check","buggy","__proto__","hiddenKeys","getOwnPropertyNames","isIterable","RangeError","UNSCOPABLES","emptyObject","freeze","isUndef","isDef","isTrue","isFalse","isPrimitive","_toString","isValidArrayIndex","makeMap","expectsLowerCase","list","isBuiltInTag","isReservedAttribute","item","hasOwn","cached","hit","camelizeRE","camelize","hyphenateRE","hyphenate","polyfillBind","boundFn","_length","nativeBind","to","_from","no","genStaticKeys","staticKeys","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","getTime","keysA","keysB","looseIndexOf","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","performance","errorHandler","warnHandler","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","parsePath","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","supportsPassive","opts","isServerRendering","env","VUE_ENV","_Set","hasSymbol","Reflect","ownKeys","Dep","addSub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayMethods","methodsToPatch","original","inserted","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","vmCount","protoAugment","copyAugment","walk","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","childOb","dependArray","del","items","strats","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","inject","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","def$$1","mergeOptions","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","getPropDefaultValue","prevShouldObserve","default","_props","getType","isSameType","expectedTypes","handleError","info","cur","$parent","errorCaptured","capture","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","observer","textNode","_resolve","seenObjects","traverse","_traverse","isA","isFrozen","depId","normalizeEvent","passive","once$$1","createFnInvoker","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","altKey","checkProp","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","renderList","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","tree","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_q","_k","_b","_u","_g","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","insert","_isMounted","callHook","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","cid","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","model","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","force","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","$nextTick","_render","ensureCtor","comp","base","factory","errorComp","resolved","owner","owners","loadingComp","timerLoading","timerTimeout","$on","forceRender","renderCompleted","timeout","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","cbs","setActiveInstance","prevActiveInstance","initLifecycle","$children","$refs","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","isInInactiveTree","direct","handlers","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","createEvent","timeStamp","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","cleanupDeps","tmp","oldValue","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$delete","immediate","uid$3","initMixin","_uid","initInternalComponent","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","modified","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","include","exclude","destroyed","ref$1","builtInComponents","initGlobalAPI","configDef","util","defineReactive","observable","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","parentNode","childNode","mergeClassData","renderClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","isPreTag","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","query","selected","querySelector","createElement$1","tagName","multiple","setAttribute","createElementNS","createComment","insertBefore","newNode","referenceNode","nextSibling","setTextContent","textContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","transition","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","isRenderedModule","inVPre","hasChildNodes","innerHTML","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","hasAttribute","removeAttribute","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","parseFilters","prev","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","msg","pluckModuleFunction","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","events","right","middle","native","nativeEvents","newHandler","getRawBindingAttr","rawAttrsMap","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","baseValueExpression","valueExpression","assignment","genAssignmentCode","parseModel","eof","isStringStart","parseString","parseBracket","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","_warn","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","selectedVal","code","needCompositionGuard","normalizeEvents","change","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","svgContainer","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","activeElement","_vModifiers","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","addClass","classList","removeClass","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","initEvent","dispatchEvent","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","getBoundingClientRect","updated","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","body","offsetHeight","moved","WebkitTransform","transitionDuration","_moveCb","_hasMove","cloneNode","newPos","oldPos","dx","left","dy","top","platformComponents","defaultTagRE","regexEscapeRE","buildRegex","delimiters","parseText","tagRE","tokenValue","tokens","rawTokens","transformNode","classBinding","genData","klass$1","transformNode$1","styleBinding","genData$1","decoder","style$1","he","decode","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","parseHTML","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","unarySlash","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","warn$2","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","element","trimEndingWhitespace","processed","processElement","if","elseif","else","addIfCondition","block","forbidden","processIfConditions","slotScope","slotTarget","lastNode","comments","outputSourceRange","start$1","guardIESVGBug","isForbiddenTag","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","isTextTag","processKey","processRef","processSlotContent","processSlotOutlet","processComponent","processAttrs","checkInFor","parseFor","inMatch","for","alias","iteratorMatch","iterator1","iterator2","findPrevElement","condition","ifConditions","slotTargetDynamic","slotBinding","getSlotName","slotBinding$1","dynamic$1","slotContainer","slotName","syncGen","isDynamic","hasBindings","parseModifiers","camel","argMatch","ieNSBug","ieNSPrefix","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","cloneASTElement","branch1","branch2","model$1","modules$1","isStaticKey","isPlatformReservedTag","directives$1","baseOptions","genStaticKeysCached","genStaticKeys$1","optimize","markStatic$1","markStaticRoots","static","l$1","staticInFor","staticRoot","isDirectChildOfTemplateFor","fnExpRE","fnInvokeRE","simplePathRE","esc","tab","up","down","keyNames","genGuard","modifierCode","stop","prevent","ctrl","alt","meta","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genKeyFilter","genFilterCode","keyVal","keyCode","keyName","wrapListeners","bind$1","wrapData","baseDirectives","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","genData$2","genChildren","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","genDirectives","genProps","genScopedSlots","genInlineTemplate","needRuntime","hasRuntime","gen","inlineRenderFns","containsSlotChild","needsKey","generatedSlots","genScopedSlot","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","getNormalizationType","genNode","needsNormalization","genComment","genText","transformSpecialNewlines","bind$$1","componentName","dynamicProps","createFunction","errors","createCompileToFunctionFn","compile","compiled","fnGenErrors","createCompilerCreator","baseCompile","finalOptions","tips","tip","compileToFunctions","div","createCompiler","getShouldDecode","href","idToTemplate","mount","getOuterHTML","outerHTML","container","submit","copysurvey","templatechange","$element","templateName","templatename","image","sMessage","sSelectASurveyMessage","sSelectASurveyName","alert","click","ui","newTab","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","REPLACE","$replace","searchValue","replaceValue","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","symbols","PromiseCapability","$$resolve","spaces","non","ltrim","rtrim","exporter","ALIAS","FORCE","$iterators","ArrayValues","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","ENDS_WITH","$endsWith","searchString","endPosition","promiseCapability","addToUnscopables","Arguments","$trim","NUMBER","$Number","BROKEN_COF","TRIM","argument","third","maxCode","NaN","digits","g","arrayIndexOf","names","_properties","lsKey","_process","addProperty","VueLocalStorage$1","server","SERVER_BUILD","existingProp","D","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","Item","browser","argv","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","forbiddenField"],"mappings":"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","file":"js/adminsidepanel.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n 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',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** 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/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n 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 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

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

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_questionsgroups.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_questionsgroups.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./_questionsgroups.vue?vue&type=template&id=259f7f98&\"\nimport script from \"./_questionsgroups.vue?vue&type=script&lang=js&\"\nexport * from \"./_questionsgroups.vue?vue&type=script&lang=js&\"\nimport style0 from \"./_questionsgroups.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{key:_vm.currentKey,staticClass:\"ls-space margin bottom-15 top-5 col-12\",staticStyle:{\"height\":\"40px\"}},[_c('div',{staticClass:\"ls-flex-row align-content-space-between align-items-flex-end ls-space padding left-0 right-10 bottom-0 top-0\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.$store.getters.isCollapsed)?_c('button',{staticClass:\"btn btn-default ls-space padding left-15 right-15\",on:{\"click\":function($event){return _vm.$emit('collapse')}}},[_c('i',{class:_vm.$store.getters.isRTL ? 'fa fa-chevron-right' : 'fa fa-chevron-left'})]):_vm._e()]),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.$store.getters.isCollapsed)?_c('div',{staticClass:\"ls-flex-item grow-10 col-12\"},[_c('div',{staticClass:\"btn-group btn-group col-12\"},[_c('button',{staticClass:\"btn col-6 force color white onhover tabbutton\",class:_vm.currentTab =='settings' ? 'btn-primary' : 'btn-default',attrs:{\"id\":\"adminsidepanel__sidebar--selectorSettingsButton\"},on:{\"click\":function($event){_vm.currentTab='settings'}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"translate\")(\"settings\"))+\"\\n \")]),_c('button',{staticClass:\"btn col-6 force color white onhover tabbutton\",class:_vm.currentTab =='questiontree' ? 'btn-primary' : 'btn-default',attrs:{\"id\":\"adminsidepanel__sidebar--selectorStructureButton\"},on:{\"click\":function($event){_vm.currentTab='questiontree'}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"translate\")(\"structure\"))+\"\\n \")])])]):_vm._e()]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.$store.getters.isCollapsed)?_c('button',{staticClass:\"btn btn-default ls-space padding left-15 right-15\",on:{\"click\":function($event){return _vm.$emit('collapse')}}},[_c('i',{class:_vm.$store.getters.isRTL ? 'fa fa-chevron-left' : 'fa fa-chevron-right'})]):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_sidebarStateToggle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_sidebarStateToggle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_sidebarStateToggle.vue?vue&type=template&id=34d37dcc&\"\nimport script from \"./_sidebarStateToggle.vue?vue&type=script&lang=js&\"\nexport * from \"./_sidebarStateToggle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ls-flex-column fill menu-pane overflow-enabled ls-space padding all-0 margin top-5\"},[_vm._l((_vm.sortedMenues),function(menu){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loadingState),expression:\"!loadingState\"}],key:menu.id,staticClass:\"ls-flex-row wrap ls-space padding all-0\",attrs:{\"title\":menu.title,\"id\":menu.id}},[_c('label',{staticClass:\"menu-label\"},[_vm._v(_vm._s(menu.title))]),_c('submenu',{attrs:{\"menu\":menu}})],1)}),(_vm.loadingState)?_c('loader-widget',{attrs:{\"id\":\"sidemenuLoaderWidget\"}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.iconType == 'fontawesome')?_c('i',{staticClass:\"fa\",class:'fa-'+_vm.icon},[_vm._v(\" \")]):(_vm.iconType == 'image')?_c('img',{attrs:{\"width\":\"32px\",\"src\":_vm.icon}}):(_vm.iconType == 'iconclass')?_c('i',{class:_vm.icon},[_vm._v(\" \")]):_c('span')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_menuicon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_menuicon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_menuicon.vue?vue&type=template&id=7f77dd1a&\"\nimport script from \"./_menuicon.vue?vue&type=script&lang=js&\"\nexport * from \"./_menuicon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"list-group subpanel col-12\",class:'level-'+(_vm.menu.level)},[_vm._l((_vm.sortedMenuEntries),function(menuItem){return _c('a',{key:menuItem.id,staticClass:\"list-group-item\",class:_vm.getLinkClass(menuItem),attrs:{\"href\":menuItem.link,\"target\":menuItem.link_external == true ? '_blank' : '',\"id\":'sidemenu_'+menuItem.name},on:{\"click\":function($event){$event.stopPropagation();return _vm.setActiveMenuItemIndex(menuItem)}}},[_c('div',{staticClass:\"col-12\",class:menuItem.menu_class,attrs:{\"title\":_vm.reConvertHTML(menuItem.menu_description),\"data-toggle\":\"tooltip\"}},[_c('div',{staticClass:\"ls-space padding all-0\",class:_vm.$store.state.lastMenuItemOpen == menuItem.id ? 'col-sm-10' : 'col-sm-12'},[_c('menuicon',{attrs:{\"icon-type\":menuItem.menu_icon_type,\"icon\":menuItem.menu_icon}}),_c('span',{domProps:{\"innerHTML\":_vm._s(menuItem.menu_title)}}),(menuItem.link_external == true)?_c('i',{staticClass:\"fa fa-external-link\"},[_vm._v(\" \")]):_vm._e()],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$store.state.lastMenuItemOpen == menuItem.id),expression:\"$store.state.lastMenuItemOpen == menuItem.id\"}],staticClass:\"col-sm-2 text-center ls-space padding all-0 background white\"},[_c('i',{staticClass:\"fa fa-chevron-right\"},[_vm._v(\" \")])])])])}),_vm._l((_vm.menu.submenus),function(submenu){return _c('li',{key:submenu.id,staticClass:\"list-group-item\",class:_vm.checkIsOpen(submenu) ? 'menu-selected' : '',on:{\"!click\":function($event){$event.stopPropagation();return _vm.setActiveMenuIndex(submenu)}}},[_c('a',{staticClass:\"ls-flex-row nowrap align-item-center align-content-center\",class:_vm.checkIsOpen(submenu) ? 'ls-space margin bottom-5' : '',attrs:{\"href\":\"#\",\"title\":_vm.reConvertHTML(submenu.description),\"data-toggle\":\"tooltip\"}},[_c('div',{staticClass:\"ls-space col-sm-10 padding all-0\"},[_c('menuicon',{attrs:{\"icon-type\":\"fontawesome\",\"icon\":\"arrow-right\"}}),_c('span',{domProps:{\"innerHTML\":_vm._s(submenu.title)}})],1),_c('div',{staticClass:\"col-sm-2 text-center ls-space padding all-0\",class:(_vm.checkIsOpen(submenu) ? 'menu-open' : '')},[_c('i',{staticClass:\"fa fa-level-down\"})])]),_c('transition',{attrs:{\"name\":\"slide-fade-down\"}},[(_vm.checkIsOpen(submenu))?_c('submenu',{attrs:{\"menu\":submenu}}):_vm._e()],1)],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_submenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_submenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_submenu.vue?vue&type=template&id=6efd1dee&\"\nimport script from \"./_submenu.vue?vue&type=script&lang=js&\"\nexport * from \"./_submenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_sidemenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_sidemenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_sidemenu.vue?vue&type=template&id=67ef8c0c&\"\nimport script from \"./_sidemenu.vue?vue&type=script&lang=js&\"\nexport * from \"./_sidemenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ls-flex-column fill\"},[_vm._l((_vm.sortedMenues),function(menu){return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loadingState),expression:\"!loadingState\"}],key:menu.title,staticClass:\"ls-space margin top-10\",attrs:{\"title\":menu.title}},[_c('div',{staticClass:\"btn-group-vertical ls-space padding right-10\"},_vm._l((_vm.sortedMenuEntries(menu.entries)),function(menuItem){return _c('a',{key:menuItem.id,staticClass:\"btn btn-icon\",class:_vm.compileEntryClasses(menuItem),attrs:{\"href\":menuItem.link,\"title\":menuItem.menu_description,\"target\":menuItem.link_external ? '_blank' : '_self',\"data-toggle\":\"tooltip\"},on:{\"click\":function($event){return _vm.setActiveMenuIndex(menuItem)}}},[(menuItem.menu_icon_type == 'fontawesome')?[_c('i',{staticClass:\"quickmenuIcon fa\",class:'fa-'+menuItem.menu_icon})]:(menuItem.menu_icon_type == 'image')?[_c('img',{attrs:{\"width\":\"32px\",\"src\":menuItem.menu_icon}})]:(menuItem.menu_icon_type == 'iconclass')?[_c('i',{staticClass:\"quickmenuIcon\",class:menuItem.menu_icon})]:_vm._e()],2)}),0)])}),(_vm.loadingState)?_c('loader-widget',{attrs:{\"id\":\"quickmenuLoadingIcon\",\"extra-class\":\"loader-quickmenu\"}}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_quickmenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_quickmenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./_quickmenu.vue?vue&type=template&id=786d1219&\"\nimport script from \"./_quickmenu.vue?vue&type=script&lang=js&\"\nexport * from \"./_quickmenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./_quickmenu.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sidebar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./sidebar.vue?vue&type=template&id=3269e70e&scoped=true&\"\nimport script from \"./sidebar.vue?vue&type=script&lang=js&\"\nexport * from \"./sidebar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./sidebar.vue?vue&type=style&index=0&id=3269e70e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3269e70e\",\n null\n \n)\n\nexport default component.exports","/**\n * vuex v2.5.0\n * (c) 2017 Evan You\n * @license MIT\n */\nvar applyMixin = function (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n};\n\nvar devtoolHook =\n typeof window !== 'undefined' &&\n window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\n\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n this._children = Object.create(null);\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n if (!parent.getChild(key).runtime) { return }\n\n parent.removeChild(key);\n};\n\nfunction update (path, targetModule, newModule) {\n if (process.env.NODE_ENV !== 'production') {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"Store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n var state = options.state; if ( state === void 0 ) state = {};\n if (typeof state === 'function') {\n state = state() || {};\n }\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n if (Vue.config.devtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nprototypeAccessors.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors.state.set = function (v) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, \"Use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n process.env.NODE_ENV !== 'production' &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n this._actionSubscribers.forEach(function (sub) { return sub(action, this$1.state); });\n\n return entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload)\n};\n\nStore.prototype.subscribe = function subscribe (fn) {\n return genericSubscribe(fn, this._subscribers)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn) {\n return genericSubscribe(fn, this._actionSubscribers)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\nfunction genericSubscribe (fn, subs) {\n if (subs.indexOf(fn) < 0) {\n subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n computed[key] = function () { return fn(store); };\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (process.env.NODE_ENV !== 'production' && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if (process.env.NODE_ENV !== 'production' && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n var gettersProxy = {};\n\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n\n return gettersProxy\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload, cb) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload, cb);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if (process.env.NODE_ENV !== 'production') {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if (process.env.NODE_ENV !== 'production') {\n assert(store._committing, \"Do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.length\n ? path.reduce(function (state, key) { return state[key]; }, state)\n : state\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof type === 'string', (\"Expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if (process.env.NODE_ENV !== 'production' && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\nfunction normalizeMap (map) {\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if (process.env.NODE_ENV !== 'production' && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\nvar index_esm = {\n Store: Store,\n install: install,\n version: '2.5.0',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers\n};\n\nexport { Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers };\nexport default index_esm;\n","import lodashMerge from 'lodash.merge';\n\n/**\r\n * Created by championswimmer on 22/07/17.\r\n */\r\nvar MockStorage;\r\n// @ts-ignore\r\n{\r\n MockStorage = /** @class */ (function () {\r\n function class_1() {\r\n }\r\n Object.defineProperty(class_1.prototype, \"length\", {\r\n get: function () {\r\n return Object.keys(this).length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n class_1.prototype.key = function (index) {\r\n return Object.keys(this)[index];\r\n };\r\n class_1.prototype.setItem = function (key, data) {\r\n this[key] = data.toString();\r\n };\r\n class_1.prototype.getItem = function (key) {\r\n return this[key];\r\n };\r\n class_1.prototype.removeItem = function (key) {\r\n delete this[key];\r\n };\r\n class_1.prototype.clear = function () {\r\n for (var _i = 0, _a = Object.keys(this); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n delete this[key];\r\n }\r\n };\r\n return class_1;\r\n }());\r\n}\n\n// tslint:disable: variable-name\r\nvar SimplePromiseQueue = /** @class */ (function () {\r\n function SimplePromiseQueue() {\r\n this._queue = [];\r\n this._flushing = false;\r\n }\r\n SimplePromiseQueue.prototype.enqueue = function (promise) {\r\n this._queue.push(promise);\r\n if (!this._flushing) {\r\n return this.flushQueue();\r\n }\r\n return Promise.resolve();\r\n };\r\n SimplePromiseQueue.prototype.flushQueue = function () {\r\n var _this = this;\r\n this._flushing = true;\r\n var chain = function () {\r\n var nextTask = _this._queue.shift();\r\n if (nextTask) {\r\n return nextTask.then(chain);\r\n }\r\n else {\r\n _this._flushing = false;\r\n }\r\n };\r\n return Promise.resolve(chain());\r\n };\r\n return SimplePromiseQueue;\r\n}());\n\nfunction merge(into, from) {\r\n return lodashMerge({}, into, from);\r\n}\n\nvar CircularJSON = JSON;\r\n/**\r\n * A class that implements the vuex persistence.\r\n * @type S type of the 'state' inside the store (default: any)\r\n */\r\nvar VuexPersistence = /** @class */ (function () {\r\n /**\r\n * Create a {@link VuexPersistence} object.\r\n * Use the plugin function of this class as a\r\n * Vuex plugin.\r\n * @param {PersistOptions} options\r\n */\r\n function VuexPersistence(options) {\r\n var _this = this;\r\n // tslint:disable-next-line:variable-name\r\n this._mutex = new SimplePromiseQueue();\r\n /**\r\n * Creates a subscriber on the store. automatically is used\r\n * when this is used a vuex plugin. Not for manual usage.\r\n * @param store\r\n */\r\n this.subscriber = function (store) {\r\n return function (handler) { return store.subscribe(handler); };\r\n };\r\n if (typeof options === 'undefined')\r\n options = {};\r\n this.key = ((options.key != null) ? options.key : 'vuex');\r\n this.subscribed = false;\r\n this.supportCircular = options.supportCircular || false;\r\n if (this.supportCircular) {\r\n CircularJSON = require('circular-json');\r\n }\r\n // @ts-ignore\r\n if (process.env.NODE_ENV === 'production') {\r\n this.storage = options.storage || window.localStorage;\r\n }\r\n else {\r\n // @ts-ignore\r\n {\r\n this.storage = options.storage || (typeof window !== 'undefined' ? window.localStorage : new MockStorage());\r\n }\r\n }\r\n /**\r\n * How this works is -\r\n * 1. If there is options.reducer function, we use that, if not;\r\n * 2. We check options.modules;\r\n * 1. If there is no options.modules array, we use entire state in reducer\r\n * 2. Otherwise, we create a reducer that merges all those state modules that are\r\n * defined in the options.modules[] array\r\n * @type {((state: S) => {}) | ((state: S) => S) | ((state: any) => {})}\r\n */\r\n this.reducer = ((options.reducer != null)\r\n ? options.reducer\r\n : ((options.modules == null)\r\n ? (function (state) { return state; })\r\n : (function (state) {\r\n return options.modules.reduce(function (a, i) {\r\n var _a;\r\n return merge(a, (_a = {}, _a[i] = state[i], _a));\r\n }, { /* start empty accumulator*/});\r\n })));\r\n this.filter = options.filter || (function (mutation) { return true; });\r\n this.strictMode = options.strictMode || false;\r\n this.RESTORE_MUTATION = function RESTORE_MUTATION(state, savedState) {\r\n var mergedState = merge(state, savedState || {});\r\n for (var _i = 0, _a = Object.keys(mergedState); _i < _a.length; _i++) {\r\n var propertyName = _a[_i];\r\n this._vm.$set(state, propertyName, mergedState[propertyName]);\r\n }\r\n };\r\n this.asyncStorage = options.asyncStorage || false;\r\n var storageConfig = this.storage && (this.storage)._config;\r\n this.asyncStorage = this.asyncStorage || (storageConfig && storageConfig.name) === 'localforage';\r\n if (this.asyncStorage) {\r\n /**\r\n * Async {@link #VuexPersistence.restoreState} implementation\r\n * @type {((key: string, storage?: Storage) =>\r\n * (Promise | S)) | ((key: string, storage: AsyncStorage) => Promise)}\r\n */\r\n this.restoreState = ((options.restoreState != null)\r\n ? options.restoreState\r\n : (function (key, storage) {\r\n return (storage).getItem(key)\r\n .then(function (value) {\r\n return typeof value === 'string' // If string, parse, or else, just return\r\n ? (_this.supportCircular\r\n ? CircularJSON.parse(value || '{}')\r\n : JSON.parse(value || '{}'))\r\n : (value || {});\r\n });\r\n }));\r\n /**\r\n * Async {@link #VuexPersistence.saveState} implementation\r\n * @type {((key: string, state: {}, storage?: Storage) =>\r\n * (Promise | void)) | ((key: string, state: {}, storage?: Storage) => Promise)}\r\n */\r\n this.saveState = ((options.saveState != null)\r\n ? options.saveState\r\n : (function (key, state, storage) {\r\n return (storage).setItem(key, // Second argument is state _object_ if localforage, stringified otherwise\r\n (((storage && storage._config && storage._config.name) === 'localforage')\r\n ? merge({}, state || {})\r\n : (_this.supportCircular\r\n ? CircularJSON.stringify(state)\r\n : JSON.stringify(state))));\r\n }));\r\n /**\r\n * Async version of plugin\r\n * @param {Store} store\r\n */\r\n this.plugin = function (store) {\r\n (_this.restoreState(_this.key, _this.storage)).then(function (savedState) {\r\n /**\r\n * If in strict mode, do only via mutation\r\n */\r\n if (_this.strictMode) {\r\n store.commit('RESTORE_MUTATION', savedState);\r\n }\r\n else {\r\n store.replaceState(merge(store.state, savedState || {}));\r\n }\r\n _this.subscriber(store)(function (mutation, state) {\r\n if (_this.filter(mutation)) {\r\n _this._mutex.enqueue(_this.saveState(_this.key, _this.reducer(state), _this.storage));\r\n }\r\n });\r\n _this.subscribed = true;\r\n });\r\n };\r\n }\r\n else {\r\n /**\r\n * Sync {@link #VuexPersistence.restoreState} implementation\r\n * @type {((key: string, storage?: Storage) =>\r\n * (Promise | S)) | ((key: string, storage: Storage) => (any | string | {}))}\r\n */\r\n this.restoreState = ((options.restoreState != null)\r\n ? options.restoreState\r\n : (function (key, storage) {\r\n var value = (storage).getItem(key);\r\n if (typeof value === 'string') { // If string, parse, or else, just return\r\n return (_this.supportCircular\r\n ? CircularJSON.parse(value || '{}')\r\n : JSON.parse(value || '{}'));\r\n }\r\n else {\r\n return (value || {});\r\n }\r\n }));\r\n /**\r\n * Sync {@link #VuexPersistence.saveState} implementation\r\n * @type {((key: string, state: {}, storage?: Storage) =>\r\n * (Promise | void)) | ((key: string, state: {}, storage?: Storage) => Promise)}\r\n */\r\n this.saveState = ((options.saveState != null)\r\n ? options.saveState\r\n : (function (key, state, storage) {\r\n return (storage).setItem(key, // Second argument is state _object_ if localforage, stringified otherwise\r\n (_this.supportCircular\r\n ? CircularJSON.stringify(state)\r\n : JSON.stringify(state)));\r\n }));\r\n /**\r\n * Sync version of plugin\r\n * @param {Store} store\r\n */\r\n this.plugin = function (store) {\r\n var savedState = _this.restoreState(_this.key, _this.storage);\r\n if (_this.strictMode) {\r\n store.commit('RESTORE_MUTATION', savedState);\r\n }\r\n else {\r\n store.replaceState(merge(store.state, savedState || {}));\r\n }\r\n _this.subscriber(store)(function (mutation, state) {\r\n if (_this.filter(mutation)) {\r\n _this.saveState(_this.key, _this.reducer(state), _this.storage);\r\n }\r\n });\r\n _this.subscribed = true;\r\n };\r\n }\r\n }\r\n return VuexPersistence;\r\n}());\n\nexport default VuexPersistence;\nexport { VuexPersistence, MockStorage };\n//# sourceMappingURL=index.js.map\n","export default function(userid) {\n return {\n surveyid: 0,\n language: '',\n maxHeight: 0,\n inSurveyViewHeight: 400,\n sideBodyHeight: '100%',\n sideBarHeight: 400,\n currentUser: userid,\n currentTab: 'settings',\n sidebarwidth: 380,\n maximalSidebar: false,\n isCollapsed: false,\n pjax: null,\n pjaxLoading: false,\n lastMenuOpen: false,\n lastMenuItemOpen: false,\n lastQuestionOpen: false,\n lastQuestionGroupOpen: false,\n questionGroupOpenArray: [],\n questiongroups: [],\n collapsedmenus: null,\n sidemenus: null,\n topmenus: null,\n bottommenus: null,\n surveyActiveState: false,\n toggleKey: Math.floor(Math.random()*10000)+'--key',\n allowOrganizer: true\n };\n};\n","export default {\n substractContainer: state => {\n let bodyWidth = (1 - (parseInt(state.sidebarwidth)/$('#vue-apps-main-container').width()))*100;\n let collapsedBodyWidth = (1 - (parseInt('98px')/$('#vue-apps-main-container').width()))*100;\n return Math.floor(state.isCollapsed ? collapsedBodyWidth : bodyWidth) + '%';\n },\n sideBarSize : state => {\n let sidebarWidth = (parseInt(state.sidebarwidth)/$('#vue-apps-main-container').width())*100;\n let collapsedSidebarWidth = (parseInt(98)/$('#vue-apps-main-container').width())*100;\n return Math.ceil(state.isCollapsed ? collapsedSidebarWidth : sidebarWidth) + '%';\n },\n isRTL: state => {\n return document.getElementsByTagName(\"html\")[0].getAttribute(\"dir\") == 'rtl';\n },\n isCollapsed: state => {\n if(window.innerWidth < 768) {\n return false;\n }\n return state.isCollapsed;\n }\n};\n","export default {\n updateSurveyId(state, newSurveyId) {\n state.surveyid = newSurveyId;\n },\n changeLanguage(state, language) {\n state.language = language;\n },\n changeCurrentTab(state, value) {\n state.currentTab = value;\n },\n changeSidebarwidth(state, value) {\n state.sidebarwidth = value;\n },\n maxSideBarWidth(state, value) {\n state.maximalSidebar = value;\n },\n changeIsCollapsed(state, value) {\n state.isCollapsed = value;\n $(document).trigger('vue-sidemenu-update-link');\n },\n changeMaxHeight(state, newHeight) {\n state.maxHeight = newHeight;\n },\n changeSideBarHeight(state, newHeight) {\n state.sideBarHeight = newHeight;\n },\n changeInSurveyViewHeight(state, newHeight) {\n state.inSurveyViewHeight = newHeight;\n },\n changeSideBodyHeight(state, newHeight) {\n state.sideBodyHeight = newHeight+'px' || '100%';\n },\n changeCurrentUser(state, newUser) {\n state.currentUser = newUser;\n },\n closeAllMenus(state) {\n state.lastMenuOpen = false;\n state.lastMenuItemOpen = false;\n state.lastQuestionGroupOpen = false;\n state.lastQuestionOpen = false;\n },\n lastMenuItemOpen(state, menuItem) {\n state.lastMenuOpen = menuItem.menu_id;\n state.lastMenuItemOpen = menuItem.id;\n state.lastQuestionGroupOpen = false;\n state.lastQuestionOpen = false;\n },\n lastMenuOpen(state, menuObject) {\n state.lastMenuOpen = menuObject.id;\n state.lastQuestionOpen = false;\n state.lastMenuItemOpen = false;\n },\n lastQuestionOpen(state, questionObject) {\n state.lastQuestionGroupOpen = questionObject.gid;\n state.lastQuestionOpen = questionObject.qid;\n state.lastMenuItemOpen = false;\n },\n lastQuestionGroupOpen(state, questionGroupObject) {\n state.lastQuestionGroupOpen = questionGroupObject.gid;\n state.lastQuestionOpen = false;\n },\n questionGroupOpenArray(state, questionGroupOpenArray) {\n state.questionGroupOpenArray = questionGroupOpenArray;\n },\n updateQuestiongroups(state, questiongroups) {\n state.questiongroups = questiongroups;\n },\n addToQuestionGroupOpenArray(state, questiongroupToAdd) {\n let tmpArray = state.questionGroupOpenArray;\n tmpArray.push(questiongroupToAdd.gid);\n state.questionGroupOpenArray = tmpArray;\n },\n updateSidemenus(state, sidemenus) {\n state.sidemenus = sidemenus;\n },\n updateCollapsedmenus(state, collapsedmenus) {\n state.collapsedmenus = collapsedmenus;\n },\n updateTopmenus(state, topmenus) {\n state.topmenus = topmenus;\n },\n updateBottommenus(state, bottommenus) {\n state.bottommenus = bottommenus;\n },\n setSurveyActiveState(state, surveyState) {\n state.surveyActiveState = !!surveyState;\n },\n newToggleKey(state){\n state.toggleKey = Math.floor(Math.random()*10000)+'--key';\n },\n setAllowOrganizer(state, newVal){\n state.allowOrganizer = newVal;\n }\n};\n","import _Array$isArray from \"../../core-js/array/is-array\";\nexport default function _arrayWithoutHoles(arr) {\n if (_Array$isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","import _Array$from from \"../../core-js/array/from\";\nimport _isIterable from \"../../core-js/is-iterable\";\nexport default function _iterableToArray(iter) {\n if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return _Array$from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _Object$defineProperty from \"../../core-js/object/define-property\";\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/* eslint no-console: \"off\" */\nclass ConsoleShim {\n constructor(param='', silencer=false) {\n\n this.param = param;\n this.silencer = silencer;\n this.collector = [];\n this.currentGroupDescription = '';\n this.activeGroups = 0;\n this.timeHolder = null;\n this.methods = [\n 'group', 'groupEnd', 'log', 'trace', 'time', 'timeEnd', 'error', 'warn'\n ];\n\n this.silent = {\n group : ()=>{return;},\n groupEnd : ()=>{return;},\n log : ()=>{return;},\n trace : ()=>{return;},\n time : ()=>{return;},\n timeEnd : ()=>{return;},\n error : ()=>{return;},\n err : ()=>{return;},\n debug : ()=>{return;},\n warn : ()=>{return;}\n }\n }\n\n _generateError() {\n try {\n throw new Error();\n } catch (err) {\n return err;\n }\n }\n _insertParamToArguments(rawArgs){\n if(this.param !== ''){\n let args = [...rawArgs];\n args.unshift(this.param);\n return args;\n }\n return Array.from(arguments);\n }\n setSilent(newValue = null){\n this.silencer = newValue || !this.silencer;\n }\n //Start grouping logs\n group() {\n if(this.silencer) { return; }\n const args = this._insertParamToArguments(arguments);\n if (typeof console.group === 'function') {\n console.group.apply(console, args);\n return;\n }\n const description = args[0] || 'GROUP';\n this.currentGroupDescription = description;\n this.activeGroups++;\n }\n //Stop grouping logs\n groupEnd() {\n if(this.silencer) { return; }\n const args = this._insertParamToArguments(arguments);\n if (typeof console.groupEnd === 'function') {\n console.groupEnd.apply(console, args);\n return;\n }\n this.currentGroupDescription = '';\n this.activeGroups--;\n this.activeGroups = this.activeGroups === 0 ? 0 : this.activeGroups--;\n }\n //Simplest mechanism to log stuff\n // Aware of the group shim\n log() {\n if(this.silencer) { return; }\n const args = this._insertParamToArguments(arguments);\n if (typeof console.group === 'function') {\n console.log.apply(console, args);\n return;\n }\n args.shift();\n args.unshift(' '.repeat(this.activeGroups * 2));\n this.log.apply(this,args);\n }\n //Trace back the apply.\n //Uses either the inbuilt function console trace or opens a shim to trace by calling this._insertParamToArguments(arguments).callee\n trace() {\n if(this.silencer) { return; }\n const args = this._insertParamToArguments(arguments); \n if (typeof console.trace === 'function') {\n console.trace.apply(console, args);\n return;\n }\n const artificialError = this._generateError();\n if (artificialError.stack) {\n this.log.apply(console, artificialError.stack);\n return;\n }\n\n this.log(args);\n if (arguments.callee != undefined) {\n this.trace.apply(console, arguments.callee);\n }\n }\n\n time() {\n if(this.silencer) { return; }\n const args = this._insertParamToArguments(arguments); \n if (typeof console.time === 'function') {\n console.time.apply(console, args);\n return;\n }\n\n this.timeHolder = new Date();\n }\n\n timeEnd() {\n if(this.silencer) { return; }\n const args = this._insertParamToArguments(arguments);\n if (typeof console.timeEnd === 'function') {\n console.timeEnd.apply(console, args);\n return;\n }\n const diff = (new Date()) - this.timeHolder;\n this.log(`Took ${Math.floor(diff/(1000*60*60))} hours, ${Math.floor(diff/(1000*60))} minutes and ${Math.floor(diff/(1000))} seconds ( ${diff} ms)`);\n this.time = new Date();\n }\n\n error() {\n const args = this._insertParamToArguments(arguments);\n if (typeof console.error === 'function') {\n console.error.apply(console,args);\n return;\n }\n\n this.log('--- ERROR ---');\n this.log(args);\n }\n\n\n warn() {\n const args = this._insertParamToArguments(arguments);\n if (typeof console.warn === 'function') {\n console.warn.apply(console,args);\n return;\n }\n\n this.log('--- WARN ---');\n this.log(args);\n }\n}\n\nexport default ConsoleShim;","/* eslint-disable no-alert, no-console */\n\n/**\n * Check the browsers console capabilities and bundle them into general functions\n * If the build environment was \"production\" only put out error messages.\n */\nimport ConsoleShim from '../../../meta/lib/ConsoleShim.js';\n\nconst LOG = new ConsoleShim('adminsidepanel');\n\nif(!window.debugState.backend) {\n LOG.setSilent(true);\n}\n\nconst PluginLog = function (Vue) {\n Vue.prototype.$log = LOG;\n};\n\nexport {PluginLog, LOG};\n","import ajax from '../mixins/runAjax';\nimport {LOG} from '../mixins/logSystem';\n\nexport default {\n updatePjax({commit}) {\n $(document).trigger('pjax:refresh'); \n commit('newToggleKey');\n },\n getSidemenus(context) {\n return new Promise((resolve, reject) => {\n ajax.methods.get(window.SideMenuData.getMenuUrl, { position: \"side\" }).then(\n result => {\n LOG.log(\"sidemenues\", result);\n const newSidemenus = LS.ld.orderBy(\n result.data.menues,\n a => {\n return parseInt(a.order || 999999);\n },\n [\"desc\"]\n );\n context.commit('updateSidemenus', newSidemenus);\n context.dispatch('updatePjax');\n resolve();\n })\n .catch((error) => {reject(error)});\n }\n );\n },\n getCollapsedmenus(context) {\n return new Promise((resolve, reject) => {\n ajax.methods.get(window.SideMenuData.getMenuUrl, { position: \"collapsed\" }).then(\n result => {\n LOG.log(\"quickmenu\", result);\n const newCollapsedmenus = LS.ld.orderBy(\n result.data.menues,\n a => {\n return parseInt(a.order || 999999);\n },\n [\"desc\"]\n );\n context.commit('updateCollapsedmenus', newCollapsedmenus);\n context.dispatch('updatePjax');\n resolve();\n })\n .catch((error) => {reject(error)});\n }\n );\n },\n getQuestions(context) {\n return new Promise((resolve, reject) => {\n ajax.methods.get(window.SideMenuData.getQuestionsUrl).then(result => {\n LOG.log(\"Questions\", result);\n const newQuestiongroups = result.data.groups;\n context.commit(\"updateQuestiongroups\", newQuestiongroups);\n context.dispatch('updatePjax');\n resolve();\n })\n .catch((error) => {reject(error)});\n });\n },\n collectMenus(context) {\n return Promise.all([\n context.dispatch('getSidemenus'),\n context.dispatch('getCollapsedmenus'),\n ]);\n },\n unlockLockOrganizer(context) {\n //context.commit(\"setAllowOrganizer\", context.state.allowOrganizer);\n return new Promise((resolve, reject) => {\n ajax.methods.post(\n window.SideMenuData.unlockLockOrganizerUrl,\n { \n setting : 'lock_organizer',\n newValue : context.state.allowOrganizer ? '0' : '1'\n }\n ).then(\n result => {\n LOG.log('setUsersettingLog', result);\n context.commit(\"setAllowOrganizer\", parseInt(result.data.result));\n }).catch((error) => {reject(error)});}\n );\n },\n changeCurrentTab(context, payload) {\n context.commit(\"changeCurrentTab\", payload);\n context.dispatch('collectMenus');\n context.dispatch('getQuestions');\n }\n}\n","import Vue from 'vue';\nimport Vuex from 'vuex';\nimport VuexPersistence from 'vuex-persist';\nimport VueLocalStorage from 'vue-localstorage';\n\nimport statePreset from './state';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nVue.use(VueLocalStorage);\nVue.use(Vuex);\n\n\nconst getAppState = function (userid,surveyid) {\n const AppStateName = 'limesurveyadminsidepanel';\n const vuexLocal = new VuexPersistence({\n key: AppStateName+'_'+userid+'_'+surveyid,\n storage: window.localStorage\n });\n\n\n return new Vuex.Store({\n state: statePreset(userid),\n plugins: [\n vuexLocal.plugin\n ],\n getters,\n mutations,\n actions\n });\n};\n\nexport default getAppState;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\" loader--loaderWidget ls-flex ls-flex-column align-content-center align-items-center\",staticStyle:{\"min-height\":\"100%\"},attrs:{\"id\":'loader-'+_vm.id}},[_c('div',{staticClass:\"ls-flex align-content-center align-items-center\"},[_c('div',{staticClass:\"loader-adminpanel text-center\",class:_vm.extraClass},[_vm._m(0)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contain-pulse animate-pulse\"},[_c('div',{staticClass:\"square\"}),_c('div',{staticClass:\"square\"}),_c('div',{staticClass:\"square\"}),_c('div',{staticClass:\"square\"})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./loader.vue?vue&type=template&id=d2d9edba&scoped=true&\"\nimport script from \"./loader.vue?vue&type=script&lang=js&\"\nexport * from \"./loader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./loader.vue?vue&type=style&index=0&id=d2d9edba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d2d9edba\",\n null\n \n)\n\nexport default component.exports","//globals formId\nimport Vue from \"vue\";\nimport Sidebar from \"./components/sidebar.vue\";\nimport getAppState from \"./store/vuex-store.js\";\nimport {PluginLog} from \"./mixins/logSystem.js\";\nimport Loader from './helperComponents/loader.vue';\n\n//Ignore phpunits testing tags\nVue.config.ignoredElements = [\"x-test\"];\nVue.config.devtools = false;\n\nVue.use(PluginLog);\n\nVue.component('loader-widget', Loader);\n\nVue.mixin({\n methods: {\n updatePjaxLinks: function () {\n this.$forceUpdate();\n this.$store.commit('newToggleKey');\n },\n redoTooltips: function () {\n window.LS.doToolTip();\n },\n translate(string){\n return window.SideMenuData.translate[string] || string;\n }\n },\n filters: {\n translate(string){\n return window.SideMenuData.translate[string] || string;\n }\n }\n});\n\nconst Lsadminsidepanel = (userid, surveyid) => {\n const AppState = getAppState(userid, surveyid);\n const panelNameSpace = {};\n\n const applySurveyId = (store) => {\n if (surveyid != 0) {\n store.commit(\"updateSurveyId\", surveyid);\n }\n };\n\n const controlWindowSize = () => {\n const adminmenuHeight = $(\"body\").find(\"nav\").first().height();\n const footerHeight = $(\"body\").find(\"footer\").last().height();\n const menuHeight = $(\".menubar\").outerHeight();\n const inSurveyOffset = adminmenuHeight + footerHeight + menuHeight + 25;\n const windowHeight = window.innerHeight;\n const inSurveyViewHeight = windowHeight - inSurveyOffset;\n const bodyWidth = (1 - (parseInt($('#sidebar').width()) / $('#vue-apps-main-container').width())) * 100;\n const collapsedBodyWidth = (1 - (parseInt('98px') / $('#vue-apps-main-container').width())) * 100;\n const inSurveyViewWidth = Math.floor($('#sidebar').data('collapsed') ? bodyWidth : collapsedBodyWidth) + '%';\n\n panelNameSpace[\"surveyViewHeight\"] = inSurveyViewHeight;\n panelNameSpace[\"surveyViewWidth\"] = inSurveyViewWidth;\n $('#fullbody-container').css({\n //'height': inSurveyViewHeight,\n 'max-width': inSurveyViewWidth,\n 'overflow-x': 'auto'\n });\n }\n\n const createSideMenu = () => {\n return new Vue({\n el: \"#vue-sidebar-container\",\n store: AppState,\n components: {\n sidebar: Sidebar,\n },\n created() {\n $(document).on(\"vue-sidebar-collapse\", () => {\n this.$store.commit(\"changeIsCollapsed\", true);\n });\n },\n mounted() {\n applySurveyId(this.$store);\n\n const maxHeight = $(\"#in_survey_common\").height() - 35 || 400;\n this.$store.commit(\"changeMaxHeight\", maxHeight);\n this.$store.commit(\"setAllowOrganizer\", window.SideMenuData.allowOrganizer);\n this.updatePjaxLinks();\n\n\n $(document).on(\"vue-redraw\", () => {\n this.updatePjaxLinks();\n });\n\n $(document).trigger(\"vue-reload-remote\");\n }\n });\n };\n\n const applyPjaxMethods = () => {\n panelNameSpace.reloadcounter = 5;\n $(document)\n .off(\"pjax:send.panelloading\")\n .on(\"pjax:send.panelloading\", () => {\n $('
').appendTo(\"body\");\n $(\n \".ui-dialog.ui-corner-all.ui-widget.ui-widget-content.ui-front.ui-draggable.ui-resizable\"\n ).remove();\n $(\"#pjax-file-load-container\")\n .find(\"div\")\n .css({\n width: \"20%\",\n display: \"block\"\n });\n LS.adminsidepanel.reloadcounter--;\n });\n\n $(document)\n .off(\"pjax:error.panelloading\")\n .on(\"pjax:error.panelloading\", event => {\n // eslint-disable-next-line no-console\n console.ls.log(event);\n });\n\n $(document)\n .off(\"pjax:complete.panelloading\")\n .on(\"pjax:complete.panelloading\", () => {\n if (LS.adminsidepanel.reloadcounter === 0) {\n location.reload();\n }\n });\n $(document)\n .off(\"pjax:scriptcomplete.panelloading\")\n .on(\"pjax:scriptcomplete.panelloading\", () => {\n $(\"#pjax-file-load-container\")\n .find(\"div\")\n .css(\"width\", \"100%\");\n $(\"#pjaxClickInhibitor\").fadeOut(400, function () {\n $(this).remove();\n });\n $(document).trigger(\"vue-resize-height\");\n $(document).trigger(\"vue-reload-remote\");\n // $(document).trigger('vue-sidemenu-update-link');\n setTimeout(function () {\n $(\"#pjax-file-load-container\")\n .find(\"div\")\n .css({\n width: \"0%\",\n display: \"none\"\n });\n }, 2200);\n });\n\n };\n\n const createPanelAppliance = () => {\n window.singletonPjax();\n if (document.getElementById(\"vue-sidebar-container\")) {\n panelNameSpace['sidemenu'] = createSideMenu();\n }\n $(document).on(\"click\", \"ul.pagination>li>a\", () => {\n $(document).trigger('pjax:refresh');\n });\n\n controlWindowSize();\n window.addEventListener(\"resize\", LS.ld.debounce(controlWindowSize, 300));\n $(document).on(\"vue-resize-height\", LS.ld.debounce(controlWindowSize, 300));\n applyPjaxMethods();\n\n }\n\n LS.adminCore.addToNamespace(panelNameSpace, 'adminsidepanel');\n\n return createPanelAppliance;\n};\n\n\n\n$(document).ready(function(){\n let surveyid = 'newSurvey';\n if(window.LS != undefined) {\n surveyid = window.LS.parameters.$GET.surveyid || window.LS.parameters.keyValuePairs.surveyid;\n }\n if(window.SideMenuData) {\n surveyid = window.SideMenuData.surveyid;\n }\n\n window.adminsidepanel = window.adminsidepanel || Lsadminsidepanel(window.LS.globalUserId, surveyid);\n\n window.adminsidepanel();\n});\n\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var core = module.exports = { version: '2.6.10' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function () { /* empty */ };\n","module.exports = {};\n","module.exports = require(\"core-js/library/fn/object/define-property\");","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_questionsgroups.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./_questionsgroups.vue?vue&type=style&index=0&lang=scss&\"","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","module.exports = require('./_hide');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","/*!\n * Vue.js v2.6.10\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Techinically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.