{"version":3,"sources":["webpack:///./node_modules/fine-uploader-wrappers/base-wrapper.js","webpack:///./node_modules/fine-uploader-wrappers/callback-proxy.js","webpack:///./node_modules/fine-uploader/lib/core/index.js","webpack:///./node_modules/fine-uploader/fine-uploader/fine-uploader.core.js","webpack:///./node_modules/fine-uploader/lib/dnd.js","webpack:///./node_modules/fine-uploader/dnd/dnd.js","webpack:///./node_modules/react-fine-uploader/file-input/styleable-element.js","webpack:///./node_modules/react-fine-uploader/progress-bar.js","webpack:///./node_modules/react-fine-uploader/filename.js","webpack:///./node_modules/react-fine-uploader/filesize.js","webpack:///./node_modules/react-fine-uploader/status.js","webpack:///./node_modules/react-fine-uploader/cancel-button.js","webpack:///./src/validation/regexRules.js","webpack:///./src/components/FileUploader/UploaderStatus.ts","webpack:///./node_modules/fine-uploader-wrappers/node_modules/object-assign/index.js","webpack:///./src/components/FileUploader/constants.ts","webpack:///./node_modules/fine-uploader-wrappers/traditional.js","webpack:///./node_modules/fine-uploader-wrappers/callback-names.js","webpack:///./node_modules/react-fine-uploader/dropzone.js","webpack:///./node_modules/react-fine-uploader/file-input/index.js","webpack:///./src/components/FileUploader/FileUploaderSubmittedFiles.tsx"],"names":["Object","defineProperty","exports","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","Constructor","protoProps","staticProps","prototype","_objectAssign2","_interopRequireDefault","_callbackProxy2","obj","__esModule","default","callbackProxies","WeakMap","BaseWrapper","_ref","callbackNames","options","qq","type","instance","TypeError","_classCallCheck","this","callbacks","optionsSansCallbacks","set","createCallbackProxies","registerOptionsCallbacks","get","methods","createFineUploader","name","callback","normalizedName","normalizeCallbackName","remove","add","names","proxyMap","forEach","callbackName","_ref2","optionsCopy","keys","proxy","proxyFunction","FineUploaderBasic","match","toUpperCase","slice","_ref3","_typeof","Symbol","iterator","constructor","_objectAssign","_callbackNames","privateData","CallbackProxy","getProxyFunction","call","push","index","indexOf","splice","proxyClassContext","_len","arguments","originalCallbackArguments","Array","_key","isThenable","thenable","registeredCallbacks","callbackReturnValue","executeThenableCallbacks","every","returnValue","apply","executeThenableCallback","reverse","Promise","resolve","getResultToPass","newResult","previousResult","_ref4","reject","pop","then","result","resultToPass","catch","error","module","global","element","hide","style","display","attach","fn","addEventListener","attachEvent","detach","removeEventListener","detachEvent","contains","descendant","compareDocumentPosition","insertBefore","elementB","parentNode","removeChild","css","styles","Error","opacity","filters","filter","Math","round","extend","hasClass","considerParent","re","RegExp","test","className","addClass","removeClass","replace","getByClass","first","candidates","querySelector","querySelectorAll","getElementsByTagName","each","idx","val","getFirstByClass","children","child","firstChild","nodeType","nextSibling","setText","text","innerText","textContent","clearText","hasAttribute","attrName","attrVal","exec","getAttribute","undefined","ExifRestorer","div","canvasToBlob","canvas","mime","quality","dataUriToBlob","toDataURL","dataUri","arrayBuffer","byteString","intArray","mimeString","data","BlobBuilder","blobBuilder","split","atob","decodeURI","ArrayBuffer","Uint8Array","character","charCodeAt","window","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","Blob","log","message","level","console","isObject","variable","toString","isFunction","isArray","buffer","isItemList","maybeItemList","isNodeList","maybeNodeList","item","namedItem","isString","maybeString","trimStr","string","String","trim","format","str","args","newStr","nextIdxToReplace","strBefore","substring","strAfter","isFile","maybeFile","File","isFileList","maybeFileList","FileList","isFileOrInput","maybeFileOrInput","isInput","maybeInput","notFile","evaluateType","normalizedType","toLowerCase","HTMLInputElement","tagName","isBlob","maybeBlob","isXhrUploadSupported","input","document","createElement","multiple","FormData","createXhrInstance","upload","XMLHttpRequest","ActiveXObject","isFolderDropSupported","dataTransfer","items","webkitGetAsEntry","isFileChunkingSupported","androidStock","webkitSlice","mozSlice","sliceBlob","fileOrBlob","start","end","arrayBufferToHex","bytesAsHex","bytes","byt","byteAsHexStr","readBlobToHex","blob","startOffset","initialBlob","fileReader","FileReader","promise","onload","success","onerror","failure","readAsArrayBuffer","second","extendNested","prop","override","sourceFn","super_","source","srcPropName","srcPropVal","arr","elt","from","len","hasOwnProperty","getUniqueId","c","r","random","ie","navigator","userAgent","ie7","ie8","ie10","ie11","edge","safari","vendor","chrome","opera","firefox","windows","platform","android","ios6","ios","ios7","ios8","ios800","iosChrome","iosSafari","iosSafariWebView","preventDefault","e","toElement","html","innerHTML","iterableItem","keyOrIndex","Storage","getItem","charAt","bind","oldFunc","context","newArgs","concat","obj2url","temp","prefixDone","uristrings","prefix","nextObj","nextTemp","encodeURIComponent","join","obj2FormData","formData","arrayKeyName","obj2Inputs","form","setAttribute","appendChild","parseJson","json","JSON","parse","eval","getExtension","filename","extIdx","lastIndexOf","substr","getFilename","blobOrFileInput","fileName","DisposeSupport","disposers","dispose","disposer","shift","addDisposer","disposeFunction","version","supportedFeatures","supportsUploading","supportsUploadingBlobs","supportsFileDrop","supportsAjaxFileUploading","supportsFolderDrop","supportsChunking","supportsResume","supportsUploadViaPaste","supportsUploadCors","supportsDeleteFileXdr","supportsDeleteFileCorsXhr","supportsDeleteFileCors","supportsFolderSelection","supportsImagePreviews","supportsUploadProgress","span","isCrossOriginXhrSupported","withCredentials","isXdrSupported","XDomainRequest","tempInput","supported","disabled","ex","testSupportsFileInputElement","localStorage","setItem","isLocalStorageSupported","postMessage","webkitdirectory","ajaxUploading","blobUploading","canDetermineSize","chunking","deleteFileCors","deleteFileCorsXdr","deleteFileCorsXhr","dialogElement","HTMLDialogElement","fileDrop","folderDrop","folderSelection","imagePreviews","imageValidation","itemSizeValidation","pause","progressBar","resume","scaling","tiffPreviews","unlimitedScaledImageSize","uploading","uploadCors","uploadCustomHeaders","uploadNonMultipart","uploadViaPaste","isGenericPromise","maybePromise","successArgs","failureArgs","successCallbacks","failureCallbacks","doneCallbacks","state","onSuccess","onFailure","done","BlobProxy","referenceBlob","onCreate","create","UploadButton","o","buttonId","self","disposeSupport","acceptFiles","focusClass","folders","hoverClass","ios8BrowserCrashWorkaround","onChange","title","createInput","BUTTON_ID_ATTR_NAME","setMultiple","position","right","top","fontFamily","fontSize","margin","padding","cursor","height","overflow","direction","getInput","getButtonId","isMultiple","optInput","removeAttribute","setAcceptFiles","reset","UploadData","uploaderProxy","byUuid","byStatus","byProxyGroupId","byBatchId","addFile","spec","status","SUBMITTING","id","originalName","uuid","size","batchId","proxyGroupId","onBeforeStatusChange","onStatusChange","retrieve","optionalFilter","idOrIds","entries","getDataByIds","uuids","getDataByUuids","statusResults","statuses","statusEnum","statusResultIndexes","dataIndex","setStatus","newStatus","oldStatus","byStatusOldStatusIndex","uuidChanged","newUuid","oldUuid","updateName","newName","updateSize","newSize","setParentId","targetId","parentId","getIdsInProxyGroup","getIdsInBatch","SUBMITTED","REJECTED","QUEUED","CANCELED","PAUSED","UPLOADING","UPLOAD_RETRYING","UPLOAD_SUCCESSFUL","UPLOAD_FAILED","DELETE_FAILED","DELETING","DELETED","basePublicApi","addBlobs","blobDataOrArray","params","endpoint","addFiles","addInitialFiles","cannedFileList","cannedFile","_addCannedFile","_maybeHandleIos8SafariWorkaround","_storedIds","_currentBatchId","processBlob","_handleNewFile","_options","blobs","defaultName","verifiedFiles","processBlobData","blobData","processCanvas","processCanvasData","canvasData","normalizedQuality","processFileOrInput","fileOrInput","files","file","fileContainer","_prepareItemsForUpload","cancel","_handler","cancelAll","storedIdsCopy","storedFileId","clearStoredFiles","continueUpload","uploadData","_uploadData","enabled","getName","_uploadFile","deleteFile","_onSubmitDelete","doesExist","fileOrBlobId","isValid","drawThumbnail","fileId","imgOrCanvas","maxSize","fromServer","customResizeFunction","fileOrUrl","promiseToReturn","_imageGenerator","_thumbnailUrls","scale","getFile","container","generate","modifiedContainer","reason","getButton","_getButton","_buttonIdsForFileIds","getEndpoint","_endpointStore","getInProgress","getParentId","uploadDataEntry","getUploads","getResumableFilesData","getSize","getNetUploads","_netUploaded","getRemainingAllowedItems","allowedItems","_currentItemLimit","_netUploadedOrQueued","getUuid","debug","pauseUpload","removeFileRef","expunge","_autoRetries","_retryTimeouts","_preventRetries","_buttons","button","_paramsStore","_pasteHandler","session","refreshOnReset","_refreshSessionData","_succeededSinceLastAllComplete","_failedSinceLastAllComplete","_totalProgress","retry","_manualRetry","scaleImage","specs","Scaler","setCustomHeaders","headers","_customHeadersStore","setDeleteFileCustomHeaders","_deleteFileCustomHeadersStore","setDeleteFileEndpoint","_deleteFileEndpointStore","setDeleteFileParams","_deleteFileParamsStore","setEndpoint","setForm","elementOrId","_updateFormSupportAndParams","setItemLimit","newItemLimit","setName","setParams","setUuid","_onDeleteComplete","errorMessage","uploadStoredFiles","_itemError","_uploadStoredFiles","basePrivateApi","sessionData","deleteFileEndpoint","deleteFileParams","thumbnailUrl","_annotateWithButtonId","associatedInput","qqButtonId","_getButtonId","_batchError","onError","_createDeleteHandler","DeleteFileAjaxRequester","method","maxConnections","uuidParamName","request","uuidName","customHeaders","paramsStore","endpointStore","cors","onDelete","_onDelete","onDeleteComplete","xhrOrXdr","isError","_createPasteHandler","PasteSupport","targetElement","paste","pasteReceived","_handleCheckedCallback","onPasteReceived","_handlePasteSuccess","identifier","_createStore","initialValue","_readOnlyValues_","store","catchall","perIdReadOnlyValues","readOnlyValues","copy","orig","includeReadOnlyValues","existing","values","addReadOnly","_createUploadDataTracker","_onUploadStatusChange","_maybeAllComplete","setTimeout","_createUploadButton","accept","validation","allowedExtensions","classes","buttonFocus","buttonHover","workarounds","ios8BrowserCrash","iosEmptyVideos","_isAllowedExtension","inputName","_onInputChange","fileInputTitle","_disposeSupport","_createUploadHandler","additionalOptions","namespace","lastOnProgress","preventRetryParam","preventRetryResponseProperty","onProgress","loaded","total","_onProgress","onComplete","xhr","retVal","_onComplete","onCancel","cancelFinalizationEffort","_onCancel","onUploadPrep","_onUploadPrep","onUpload","_onUpload","onUploadChunk","chunkData","_onUploadChunk","onUploadChunkSuccess","onResume","onAutoRetry","responseJSON","_onAutoRetry","onUuidChanged","setSize","_setSize","getDataByUuid","isQueued","UploadHandlerController","_fileOrBlobRejected","_formatSize","sizeSymbols","max","toFixed","_generateExtraButtonSpecs","_extraButtonSpecs","extraButtons","extraButtonOptionEntry","extraButtonSpec","_initExtraButton","extraButtonsSpec","_defaultButtonId","buttonOrFileInputOrFile","inputs","fileInput","fileBlobOrInput","_getNotFinished","_getValidationBase","_getValidationDescriptor","fileWrapper","_getValidationDescriptors","fileWrappers","fileDescriptors","_handleCameraAccess","camera","optionRoot","details","callbackRetVal","successParam","newFileWrapperList","actualFile","handler","_customNewFileHandler","_handleNewFileGeneric","addFileToHandler","_trackButton","fileList","extSuppliedName","extension","_handleDeleteSuccess","_handleDeleteFailed","_initFormSupportAndParams","_formSupport","FormSupport","attachedToForm","getFormInputsAsObject","autoUpload","newAutoUpload","newEndpoint","_isDeletePossible","expected","allowXdr","allowed","valid","allowedExt","extRegex","code","maybeNameOrNames","extensionsForMessage","placeholderMatch","messages","validationBase","replacement","allowedExtension","formatFileName","sizeLimit","minSizeLimit","placeholder","_onBeforeManualRetry","notFinished","_onAllComplete","ios8SafariUploads","alert","unsupportedBrowserIos8Safari","_maybeParseAndSendUploadError","response","errorReason","defaultResponseError","_maybeProcessNextItemAfterOnValidateCallback","validItem","stopOnFirstInvalidFile","validationDescriptor","onValidate","_onValidateCallbackSuccess","_onValidateCallbackFailure","successful","failed","onAllComplete","_shouldAutoRetry","retryWaitPeriod","autoAttemptDelay","_onBeforeAutoRetry","itemLimit","onManualRetry","clearTimeout","storedItemIndex","fileIndex","onIndividualProgress","_onSubmit","_onSubmitCallbackSuccess","_onSubmitted","onSubmitted","_storeForLater","onSuccessCallback","additionalMandatedParams","adjustedOnSuccessCallback","onSubmitDelete","_deleteHandler","sendDelete","_onTotalProgress","onTotalProgress","_onValidateBatchCallbackFailure","_onValidateBatchCallbackSuccess","validationDescriptors","proposedNetFilesUploadedOrQueued","tooManyItemsError","nextIndex","_validateFileOrBlobData","_upload","onValidateBatch","_preventLeaveInProgress","event","onLeave","Session","_session","addFileRecord","refresh","_sessionRequestComplete","onSessionRequestComplete","onNewSize","enableAuto","maxAutoAttempts","formElementOrId","onSubmit","idToUpload","stillSubmitting","validityChecker","allowEmpty","ImageValidation","validate","image","errorCode","_wrapCallbacks","safeCallback","errorMsg","exception","callbackFunc","disableCancelForFormUploads","filenameParam","forceMultipart","paramsInBody","totalFileSizeName","maxHeight","maxWidth","minHeight","minWidth","maybeXhr","maybeXhrOrXdr","attemptNumber","fileOrBlobData","typeError","sizeError","minSizeError","emptyError","noFilesError","maxHeightImageError","maxWidthImageError","minHeightImageError","minWidthImageError","retryFailTooManyItems","concurrent","mandatory","paramNames","partIndex","partByteOffset","chunkSize","totalFileSize","totalParts","partSize","recordsExpireIn","resuming","fileOrBlobName","sendCredentials","interceptSubmit","customResizer","sendOriginal","orient","defaultType","defaultQuality","failureText","includeExif","sizes","ImageGenerator","_scaler","handleNewFile","TotalProgress","entry","AjaxRequester","shouldParamsBeInQueryString","queue","requestData","acceptHeader","validMethods","contentType","mandatedParams","allowXRequestedWithAndCacheControl","successfulResponseCodes","DELETE","PATCH","POST","PUT","GET","onSend","isXdr","getXhrOrXdr","suppliedXhr","ontimeout","onprogress","getCorsAjaxTransport","dequeue","sendRequest","xdrError","responseCode","optXhr","url","onDemandParams","additionalParams","getParams","payload","additionalQueryParams","addToPath","createUrl","getXdrLoadHandler","getXdrErrorHandler","onreadystatechange","readyState","getXhrReadyStateChangeHandler","lengthComputable","registerForUploadProgress","open","onDemandHeaders","additionalHeaders","allHeaders","setRequestHeader","containsNonSimple","header","setHeaders","send","stringify","initTransport","path","cacheBuster","withPath","appendToPath","withParams","withQueryParams","_additionalQueryParams_","withHeaders","withPayload","thePayload","withCacheBuster","qqtimestamp","Date","getTime","prepareToSend","canceled","UploadHandler","fileState","fileItem","getThirdPartyFileId","_getFileState","_setThirdPartyFileId","thirdPartyFileId","_wasCanceled","preventRetryResponse","controller","chunkingPossible","concurrentChunkingPossible","chunked","chunkIdx","_getChunkData","attemptingResume","chunkProgress","_getChunkDataForCallback","finalize","finalizeChunks","normaizedResponse","normalizeResponse","_maybeDeletePersistedChunkData","cleanup","handleFailure","clearCachedChunk","inProgressIdx","responseToReport","inProgress","remaining","unshift","ignoreFailure","_getXhrs","ckid","ckXhr","abort","_cancelled","moveInProgressToRemaining","connectionManager","free","hasMoreParts","nextPart","nextIdx","_getTotalChunks","reevaluateChunking","sendNext","inProgressChunks","available","uploadChunk","inProgressChunkIdx","_maybePersistChunkedState","clearXhr","_open","_openChunks","_waiting","openChunkEntriesCount","openChunksCount","openChunkIndexes","dontAllowNext","nextId","allowNext","waitingIndex","connectionsIndex","getProxyOrBlob","getWaitingOrConnected","waitingOrConnected","chunks","parseInt","isUsingConnection","openChunksEntry","simple","uploadFile","maybeNewUuid","_clearXhrs","getProxy","initHandler","handlerType","traditional","handlerModuleSubtype","_removeExpiredChunkingRecords","isDeferredEligibleForUpload","maybeDefer","generatedBlob","updateBlob","maybeSendDeferredFiles","errorResponse","idsInGroup","uploadedThisId","idInGroup","now","originalResponse","_shouldChunkThisFile","blobToUpload","cancelRetVal","isProxied","isResumable","WindowReceiveMessage","callbackWrapperDetachers","receiveMessage","stopReceivingMessages","detacher","FormUploadHandler","formHandlerInstanceId","onloadCallbacks","detachLoadEvents","postMessageCallbackTimers","isCors","corsMessageReceiver","getFileIdForIframeName","iframeName","iframe","getElementById","_getIframeName","expungeFile","_attachLoadEvent","responseDescriptor","onloadCallback","_parseJsonResponse","_detachLoadEvent","registerPostMessageCallback","contentDocument","body","_createIframe","initIframeForUpload","_initFormForUpload","targetName","innerHtmlOrMessage","XhrUploadHandler","chunkFiles","resumeEnabled","xhrId","ajaxRequester","_getAjaxRequester","blobOrProxy","_initTempState","_maybePrepareForResume","cachedChunks","tempState","xhrs","ajaxRequesters","responseParser","lastChunkIdx","_getXhr","resumableFilesData","_iterateResumeRecords","notResumable","optInProgress","optRemaining","paused","totalChunks","parts","newBlob","chunkId","_createXhr","optChunkIdx","_registerXhr","chunkIndex","fileSize","startBytes","endBytes","part","count","startByte","endByte","_getLocalStorageId","_getMimeType","_getPersistableData","ceil","_markNotResumable","localStorageId","removeItem","persistedData","lastUpdated","_registerProgressHandler","progressCalculator","totalSuccessfullyLoadedForFile","loadedForRequest","totalForRequest","estActualChunkLoaded","totalLoadedForFile","chunkLoaded","optAjaxRequester","xhrsId","expirationDays","expirationDate","setDate","getDate","requester","_method","renderImageToCanvas","img","doSquash","modifiedDimensions","iw","naturalWidth","ih","naturalHeight","width","ctx","getContext","save","resize","resizeInfo","imageHeight","imageWidth","orientation","sourceCanvas","sourceCanvasContext","targetCanvas","targetHeight","targetWidth","transformCoordinate","drawImage","qqImageRendered","renderImageToCanvasWithCustomResizer","origHeight","origWidth","newHeight","sqrt","newWidth","maybeCalculateDownsampledDimensions","getImageData","detectSubsampling","tmpCtx","sx","dx","d","tmpCanvas","vertSquashRatio","ratio","sy","ey","py","detectVerticalSquash","dw","dh","dy","clearRect","restore","translate","rotate","PI","MegaPixImage","srcImage","errorCallback","Image","URL","createObjectURL","webkitURL","src","listeners","imageLoadListeners","render","opt","oldTargetSrc","imgWidth","imgHeight","optionsKey","optionsValue","renderImageToDataURL","onrender","isImg","el","isCanvas","determineMimeOfFileName","nameWithPath","pathSegments","isCrossOrigin","targetProtocol","targetHostname","targetPort","targetAnchor","href","protocol","port","hostname","location","registerThumbnailRenderedListener","registered","registerImgLoadListeners","registerCanvasDrawImageListener","drawOnCanvasOrImgFromUrl","canvasOrImg","draw","tempImg","tempImgRender","crossOrigin","drawOnImgFromUrlWithCssScaling","drawFromUrl","fileBlobOrUrl","drawPreview","Identify","megapixErrorHandler","isPreviewable","dummyExif","exif","Exif","mpImg","Orientation","failureMsg","_testing","TAG_IDS","TAG_INFO","274","parseLittleEndian","hex","pow","getApp1Offset","seekToApp1","offset","theOffset","thePromise","segmentLength","parser","onParseFailure","app1Offset","app1Start","littleEndian","getDirEntryCount","dirEntryCount","dirEntries","getIfd","ifdHex","getDirEntries","tagValues","tagsToFind","vals","tagValHex","tagValLength","idHex","tagsToFindIdx","getTagValues","previewable","isPreviewableSync","PREVIEWABLE_MIME_TYPES","questionableBytes","identifiable","magicBytesEntries","magicBytesArrayEntry","fileMime","isRecognizedImage","limits","sizeDetermination","validationEffort","atLeastOne","limit","hasNonZeroLimits","dimensions","failingLimit","limitName","limitValue","limitMatcher","dimensionPropName","actualValue","getFailingLimit","handleFileItems","fileItems","someItemsIgnored","isJsonResponseValid","err","refreshEffort","requesterOptions","SessionAjaxRequester","queryServer","responseText","includeOriginal","failedToScaleText","_getSortedSizes","getFileRecords","originalFileUuid","originalFileName","originalBlobOrBlobData","records","originalBlob","sizeRecord","outputType","_determineOutputType","requestedType","refType","_getName","_generateScaledImage","failedText","api","param","scaledIds","originalId","record","blobSize","scaledId","qqparentuuid","qqparentsize","scalingEffort","scalingOptions","scaler","referenceType","scaledVersionProperties","startOfExt","versionType","scaledName","scaledExt","nameAppendage","sort","a","b","sourceFile","imageGenerator","scaledImageDataUri","signalSuccess","_insertExifHeader","scaledImageDataUriWithExif","originalImage","reader","insertionEffort","originalImageDataUri","readAsDataURL","_dataUriToBlob","_createBlob","chr1","chr2","enc1","enc2","enc3","output","chr3","enc4","isNaN","KEY_STR","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","seg","x","imageData","buf","separatePoint","mae","ato","array","rawImageArray","head","endPoint","perFileProgress","totalLoaded","totalSize","lastLoadedSent","lastTotalSent","callbackProxy","onNew","updateTotalProgress","newLoaded","newTotal","oldLoaded","oldTotal","retryable","none","failedId","noRetryableFiles","detachPasteHandler","clipboardData","isImage","getAsFile","startUpload","formEl","validateForm","nativeSubmit","checkValidity","_form2Obj","determineNewEndpoint","submit","maybeUploadOnSubmit","determineFormEl","ignoreValue","checked","elements","select","selected","selectValue","createForm","responseFromMessage","doc","innerHtml","contentWindow","nodeValue","getIframeContentJson","multipart","allChunksDoneRequester","AllChunksDoneAjaxRequester","createReadyStateChangedHandler","onUploadOrChunkComplete","isErrorUploadResponse","parseResponse","sendChunksCompleteRequest","complete","getChunksCompleteParams","setParamsAndGetEntityToSend","setUploadHeaders","extraHeaders","toSend","addChunkingSpecificParams","promises","endpointHandler","DragAndDrop","dropZones","maybeHideDropZones","uploadDropZones","droppedFiles","traverseFileTree","parseEntryPromise","fullPath","indexOfNameInFullPath","qqPath","fileError","dropLog","isDirectory","getFilesInDirectory","accumEntries","existingPromise","dirReader","createReader","readEntries","newEntries","entriesLeft","setupDropzone","dropArea","dropZone","UploadDropZone","HIDE_ZONES_EVENT_NAME","onEnter","dropActive","stopPropagation","onLeaveNotDescendants","onDrop","uploadDropZone","pendingFolderPromises","handleDataTransferPromise","processingDroppedFiles","dropDisabled","allowMultipleItems","processingDroppedFilesComplete","dropError","filesAsArray","getElement","uploadDroppedFiles","dropZoneElements","dragEvent","fileDrag","types","HTMLElement","relatedTarget","y","leavingDocumentOut","setupExtraDropzone","removeDropzone","dzs","targetEl","errorSpecifics","preventDrop","dropOutsideDisabled","dragoverShouldBeCanceled","isValidFileDrag","effectTest","dt","isSafari","effectAllowed","isOrSetDropDisabled","isDisabled","dropEffect","effect","elementFromPoint","clientX","clientY","hideZonesEvent","triggerUsingOldApi","createEvent","initEvent","CustomEvent","dispatchEvent","triggerHidezonesEvent","_extends","assign","_react","_react2","containerStyle","inputStyle","bottom","left","_objectWithoutProperties","_propTypes2","ProgressBar","_Component","_this","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","bytesUploaded","hidden","hideBeforeStart","_createEventHandlers","subClass","superClass","setPrototypeOf","_inherits","_isTotalProgress","uploader","on","_trackProgressEventHandler","_trackStatusEventHandler","_unmounted","_unregisterEventHandlers","customContainerClassName","percentWidth","role","_this2","setState","hideOnComplete","isUploadComplete","off","Component","propTypes","number","bool","object","isRequired","defaultProps","statusToCheck","Filename","_interceptSetName","nextProps","nextState","oldSetName","Filesize","scalingOption","_onUploadHandler","areUnitsEqual","units","_formatSizeAndUnits","formatSizeAndUnits","formattedSize","formattedUnits","shape","byte","kilobyte","megabyte","gigabyte","terabyte","units1","units2","keys1","key1","Status","_onStatusChange","newStatusToDisplay","getStatusToDisplay","displayMap","_unregisterStatusChangeHandler","deleted","deleting","queued","retrying_upload","submitting","upload_failed","upload_successful","statusParts","CancelButton","cancelable","isCancelable","_onClick","_props","onlyRenderIfCancelable","elementProps","content","onClick","node","userRegistration","currency","alphaNumeric","numeric","alphaNumericWithSimpleSeparators","passwordComplexity","routingNumber","transitNumber","instituionNumber","propIsEnumerable","propertyIsEnumerable","toObject","test1","getOwnPropertyNames","test2","fromCharCode","map","n","test3","letter","shouldUseNative","symbols","to","s","getOwnPropertySymbols","i18nPrefix","_baseWrapper2","_core2","FineUploaderTraditional","_BaseWrapper","s3","_dnd2","DropzoneElement","_registerDropzone","_qqDropzone","getElementProps","ref","errorData","onDropError","onProcessingDroppedFilesComplete","dropzoneEl","refs","_onDropError","onProcessingDroppedFiles","_onProcessingDroppedFilesComplete","dropActiveClassName","func","actualProps","actualPropsCopy","expectedPropName","_styleableElement2","FileInput","newKey","_onFilesSelected","onFilesSelected","selectFiles","selectFile","onChangeEvent","_resetInput","uploadStatusText","i18n","rejected","submittedFiles","UploaderStatus"],"mappings":"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","file":"bundle.00c6e74c05bc99e87b41.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _callbackProxy = require('./callback-proxy');\n\nvar _callbackProxy2 = _interopRequireDefault(_callbackProxy);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar callbackProxies = new WeakMap();\n\nvar BaseWrapper = function () {\n function BaseWrapper(_ref) {\n var callbackNames = _ref.callbackNames,\n options = _ref.options,\n qq = _ref.qq,\n type = _ref.type;\n\n _classCallCheck(this, BaseWrapper);\n\n var callbacks = options.callbacks || {};\n\n var optionsSansCallbacks = (0, _objectAssign2.default)({}, options);\n delete optionsSansCallbacks.callbacks;\n this.options = optionsSansCallbacks;\n\n callbackProxies.set(this, createCallbackProxies(callbackNames));\n\n registerOptionsCallbacks({ callbacks: callbacks, callbackProxies: callbackProxies.get(this) });\n\n this.methods = createFineUploader({\n callbackProxies: callbackProxies.get(this),\n options: optionsSansCallbacks,\n qq: qq,\n type: type\n });\n\n this.qq = qq;\n }\n\n _createClass(BaseWrapper, [{\n key: 'off',\n value: function off(name, callback) {\n var normalizedName = normalizeCallbackName(name);\n var proxy = callbackProxies.get(this)[normalizedName];\n\n proxy.remove(callback);\n }\n }, {\n key: 'on',\n value: function on(name, callback) {\n var normalizedName = normalizeCallbackName(name);\n var proxy = callbackProxies.get(this)[normalizedName];\n\n proxy.add(callback);\n }\n }]);\n\n return BaseWrapper;\n}();\n\nexports.default = BaseWrapper;\n\n\nvar createCallbackProxies = function createCallbackProxies(names) {\n var proxyMap = {};\n\n names.forEach(function (callbackName) {\n proxyMap[callbackName] = new _callbackProxy2.default(callbackName);\n });\n\n return proxyMap;\n};\n\nvar createFineUploader = function createFineUploader(_ref2) {\n var callbackProxies = _ref2.callbackProxies,\n options = _ref2.options,\n qq = _ref2.qq,\n type = _ref2.type;\n\n var optionsCopy = (0, _objectAssign2.default)({ callbacks: {} }, options);\n\n Object.keys(callbackProxies).forEach(function (callbackName) {\n var proxy = callbackProxies[callbackName];\n\n optionsCopy.callbacks[callbackName] = proxy.proxyFunction;\n });\n\n if (type === 'traditional') {\n return new qq.FineUploaderBasic(optionsCopy);\n } else {\n return new qq[type].FineUploaderBasic(optionsCopy);\n }\n};\n\nvar normalizeCallbackName = function normalizeCallbackName(name) {\n if (!name.match(/^on[A-Z]/)) {\n return 'on' + name[0].toUpperCase() + name.slice(1);\n }\n\n return name;\n};\n\nvar registerOptionsCallbacks = function registerOptionsCallbacks(_ref3) {\n var callbacks = _ref3.callbacks,\n callbackProxies = _ref3.callbackProxies;\n\n Object.keys(callbacks).forEach(function (callbackName) {\n var callbackProxy = callbackProxies[callbackName];\n\n callbackProxy.add(callbacks[callbackName]);\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _callbackNames = require('./callback-names');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar privateData = new WeakMap();\nvar callbacks = new WeakMap();\n\nvar CallbackProxy = function () {\n function CallbackProxy(name) {\n _classCallCheck(this, CallbackProxy);\n\n callbacks.set(this, []);\n\n privateData.set(this, {\n name: name,\n proxyFunction: getProxyFunction.call(this, { name: name })\n });\n }\n\n _createClass(CallbackProxy, [{\n key: 'add',\n value: function add(callback) {\n callbacks.get(this).push(callback);\n }\n }, {\n key: 'remove',\n value: function remove(callback) {\n var index = callbacks.get(this).indexOf(callback);\n if (index >= 0) {\n callbacks.get(this).splice(index, 1);\n }\n }\n }, {\n key: 'name',\n get: function get() {\n return privateData.get(this).name;\n }\n }, {\n key: 'proxyFunction',\n get: function get() {\n return privateData.get(this).proxyFunction;\n }\n }]);\n\n return CallbackProxy;\n}();\n\nexports.default = CallbackProxy;\n\n\nvar getProxyFunction = function getProxyFunction(_ref) {\n var name = _ref.name;\n\n var proxyClassContext = this;\n\n return function () {\n for (var _len = arguments.length, originalCallbackArguments = Array(_len), _key = 0; _key < _len; _key++) {\n originalCallbackArguments[_key] = arguments[_key];\n }\n\n var isThenable = _callbackNames.thenable.indexOf(name) >= 0;\n var registeredCallbacks = callbacks.get(proxyClassContext);\n var callbackReturnValue = void 0;\n\n if (isThenable) {\n callbackReturnValue = executeThenableCallbacks({ registeredCallbacks: registeredCallbacks, originalCallbackArguments: originalCallbackArguments });\n } else {\n (0, _objectAssign2.default)([], registeredCallbacks).every(function (callback) {\n var returnValue = callback.apply(null, originalCallbackArguments);\n\n callbackReturnValue = returnValue;\n\n return returnValue !== false;\n });\n }\n\n return callbackReturnValue;\n };\n};\n\nvar executeThenableCallbacks = function executeThenableCallbacks(_ref2) {\n var registeredCallbacks = _ref2.registeredCallbacks,\n originalCallbackArguments = _ref2.originalCallbackArguments;\n\n if (registeredCallbacks.length) {\n return executeThenableCallback({\n registeredCallbacks: (0, _objectAssign2.default)([], registeredCallbacks).reverse(),\n originalCallbackArguments: originalCallbackArguments\n });\n }\n\n return Promise.resolve();\n};\n\nvar getResultToPass = function getResultToPass(_ref3) {\n var newResult = _ref3.newResult,\n previousResult = _ref3.previousResult;\n\n if (newResult !== null && (typeof newResult === 'undefined' ? 'undefined' : _typeof(newResult)) === 'object') {\n return (0, _objectAssign2.default)({}, previousResult || {}, newResult);\n } else {\n return newResult || previousResult;\n }\n};\n\nvar executeThenableCallback = function executeThenableCallback(_ref4) {\n var registeredCallbacks = _ref4.registeredCallbacks,\n originalCallbackArguments = _ref4.originalCallbackArguments,\n previousResult = _ref4.previousResult;\n\n return new Promise(function (resolve, reject) {\n var callback = registeredCallbacks.pop();\n\n var returnValue = callback.apply(null, originalCallbackArguments);\n\n if (returnValue && returnValue.then) {\n returnValue.then(function (result) {\n var resultToPass = getResultToPass({ newResult: result, previousResult: previousResult });\n\n if (registeredCallbacks.length) {\n executeThenableCallback({ registeredCallbacks: registeredCallbacks, originalCallbackArguments: originalCallbackArguments, previousResult: resultToPass }).then(resolve, reject);\n } else {\n resolve(resultToPass);\n }\n }).catch(function (error) {\n return reject(error);\n });\n } else if (returnValue === false) {\n reject();\n } else {\n var resultToPass = getResultToPass({ newResult: returnValue, previousResult: previousResult });\n\n if (registeredCallbacks.length) {\n executeThenableCallback({ registeredCallbacks: registeredCallbacks, originalCallbackArguments: originalCallbackArguments, previousResult: resultToPass }).then(resolve, reject);\n } else {\n resolve(resultToPass);\n }\n }\n });\n};","\"use strict\";\r\n\r\nmodule.exports = require(\"../../fine-uploader/fine-uploader.core\");\r\n","// Fine Uploader 5.15.0 - (c) 2013-present Widen Enterprises, Inc. MIT licensed. http://fineuploader.com\n(function(global) {\n var qq = function(element) {\n \"use strict\";\n return {\n hide: function() {\n element.style.display = \"none\";\n return this;\n },\n attach: function(type, fn) {\n if (element.addEventListener) {\n element.addEventListener(type, fn, false);\n } else if (element.attachEvent) {\n element.attachEvent(\"on\" + type, fn);\n }\n return function() {\n qq(element).detach(type, fn);\n };\n },\n detach: function(type, fn) {\n if (element.removeEventListener) {\n element.removeEventListener(type, fn, false);\n } else if (element.attachEvent) {\n element.detachEvent(\"on\" + type, fn);\n }\n return this;\n },\n contains: function(descendant) {\n if (!descendant) {\n return false;\n }\n if (element === descendant) {\n return true;\n }\n if (element.contains) {\n return element.contains(descendant);\n } else {\n return !!(descendant.compareDocumentPosition(element) & 8);\n }\n },\n insertBefore: function(elementB) {\n elementB.parentNode.insertBefore(element, elementB);\n return this;\n },\n remove: function() {\n element.parentNode.removeChild(element);\n return this;\n },\n css: function(styles) {\n if (element.style == null) {\n throw new qq.Error(\"Can't apply style to node as it is not on the HTMLElement prototype chain!\");\n }\n if (styles.opacity != null) {\n if (typeof element.style.opacity !== \"string\" && typeof element.filters !== \"undefined\") {\n styles.filter = \"alpha(opacity=\" + Math.round(100 * styles.opacity) + \")\";\n }\n }\n qq.extend(element.style, styles);\n return this;\n },\n hasClass: function(name, considerParent) {\n var re = new RegExp(\"(^| )\" + name + \"( |$)\");\n return re.test(element.className) || !!(considerParent && re.test(element.parentNode.className));\n },\n addClass: function(name) {\n if (!qq(element).hasClass(name)) {\n element.className += \" \" + name;\n }\n return this;\n },\n removeClass: function(name) {\n var re = new RegExp(\"(^| )\" + name + \"( |$)\");\n element.className = element.className.replace(re, \" \").replace(/^\\s+|\\s+$/g, \"\");\n return this;\n },\n getByClass: function(className, first) {\n var candidates, result = [];\n if (first && element.querySelector) {\n return element.querySelector(\".\" + className);\n } else if (element.querySelectorAll) {\n return element.querySelectorAll(\".\" + className);\n }\n candidates = element.getElementsByTagName(\"*\");\n qq.each(candidates, function(idx, val) {\n if (qq(val).hasClass(className)) {\n result.push(val);\n }\n });\n return first ? result[0] : result;\n },\n getFirstByClass: function(className) {\n return qq(element).getByClass(className, true);\n },\n children: function() {\n var children = [], child = element.firstChild;\n while (child) {\n if (child.nodeType === 1) {\n children.push(child);\n }\n child = child.nextSibling;\n }\n return children;\n },\n setText: function(text) {\n element.innerText = text;\n element.textContent = text;\n return this;\n },\n clearText: function() {\n return qq(element).setText(\"\");\n },\n hasAttribute: function(attrName) {\n var attrVal;\n if (element.hasAttribute) {\n if (!element.hasAttribute(attrName)) {\n return false;\n }\n return /^false$/i.exec(element.getAttribute(attrName)) == null;\n } else {\n attrVal = element[attrName];\n if (attrVal === undefined) {\n return false;\n }\n return /^false$/i.exec(attrVal) == null;\n }\n }\n };\n };\n (function() {\n \"use strict\";\n qq.canvasToBlob = function(canvas, mime, quality) {\n return qq.dataUriToBlob(canvas.toDataURL(mime, quality));\n };\n qq.dataUriToBlob = function(dataUri) {\n var arrayBuffer, byteString, createBlob = function(data, mime) {\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder, blobBuilder = BlobBuilder && new BlobBuilder();\n if (blobBuilder) {\n blobBuilder.append(data);\n return blobBuilder.getBlob(mime);\n } else {\n return new Blob([ data ], {\n type: mime\n });\n }\n }, intArray, mimeString;\n if (dataUri.split(\",\")[0].indexOf(\"base64\") >= 0) {\n byteString = atob(dataUri.split(\",\")[1]);\n } else {\n byteString = decodeURI(dataUri.split(\",\")[1]);\n }\n mimeString = dataUri.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n qq.each(byteString, function(idx, character) {\n intArray[idx] = character.charCodeAt(0);\n });\n return createBlob(arrayBuffer, mimeString);\n };\n qq.log = function(message, level) {\n if (window.console) {\n if (!level || level === \"info\") {\n window.console.log(message);\n } else {\n if (window.console[level]) {\n window.console[level](message);\n } else {\n window.console.log(\"<\" + level + \"> \" + message);\n }\n }\n }\n };\n qq.isObject = function(variable) {\n return variable && !variable.nodeType && Object.prototype.toString.call(variable) === \"[object Object]\";\n };\n qq.isFunction = function(variable) {\n return typeof variable === \"function\";\n };\n qq.isArray = function(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\" || value && window.ArrayBuffer && value.buffer && value.buffer.constructor === ArrayBuffer;\n };\n qq.isItemList = function(maybeItemList) {\n return Object.prototype.toString.call(maybeItemList) === \"[object DataTransferItemList]\";\n };\n qq.isNodeList = function(maybeNodeList) {\n return Object.prototype.toString.call(maybeNodeList) === \"[object NodeList]\" || maybeNodeList.item && maybeNodeList.namedItem;\n };\n qq.isString = function(maybeString) {\n return Object.prototype.toString.call(maybeString) === \"[object String]\";\n };\n qq.trimStr = function(string) {\n if (String.prototype.trim) {\n return string.trim();\n }\n return string.replace(/^\\s+|\\s+$/g, \"\");\n };\n qq.format = function(str) {\n var args = Array.prototype.slice.call(arguments, 1), newStr = str, nextIdxToReplace = newStr.indexOf(\"{}\");\n qq.each(args, function(idx, val) {\n var strBefore = newStr.substring(0, nextIdxToReplace), strAfter = newStr.substring(nextIdxToReplace + 2);\n newStr = strBefore + val + strAfter;\n nextIdxToReplace = newStr.indexOf(\"{}\", nextIdxToReplace + val.length);\n if (nextIdxToReplace < 0) {\n return false;\n }\n });\n return newStr;\n };\n qq.isFile = function(maybeFile) {\n return window.File && Object.prototype.toString.call(maybeFile) === \"[object File]\";\n };\n qq.isFileList = function(maybeFileList) {\n return window.FileList && Object.prototype.toString.call(maybeFileList) === \"[object FileList]\";\n };\n qq.isFileOrInput = function(maybeFileOrInput) {\n return qq.isFile(maybeFileOrInput) || qq.isInput(maybeFileOrInput);\n };\n qq.isInput = function(maybeInput, notFile) {\n var evaluateType = function(type) {\n var normalizedType = type.toLowerCase();\n if (notFile) {\n return normalizedType !== \"file\";\n }\n return normalizedType === \"file\";\n };\n if (window.HTMLInputElement) {\n if (Object.prototype.toString.call(maybeInput) === \"[object HTMLInputElement]\") {\n if (maybeInput.type && evaluateType(maybeInput.type)) {\n return true;\n }\n }\n }\n if (maybeInput.tagName) {\n if (maybeInput.tagName.toLowerCase() === \"input\") {\n if (maybeInput.type && evaluateType(maybeInput.type)) {\n return true;\n }\n }\n }\n return false;\n };\n qq.isBlob = function(maybeBlob) {\n if (window.Blob && Object.prototype.toString.call(maybeBlob) === \"[object Blob]\") {\n return true;\n }\n };\n qq.isXhrUploadSupported = function() {\n var input = document.createElement(\"input\");\n input.type = \"file\";\n return input.multiple !== undefined && typeof File !== \"undefined\" && typeof FormData !== \"undefined\" && typeof qq.createXhrInstance().upload !== \"undefined\";\n };\n qq.createXhrInstance = function() {\n if (window.XMLHttpRequest) {\n return new XMLHttpRequest();\n }\n try {\n return new ActiveXObject(\"MSXML2.XMLHTTP.3.0\");\n } catch (error) {\n qq.log(\"Neither XHR or ActiveX are supported!\", \"error\");\n return null;\n }\n };\n qq.isFolderDropSupported = function(dataTransfer) {\n return dataTransfer.items && dataTransfer.items.length > 0 && dataTransfer.items[0].webkitGetAsEntry;\n };\n qq.isFileChunkingSupported = function() {\n return !qq.androidStock() && qq.isXhrUploadSupported() && (File.prototype.slice !== undefined || File.prototype.webkitSlice !== undefined || File.prototype.mozSlice !== undefined);\n };\n qq.sliceBlob = function(fileOrBlob, start, end) {\n var slicer = fileOrBlob.slice || fileOrBlob.mozSlice || fileOrBlob.webkitSlice;\n return slicer.call(fileOrBlob, start, end);\n };\n qq.arrayBufferToHex = function(buffer) {\n var bytesAsHex = \"\", bytes = new Uint8Array(buffer);\n qq.each(bytes, function(idx, byt) {\n var byteAsHexStr = byt.toString(16);\n if (byteAsHexStr.length < 2) {\n byteAsHexStr = \"0\" + byteAsHexStr;\n }\n bytesAsHex += byteAsHexStr;\n });\n return bytesAsHex;\n };\n qq.readBlobToHex = function(blob, startOffset, length) {\n var initialBlob = qq.sliceBlob(blob, startOffset, startOffset + length), fileReader = new FileReader(), promise = new qq.Promise();\n fileReader.onload = function() {\n promise.success(qq.arrayBufferToHex(fileReader.result));\n };\n fileReader.onerror = promise.failure;\n fileReader.readAsArrayBuffer(initialBlob);\n return promise;\n };\n qq.extend = function(first, second, extendNested) {\n qq.each(second, function(prop, val) {\n if (extendNested && qq.isObject(val)) {\n if (first[prop] === undefined) {\n first[prop] = {};\n }\n qq.extend(first[prop], val, true);\n } else {\n first[prop] = val;\n }\n });\n return first;\n };\n qq.override = function(target, sourceFn) {\n var super_ = {}, source = sourceFn(super_);\n qq.each(source, function(srcPropName, srcPropVal) {\n if (target[srcPropName] !== undefined) {\n super_[srcPropName] = target[srcPropName];\n }\n target[srcPropName] = srcPropVal;\n });\n return target;\n };\n qq.indexOf = function(arr, elt, from) {\n if (arr.indexOf) {\n return arr.indexOf(elt, from);\n }\n from = from || 0;\n var len = arr.length;\n if (from < 0) {\n from += len;\n }\n for (;from < len; from += 1) {\n if (arr.hasOwnProperty(from) && arr[from] === elt) {\n return from;\n }\n }\n return -1;\n };\n qq.getUniqueId = function() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n };\n qq.ie = function() {\n return navigator.userAgent.indexOf(\"MSIE\") !== -1 || navigator.userAgent.indexOf(\"Trident\") !== -1;\n };\n qq.ie7 = function() {\n return navigator.userAgent.indexOf(\"MSIE 7\") !== -1;\n };\n qq.ie8 = function() {\n return navigator.userAgent.indexOf(\"MSIE 8\") !== -1;\n };\n qq.ie10 = function() {\n return navigator.userAgent.indexOf(\"MSIE 10\") !== -1;\n };\n qq.ie11 = function() {\n return qq.ie() && navigator.userAgent.indexOf(\"rv:11\") !== -1;\n };\n qq.edge = function() {\n return navigator.userAgent.indexOf(\"Edge\") >= 0;\n };\n qq.safari = function() {\n return navigator.vendor !== undefined && navigator.vendor.indexOf(\"Apple\") !== -1;\n };\n qq.chrome = function() {\n return navigator.vendor !== undefined && navigator.vendor.indexOf(\"Google\") !== -1;\n };\n qq.opera = function() {\n return navigator.vendor !== undefined && navigator.vendor.indexOf(\"Opera\") !== -1;\n };\n qq.firefox = function() {\n return !qq.edge() && !qq.ie11() && navigator.userAgent.indexOf(\"Mozilla\") !== -1 && navigator.vendor !== undefined && navigator.vendor === \"\";\n };\n qq.windows = function() {\n return navigator.platform === \"Win32\";\n };\n qq.android = function() {\n return navigator.userAgent.toLowerCase().indexOf(\"android\") !== -1;\n };\n qq.androidStock = function() {\n return qq.android() && navigator.userAgent.toLowerCase().indexOf(\"chrome\") < 0;\n };\n qq.ios6 = function() {\n return qq.ios() && navigator.userAgent.indexOf(\" OS 6_\") !== -1;\n };\n qq.ios7 = function() {\n return qq.ios() && navigator.userAgent.indexOf(\" OS 7_\") !== -1;\n };\n qq.ios8 = function() {\n return qq.ios() && navigator.userAgent.indexOf(\" OS 8_\") !== -1;\n };\n qq.ios800 = function() {\n return qq.ios() && navigator.userAgent.indexOf(\" OS 8_0 \") !== -1;\n };\n qq.ios = function() {\n return navigator.userAgent.indexOf(\"iPad\") !== -1 || navigator.userAgent.indexOf(\"iPod\") !== -1 || navigator.userAgent.indexOf(\"iPhone\") !== -1;\n };\n qq.iosChrome = function() {\n return qq.ios() && navigator.userAgent.indexOf(\"CriOS\") !== -1;\n };\n qq.iosSafari = function() {\n return qq.ios() && !qq.iosChrome() && navigator.userAgent.indexOf(\"Safari\") !== -1;\n };\n qq.iosSafariWebView = function() {\n return qq.ios() && !qq.iosChrome() && !qq.iosSafari();\n };\n qq.preventDefault = function(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n };\n qq.toElement = function() {\n var div = document.createElement(\"div\");\n return function(html) {\n div.innerHTML = html;\n var element = div.firstChild;\n div.removeChild(element);\n return element;\n };\n }();\n qq.each = function(iterableItem, callback) {\n var keyOrIndex, retVal;\n if (iterableItem) {\n if (window.Storage && iterableItem.constructor === window.Storage) {\n for (keyOrIndex = 0; keyOrIndex < iterableItem.length; keyOrIndex++) {\n retVal = callback(iterableItem.key(keyOrIndex), iterableItem.getItem(iterableItem.key(keyOrIndex)));\n if (retVal === false) {\n break;\n }\n }\n } else if (qq.isArray(iterableItem) || qq.isItemList(iterableItem) || qq.isNodeList(iterableItem)) {\n for (keyOrIndex = 0; keyOrIndex < iterableItem.length; keyOrIndex++) {\n retVal = callback(keyOrIndex, iterableItem[keyOrIndex]);\n if (retVal === false) {\n break;\n }\n }\n } else if (qq.isString(iterableItem)) {\n for (keyOrIndex = 0; keyOrIndex < iterableItem.length; keyOrIndex++) {\n retVal = callback(keyOrIndex, iterableItem.charAt(keyOrIndex));\n if (retVal === false) {\n break;\n }\n }\n } else {\n for (keyOrIndex in iterableItem) {\n if (Object.prototype.hasOwnProperty.call(iterableItem, keyOrIndex)) {\n retVal = callback(keyOrIndex, iterableItem[keyOrIndex]);\n if (retVal === false) {\n break;\n }\n }\n }\n }\n }\n };\n qq.bind = function(oldFunc, context) {\n if (qq.isFunction(oldFunc)) {\n var args = Array.prototype.slice.call(arguments, 2);\n return function() {\n var newArgs = qq.extend([], args);\n if (arguments.length) {\n newArgs = newArgs.concat(Array.prototype.slice.call(arguments));\n }\n return oldFunc.apply(context, newArgs);\n };\n }\n throw new Error(\"first parameter must be a function!\");\n };\n qq.obj2url = function(obj, temp, prefixDone) {\n var uristrings = [], prefix = \"&\", add = function(nextObj, i) {\n var nextTemp = temp ? /\\[\\]$/.test(temp) ? temp : temp + \"[\" + i + \"]\" : i;\n if (nextTemp !== \"undefined\" && i !== \"undefined\") {\n uristrings.push(typeof nextObj === \"object\" ? qq.obj2url(nextObj, nextTemp, true) : Object.prototype.toString.call(nextObj) === \"[object Function]\" ? encodeURIComponent(nextTemp) + \"=\" + encodeURIComponent(nextObj()) : encodeURIComponent(nextTemp) + \"=\" + encodeURIComponent(nextObj));\n }\n };\n if (!prefixDone && temp) {\n prefix = /\\?/.test(temp) ? /\\?$/.test(temp) ? \"\" : \"&\" : \"?\";\n uristrings.push(temp);\n uristrings.push(qq.obj2url(obj));\n } else if (Object.prototype.toString.call(obj) === \"[object Array]\" && typeof obj !== \"undefined\") {\n qq.each(obj, function(idx, val) {\n add(val, idx);\n });\n } else if (typeof obj !== \"undefined\" && obj !== null && typeof obj === \"object\") {\n qq.each(obj, function(prop, val) {\n add(val, prop);\n });\n } else {\n uristrings.push(encodeURIComponent(temp) + \"=\" + encodeURIComponent(obj));\n }\n if (temp) {\n return uristrings.join(prefix);\n } else {\n return uristrings.join(prefix).replace(/^&/, \"\").replace(/%20/g, \"+\");\n }\n };\n qq.obj2FormData = function(obj, formData, arrayKeyName) {\n if (!formData) {\n formData = new FormData();\n }\n qq.each(obj, function(key, val) {\n key = arrayKeyName ? arrayKeyName + \"[\" + key + \"]\" : key;\n if (qq.isObject(val)) {\n qq.obj2FormData(val, formData, key);\n } else if (qq.isFunction(val)) {\n formData.append(key, val());\n } else {\n formData.append(key, val);\n }\n });\n return formData;\n };\n qq.obj2Inputs = function(obj, form) {\n var input;\n if (!form) {\n form = document.createElement(\"form\");\n }\n qq.obj2FormData(obj, {\n append: function(key, val) {\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", key);\n input.setAttribute(\"value\", val);\n form.appendChild(input);\n }\n });\n return form;\n };\n qq.parseJson = function(json) {\n if (window.JSON && qq.isFunction(JSON.parse)) {\n return JSON.parse(json);\n } else {\n return eval(\"(\" + json + \")\");\n }\n };\n qq.getExtension = function(filename) {\n var extIdx = filename.lastIndexOf(\".\") + 1;\n if (extIdx > 0) {\n return filename.substr(extIdx, filename.length - extIdx);\n }\n };\n qq.getFilename = function(blobOrFileInput) {\n if (qq.isInput(blobOrFileInput)) {\n return blobOrFileInput.value.replace(/.*(\\/|\\\\)/, \"\");\n } else if (qq.isFile(blobOrFileInput)) {\n if (blobOrFileInput.fileName !== null && blobOrFileInput.fileName !== undefined) {\n return blobOrFileInput.fileName;\n }\n }\n return blobOrFileInput.name;\n };\n qq.DisposeSupport = function() {\n var disposers = [];\n return {\n dispose: function() {\n var disposer;\n do {\n disposer = disposers.shift();\n if (disposer) {\n disposer();\n }\n } while (disposer);\n },\n attach: function() {\n var args = arguments;\n this.addDisposer(qq(args[0]).attach.apply(this, Array.prototype.slice.call(arguments, 1)));\n },\n addDisposer: function(disposeFunction) {\n disposers.push(disposeFunction);\n }\n };\n };\n })();\n (function() {\n \"use strict\";\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return qq;\n });\n } else if (typeof module !== \"undefined\" && module.exports) {\n module.exports = qq;\n } else {\n global.qq = qq;\n }\n })();\n (function() {\n \"use strict\";\n qq.Error = function(message) {\n this.message = \"[Fine Uploader \" + qq.version + \"] \" + message;\n };\n qq.Error.prototype = new Error();\n })();\n qq.version = \"5.15.0\";\n qq.supportedFeatures = function() {\n \"use strict\";\n var supportsUploading, supportsUploadingBlobs, supportsFileDrop, supportsAjaxFileUploading, supportsFolderDrop, supportsChunking, supportsResume, supportsUploadViaPaste, supportsUploadCors, supportsDeleteFileXdr, supportsDeleteFileCorsXhr, supportsDeleteFileCors, supportsFolderSelection, supportsImagePreviews, supportsUploadProgress;\n function testSupportsFileInputElement() {\n var supported = true, tempInput;\n try {\n tempInput = document.createElement(\"input\");\n tempInput.type = \"file\";\n qq(tempInput).hide();\n if (tempInput.disabled) {\n supported = false;\n }\n } catch (ex) {\n supported = false;\n }\n return supported;\n }\n function isChrome21OrHigher() {\n return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\\/[2][1-9]|Chrome\\/[3-9][0-9]/) !== undefined;\n }\n function isChrome14OrHigher() {\n return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\\/[1][4-9]|Chrome\\/[2-9][0-9]/) !== undefined;\n }\n function isCrossOriginXhrSupported() {\n if (window.XMLHttpRequest) {\n var xhr = qq.createXhrInstance();\n return xhr.withCredentials !== undefined;\n }\n return false;\n }\n function isXdrSupported() {\n return window.XDomainRequest !== undefined;\n }\n function isCrossOriginAjaxSupported() {\n if (isCrossOriginXhrSupported()) {\n return true;\n }\n return isXdrSupported();\n }\n function isFolderSelectionSupported() {\n return document.createElement(\"input\").webkitdirectory !== undefined;\n }\n function isLocalStorageSupported() {\n try {\n return !!window.localStorage && qq.isFunction(window.localStorage.setItem);\n } catch (error) {\n return false;\n }\n }\n function isDragAndDropSupported() {\n var span = document.createElement(\"span\");\n return (\"draggable\" in span || \"ondragstart\" in span && \"ondrop\" in span) && !qq.android() && !qq.ios();\n }\n supportsUploading = testSupportsFileInputElement();\n supportsAjaxFileUploading = supportsUploading && qq.isXhrUploadSupported();\n supportsUploadingBlobs = supportsAjaxFileUploading && !qq.androidStock();\n supportsFileDrop = supportsAjaxFileUploading && isDragAndDropSupported();\n supportsFolderDrop = supportsFileDrop && isChrome21OrHigher();\n supportsChunking = supportsAjaxFileUploading && qq.isFileChunkingSupported();\n supportsResume = supportsAjaxFileUploading && supportsChunking && isLocalStorageSupported();\n supportsUploadViaPaste = supportsAjaxFileUploading && isChrome14OrHigher();\n supportsUploadCors = supportsUploading && (window.postMessage !== undefined || supportsAjaxFileUploading);\n supportsDeleteFileCorsXhr = isCrossOriginXhrSupported();\n supportsDeleteFileXdr = isXdrSupported();\n supportsDeleteFileCors = isCrossOriginAjaxSupported();\n supportsFolderSelection = isFolderSelectionSupported();\n supportsImagePreviews = supportsAjaxFileUploading && window.FileReader !== undefined;\n supportsUploadProgress = function() {\n if (supportsAjaxFileUploading) {\n return !qq.androidStock() && !qq.iosChrome();\n }\n return false;\n }();\n return {\n ajaxUploading: supportsAjaxFileUploading,\n blobUploading: supportsUploadingBlobs,\n canDetermineSize: supportsAjaxFileUploading,\n chunking: supportsChunking,\n deleteFileCors: supportsDeleteFileCors,\n deleteFileCorsXdr: supportsDeleteFileXdr,\n deleteFileCorsXhr: supportsDeleteFileCorsXhr,\n dialogElement: !!window.HTMLDialogElement,\n fileDrop: supportsFileDrop,\n folderDrop: supportsFolderDrop,\n folderSelection: supportsFolderSelection,\n imagePreviews: supportsImagePreviews,\n imageValidation: supportsImagePreviews,\n itemSizeValidation: supportsAjaxFileUploading,\n pause: supportsChunking,\n progressBar: supportsUploadProgress,\n resume: supportsResume,\n scaling: supportsImagePreviews && supportsUploadingBlobs,\n tiffPreviews: qq.safari(),\n unlimitedScaledImageSize: !qq.ios(),\n uploading: supportsUploading,\n uploadCors: supportsUploadCors,\n uploadCustomHeaders: supportsAjaxFileUploading,\n uploadNonMultipart: supportsAjaxFileUploading,\n uploadViaPaste: supportsUploadViaPaste\n };\n }();\n qq.isGenericPromise = function(maybePromise) {\n \"use strict\";\n return !!(maybePromise && maybePromise.then && qq.isFunction(maybePromise.then));\n };\n qq.Promise = function() {\n \"use strict\";\n var successArgs, failureArgs, successCallbacks = [], failureCallbacks = [], doneCallbacks = [], state = 0;\n qq.extend(this, {\n then: function(onSuccess, onFailure) {\n if (state === 0) {\n if (onSuccess) {\n successCallbacks.push(onSuccess);\n }\n if (onFailure) {\n failureCallbacks.push(onFailure);\n }\n } else if (state === -1) {\n onFailure && onFailure.apply(null, failureArgs);\n } else if (onSuccess) {\n onSuccess.apply(null, successArgs);\n }\n return this;\n },\n done: function(callback) {\n if (state === 0) {\n doneCallbacks.push(callback);\n } else {\n callback.apply(null, failureArgs === undefined ? successArgs : failureArgs);\n }\n return this;\n },\n success: function() {\n state = 1;\n successArgs = arguments;\n if (successCallbacks.length) {\n qq.each(successCallbacks, function(idx, callback) {\n callback.apply(null, successArgs);\n });\n }\n if (doneCallbacks.length) {\n qq.each(doneCallbacks, function(idx, callback) {\n callback.apply(null, successArgs);\n });\n }\n return this;\n },\n failure: function() {\n state = -1;\n failureArgs = arguments;\n if (failureCallbacks.length) {\n qq.each(failureCallbacks, function(idx, callback) {\n callback.apply(null, failureArgs);\n });\n }\n if (doneCallbacks.length) {\n qq.each(doneCallbacks, function(idx, callback) {\n callback.apply(null, failureArgs);\n });\n }\n return this;\n }\n });\n };\n qq.BlobProxy = function(referenceBlob, onCreate) {\n \"use strict\";\n qq.extend(this, {\n referenceBlob: referenceBlob,\n create: function() {\n return onCreate(referenceBlob);\n }\n });\n };\n qq.UploadButton = function(o) {\n \"use strict\";\n var self = this, disposeSupport = new qq.DisposeSupport(), options = {\n acceptFiles: null,\n element: null,\n focusClass: \"qq-upload-button-focus\",\n folders: false,\n hoverClass: \"qq-upload-button-hover\",\n ios8BrowserCrashWorkaround: false,\n multiple: false,\n name: \"qqfile\",\n onChange: function(input) {},\n title: null\n }, input, buttonId;\n qq.extend(options, o);\n buttonId = qq.getUniqueId();\n function createInput() {\n var input = document.createElement(\"input\");\n input.setAttribute(qq.UploadButton.BUTTON_ID_ATTR_NAME, buttonId);\n input.setAttribute(\"title\", options.title);\n self.setMultiple(options.multiple, input);\n if (options.folders && qq.supportedFeatures.folderSelection) {\n input.setAttribute(\"webkitdirectory\", \"\");\n }\n if (options.acceptFiles) {\n input.setAttribute(\"accept\", options.acceptFiles);\n }\n input.setAttribute(\"type\", \"file\");\n input.setAttribute(\"name\", options.name);\n qq(input).css({\n position: \"absolute\",\n right: 0,\n top: 0,\n fontFamily: \"Arial\",\n fontSize: qq.ie() && !qq.ie8() ? \"3500px\" : \"118px\",\n margin: 0,\n padding: 0,\n cursor: \"pointer\",\n opacity: 0\n });\n !qq.ie7() && qq(input).css({\n height: \"100%\"\n });\n options.element.appendChild(input);\n disposeSupport.attach(input, \"change\", function() {\n options.onChange(input);\n });\n disposeSupport.attach(input, \"mouseover\", function() {\n qq(options.element).addClass(options.hoverClass);\n });\n disposeSupport.attach(input, \"mouseout\", function() {\n qq(options.element).removeClass(options.hoverClass);\n });\n disposeSupport.attach(input, \"focus\", function() {\n qq(options.element).addClass(options.focusClass);\n });\n disposeSupport.attach(input, \"blur\", function() {\n qq(options.element).removeClass(options.focusClass);\n });\n return input;\n }\n qq(options.element).css({\n position: \"relative\",\n overflow: \"hidden\",\n direction: \"ltr\"\n });\n qq.extend(this, {\n getInput: function() {\n return input;\n },\n getButtonId: function() {\n return buttonId;\n },\n setMultiple: function(isMultiple, optInput) {\n var input = optInput || this.getInput();\n if (options.ios8BrowserCrashWorkaround && qq.ios8() && (qq.iosChrome() || qq.iosSafariWebView())) {\n input.setAttribute(\"multiple\", \"\");\n } else {\n if (isMultiple) {\n input.setAttribute(\"multiple\", \"\");\n } else {\n input.removeAttribute(\"multiple\");\n }\n }\n },\n setAcceptFiles: function(acceptFiles) {\n if (acceptFiles !== options.acceptFiles) {\n input.setAttribute(\"accept\", acceptFiles);\n }\n },\n reset: function() {\n if (input.parentNode) {\n qq(input).remove();\n }\n qq(options.element).removeClass(options.focusClass);\n input = null;\n input = createInput();\n }\n });\n input = createInput();\n };\n qq.UploadButton.BUTTON_ID_ATTR_NAME = \"qq-button-id\";\n qq.UploadData = function(uploaderProxy) {\n \"use strict\";\n var data = [], byUuid = {}, byStatus = {}, byProxyGroupId = {}, byBatchId = {};\n function getDataByIds(idOrIds) {\n if (qq.isArray(idOrIds)) {\n var entries = [];\n qq.each(idOrIds, function(idx, id) {\n entries.push(data[id]);\n });\n return entries;\n }\n return data[idOrIds];\n }\n function getDataByUuids(uuids) {\n if (qq.isArray(uuids)) {\n var entries = [];\n qq.each(uuids, function(idx, uuid) {\n entries.push(data[byUuid[uuid]]);\n });\n return entries;\n }\n return data[byUuid[uuids]];\n }\n function getDataByStatus(status) {\n var statusResults = [], statuses = [].concat(status);\n qq.each(statuses, function(index, statusEnum) {\n var statusResultIndexes = byStatus[statusEnum];\n if (statusResultIndexes !== undefined) {\n qq.each(statusResultIndexes, function(i, dataIndex) {\n statusResults.push(data[dataIndex]);\n });\n }\n });\n return statusResults;\n }\n qq.extend(this, {\n addFile: function(spec) {\n var status = spec.status || qq.status.SUBMITTING, id = data.push({\n name: spec.name,\n originalName: spec.name,\n uuid: spec.uuid,\n size: spec.size == null ? -1 : spec.size,\n status: status\n }) - 1;\n if (spec.batchId) {\n data[id].batchId = spec.batchId;\n if (byBatchId[spec.batchId] === undefined) {\n byBatchId[spec.batchId] = [];\n }\n byBatchId[spec.batchId].push(id);\n }\n if (spec.proxyGroupId) {\n data[id].proxyGroupId = spec.proxyGroupId;\n if (byProxyGroupId[spec.proxyGroupId] === undefined) {\n byProxyGroupId[spec.proxyGroupId] = [];\n }\n byProxyGroupId[spec.proxyGroupId].push(id);\n }\n data[id].id = id;\n byUuid[spec.uuid] = id;\n if (byStatus[status] === undefined) {\n byStatus[status] = [];\n }\n byStatus[status].push(id);\n spec.onBeforeStatusChange && spec.onBeforeStatusChange(id);\n uploaderProxy.onStatusChange(id, null, status);\n return id;\n },\n retrieve: function(optionalFilter) {\n if (qq.isObject(optionalFilter) && data.length) {\n if (optionalFilter.id !== undefined) {\n return getDataByIds(optionalFilter.id);\n } else if (optionalFilter.uuid !== undefined) {\n return getDataByUuids(optionalFilter.uuid);\n } else if (optionalFilter.status) {\n return getDataByStatus(optionalFilter.status);\n }\n } else {\n return qq.extend([], data, true);\n }\n },\n reset: function() {\n data = [];\n byUuid = {};\n byStatus = {};\n byBatchId = {};\n },\n setStatus: function(id, newStatus) {\n var oldStatus = data[id].status, byStatusOldStatusIndex = qq.indexOf(byStatus[oldStatus], id);\n byStatus[oldStatus].splice(byStatusOldStatusIndex, 1);\n data[id].status = newStatus;\n if (byStatus[newStatus] === undefined) {\n byStatus[newStatus] = [];\n }\n byStatus[newStatus].push(id);\n uploaderProxy.onStatusChange(id, oldStatus, newStatus);\n },\n uuidChanged: function(id, newUuid) {\n var oldUuid = data[id].uuid;\n data[id].uuid = newUuid;\n byUuid[newUuid] = id;\n delete byUuid[oldUuid];\n },\n updateName: function(id, newName) {\n data[id].name = newName;\n },\n updateSize: function(id, newSize) {\n data[id].size = newSize;\n },\n setParentId: function(targetId, parentId) {\n data[targetId].parentId = parentId;\n },\n getIdsInProxyGroup: function(id) {\n var proxyGroupId = data[id].proxyGroupId;\n if (proxyGroupId) {\n return byProxyGroupId[proxyGroupId];\n }\n return [];\n },\n getIdsInBatch: function(id) {\n var batchId = data[id].batchId;\n return byBatchId[batchId];\n }\n });\n };\n qq.status = {\n SUBMITTING: \"submitting\",\n SUBMITTED: \"submitted\",\n REJECTED: \"rejected\",\n QUEUED: \"queued\",\n CANCELED: \"canceled\",\n PAUSED: \"paused\",\n UPLOADING: \"uploading\",\n UPLOAD_RETRYING: \"retrying upload\",\n UPLOAD_SUCCESSFUL: \"upload successful\",\n UPLOAD_FAILED: \"upload failed\",\n DELETE_FAILED: \"delete failed\",\n DELETING: \"deleting\",\n DELETED: \"deleted\"\n };\n (function() {\n \"use strict\";\n qq.basePublicApi = {\n addBlobs: function(blobDataOrArray, params, endpoint) {\n this.addFiles(blobDataOrArray, params, endpoint);\n },\n addInitialFiles: function(cannedFileList) {\n var self = this;\n qq.each(cannedFileList, function(index, cannedFile) {\n self._addCannedFile(cannedFile);\n });\n },\n addFiles: function(data, params, endpoint) {\n this._maybeHandleIos8SafariWorkaround();\n var batchId = this._storedIds.length === 0 ? qq.getUniqueId() : this._currentBatchId, processBlob = qq.bind(function(blob) {\n this._handleNewFile({\n blob: blob,\n name: this._options.blobs.defaultName\n }, batchId, verifiedFiles);\n }, this), processBlobData = qq.bind(function(blobData) {\n this._handleNewFile(blobData, batchId, verifiedFiles);\n }, this), processCanvas = qq.bind(function(canvas) {\n var blob = qq.canvasToBlob(canvas);\n this._handleNewFile({\n blob: blob,\n name: this._options.blobs.defaultName + \".png\"\n }, batchId, verifiedFiles);\n }, this), processCanvasData = qq.bind(function(canvasData) {\n var normalizedQuality = canvasData.quality && canvasData.quality / 100, blob = qq.canvasToBlob(canvasData.canvas, canvasData.type, normalizedQuality);\n this._handleNewFile({\n blob: blob,\n name: canvasData.name\n }, batchId, verifiedFiles);\n }, this), processFileOrInput = qq.bind(function(fileOrInput) {\n if (qq.isInput(fileOrInput) && qq.supportedFeatures.ajaxUploading) {\n var files = Array.prototype.slice.call(fileOrInput.files), self = this;\n qq.each(files, function(idx, file) {\n self._handleNewFile(file, batchId, verifiedFiles);\n });\n } else {\n this._handleNewFile(fileOrInput, batchId, verifiedFiles);\n }\n }, this), normalizeData = function() {\n if (qq.isFileList(data)) {\n data = Array.prototype.slice.call(data);\n }\n data = [].concat(data);\n }, self = this, verifiedFiles = [];\n this._currentBatchId = batchId;\n if (data) {\n normalizeData();\n qq.each(data, function(idx, fileContainer) {\n if (qq.isFileOrInput(fileContainer)) {\n processFileOrInput(fileContainer);\n } else if (qq.isBlob(fileContainer)) {\n processBlob(fileContainer);\n } else if (qq.isObject(fileContainer)) {\n if (fileContainer.blob && fileContainer.name) {\n processBlobData(fileContainer);\n } else if (fileContainer.canvas && fileContainer.name) {\n processCanvasData(fileContainer);\n }\n } else if (fileContainer.tagName && fileContainer.tagName.toLowerCase() === \"canvas\") {\n processCanvas(fileContainer);\n } else {\n self.log(fileContainer + \" is not a valid file container! Ignoring!\", \"warn\");\n }\n });\n this.log(\"Received \" + verifiedFiles.length + \" files.\");\n this._prepareItemsForUpload(verifiedFiles, params, endpoint);\n }\n },\n cancel: function(id) {\n this._handler.cancel(id);\n },\n cancelAll: function() {\n var storedIdsCopy = [], self = this;\n qq.extend(storedIdsCopy, this._storedIds);\n qq.each(storedIdsCopy, function(idx, storedFileId) {\n self.cancel(storedFileId);\n });\n this._handler.cancelAll();\n },\n clearStoredFiles: function() {\n this._storedIds = [];\n },\n continueUpload: function(id) {\n var uploadData = this._uploadData.retrieve({\n id: id\n });\n if (!qq.supportedFeatures.pause || !this._options.chunking.enabled) {\n return false;\n }\n if (uploadData.status === qq.status.PAUSED) {\n this.log(qq.format(\"Paused file ID {} ({}) will be continued. Not paused.\", id, this.getName(id)));\n this._uploadFile(id);\n return true;\n } else {\n this.log(qq.format(\"Ignoring continue for file ID {} ({}). Not paused.\", id, this.getName(id)), \"error\");\n }\n return false;\n },\n deleteFile: function(id) {\n return this._onSubmitDelete(id);\n },\n doesExist: function(fileOrBlobId) {\n return this._handler.isValid(fileOrBlobId);\n },\n drawThumbnail: function(fileId, imgOrCanvas, maxSize, fromServer, customResizeFunction) {\n var promiseToReturn = new qq.Promise(), fileOrUrl, options;\n if (this._imageGenerator) {\n fileOrUrl = this._thumbnailUrls[fileId];\n options = {\n customResizeFunction: customResizeFunction,\n maxSize: maxSize > 0 ? maxSize : null,\n scale: maxSize > 0\n };\n if (!fromServer && qq.supportedFeatures.imagePreviews) {\n fileOrUrl = this.getFile(fileId);\n }\n if (fileOrUrl == null) {\n promiseToReturn.failure({\n container: imgOrCanvas,\n error: \"File or URL not found.\"\n });\n } else {\n this._imageGenerator.generate(fileOrUrl, imgOrCanvas, options).then(function success(modifiedContainer) {\n promiseToReturn.success(modifiedContainer);\n }, function failure(container, reason) {\n promiseToReturn.failure({\n container: container,\n error: reason || \"Problem generating thumbnail\"\n });\n });\n }\n } else {\n promiseToReturn.failure({\n container: imgOrCanvas,\n error: \"Missing image generator module\"\n });\n }\n return promiseToReturn;\n },\n getButton: function(fileId) {\n return this._getButton(this._buttonIdsForFileIds[fileId]);\n },\n getEndpoint: function(fileId) {\n return this._endpointStore.get(fileId);\n },\n getFile: function(fileOrBlobId) {\n return this._handler.getFile(fileOrBlobId) || null;\n },\n getInProgress: function() {\n return this._uploadData.retrieve({\n status: [ qq.status.UPLOADING, qq.status.UPLOAD_RETRYING, qq.status.QUEUED ]\n }).length;\n },\n getName: function(id) {\n return this._uploadData.retrieve({\n id: id\n }).name;\n },\n getParentId: function(id) {\n var uploadDataEntry = this.getUploads({\n id: id\n }), parentId = null;\n if (uploadDataEntry) {\n if (uploadDataEntry.parentId !== undefined) {\n parentId = uploadDataEntry.parentId;\n }\n }\n return parentId;\n },\n getResumableFilesData: function() {\n return this._handler.getResumableFilesData();\n },\n getSize: function(id) {\n return this._uploadData.retrieve({\n id: id\n }).size;\n },\n getNetUploads: function() {\n return this._netUploaded;\n },\n getRemainingAllowedItems: function() {\n var allowedItems = this._currentItemLimit;\n if (allowedItems > 0) {\n return allowedItems - this._netUploadedOrQueued;\n }\n return null;\n },\n getUploads: function(optionalFilter) {\n return this._uploadData.retrieve(optionalFilter);\n },\n getUuid: function(id) {\n return this._uploadData.retrieve({\n id: id\n }).uuid;\n },\n log: function(str, level) {\n if (this._options.debug && (!level || level === \"info\")) {\n qq.log(\"[Fine Uploader \" + qq.version + \"] \" + str);\n } else if (level && level !== \"info\") {\n qq.log(\"[Fine Uploader \" + qq.version + \"] \" + str, level);\n }\n },\n pauseUpload: function(id) {\n var uploadData = this._uploadData.retrieve({\n id: id\n });\n if (!qq.supportedFeatures.pause || !this._options.chunking.enabled) {\n return false;\n }\n if (qq.indexOf([ qq.status.UPLOADING, qq.status.UPLOAD_RETRYING ], uploadData.status) >= 0) {\n if (this._handler.pause(id)) {\n this._uploadData.setStatus(id, qq.status.PAUSED);\n return true;\n } else {\n this.log(qq.format(\"Unable to pause file ID {} ({}).\", id, this.getName(id)), \"error\");\n }\n } else {\n this.log(qq.format(\"Ignoring pause for file ID {} ({}). Not in progress.\", id, this.getName(id)), \"error\");\n }\n return false;\n },\n removeFileRef: function(id) {\n this._handler.expunge(id);\n },\n reset: function() {\n this.log(\"Resetting uploader...\");\n this._handler.reset();\n this._storedIds = [];\n this._autoRetries = [];\n this._retryTimeouts = [];\n this._preventRetries = [];\n this._thumbnailUrls = [];\n qq.each(this._buttons, function(idx, button) {\n button.reset();\n });\n this._paramsStore.reset();\n this._endpointStore.reset();\n this._netUploadedOrQueued = 0;\n this._netUploaded = 0;\n this._uploadData.reset();\n this._buttonIdsForFileIds = [];\n this._pasteHandler && this._pasteHandler.reset();\n this._options.session.refreshOnReset && this._refreshSessionData();\n this._succeededSinceLastAllComplete = [];\n this._failedSinceLastAllComplete = [];\n this._totalProgress && this._totalProgress.reset();\n },\n retry: function(id) {\n return this._manualRetry(id);\n },\n scaleImage: function(id, specs) {\n var self = this;\n return qq.Scaler.prototype.scaleImage(id, specs, {\n log: qq.bind(self.log, self),\n getFile: qq.bind(self.getFile, self),\n uploadData: self._uploadData\n });\n },\n setCustomHeaders: function(headers, id) {\n this._customHeadersStore.set(headers, id);\n },\n setDeleteFileCustomHeaders: function(headers, id) {\n this._deleteFileCustomHeadersStore.set(headers, id);\n },\n setDeleteFileEndpoint: function(endpoint, id) {\n this._deleteFileEndpointStore.set(endpoint, id);\n },\n setDeleteFileParams: function(params, id) {\n this._deleteFileParamsStore.set(params, id);\n },\n setEndpoint: function(endpoint, id) {\n this._endpointStore.set(endpoint, id);\n },\n setForm: function(elementOrId) {\n this._updateFormSupportAndParams(elementOrId);\n },\n setItemLimit: function(newItemLimit) {\n this._currentItemLimit = newItemLimit;\n },\n setName: function(id, newName) {\n this._uploadData.updateName(id, newName);\n },\n setParams: function(params, id) {\n this._paramsStore.set(params, id);\n },\n setUuid: function(id, newUuid) {\n return this._uploadData.uuidChanged(id, newUuid);\n },\n setStatus: function(id, newStatus) {\n var fileRecord = this.getUploads({\n id: id\n });\n if (!fileRecord) {\n throw new qq.Error(id + \" is not a valid file ID.\");\n }\n switch (newStatus) {\n case qq.status.DELETED:\n this._onDeleteComplete(id, null, false);\n break;\n\n case qq.status.DELETE_FAILED:\n this._onDeleteComplete(id, null, true);\n break;\n\n default:\n var errorMessage = \"Method setStatus called on '\" + name + \"' not implemented yet for \" + newStatus;\n this.log(errorMessage);\n throw new qq.Error(errorMessage);\n }\n },\n uploadStoredFiles: function() {\n if (this._storedIds.length === 0) {\n this._itemError(\"noFilesError\");\n } else {\n this._uploadStoredFiles();\n }\n }\n };\n qq.basePrivateApi = {\n _addCannedFile: function(sessionData) {\n var self = this;\n return this._uploadData.addFile({\n uuid: sessionData.uuid,\n name: sessionData.name,\n size: sessionData.size,\n status: qq.status.UPLOAD_SUCCESSFUL,\n onBeforeStatusChange: function(id) {\n sessionData.deleteFileEndpoint && self.setDeleteFileEndpoint(sessionData.deleteFileEndpoint, id);\n sessionData.deleteFileParams && self.setDeleteFileParams(sessionData.deleteFileParams, id);\n if (sessionData.thumbnailUrl) {\n self._thumbnailUrls[id] = sessionData.thumbnailUrl;\n }\n self._netUploaded++;\n self._netUploadedOrQueued++;\n }\n });\n },\n _annotateWithButtonId: function(file, associatedInput) {\n if (qq.isFile(file)) {\n file.qqButtonId = this._getButtonId(associatedInput);\n }\n },\n _batchError: function(message) {\n this._options.callbacks.onError(null, null, message, undefined);\n },\n _createDeleteHandler: function() {\n var self = this;\n return new qq.DeleteFileAjaxRequester({\n method: this._options.deleteFile.method.toUpperCase(),\n maxConnections: this._options.maxConnections,\n uuidParamName: this._options.request.uuidName,\n customHeaders: this._deleteFileCustomHeadersStore,\n paramsStore: this._deleteFileParamsStore,\n endpointStore: this._deleteFileEndpointStore,\n cors: this._options.cors,\n log: qq.bind(self.log, self),\n onDelete: function(id) {\n self._onDelete(id);\n self._options.callbacks.onDelete(id);\n },\n onDeleteComplete: function(id, xhrOrXdr, isError) {\n self._onDeleteComplete(id, xhrOrXdr, isError);\n self._options.callbacks.onDeleteComplete(id, xhrOrXdr, isError);\n }\n });\n },\n _createPasteHandler: function() {\n var self = this;\n return new qq.PasteSupport({\n targetElement: this._options.paste.targetElement,\n callbacks: {\n log: qq.bind(self.log, self),\n pasteReceived: function(blob) {\n self._handleCheckedCallback({\n name: \"onPasteReceived\",\n callback: qq.bind(self._options.callbacks.onPasteReceived, self, blob),\n onSuccess: qq.bind(self._handlePasteSuccess, self, blob),\n identifier: \"pasted image\"\n });\n }\n }\n });\n },\n _createStore: function(initialValue, _readOnlyValues_) {\n var store = {}, catchall = initialValue, perIdReadOnlyValues = {}, readOnlyValues = _readOnlyValues_, copy = function(orig) {\n if (qq.isObject(orig)) {\n return qq.extend({}, orig);\n }\n return orig;\n }, getReadOnlyValues = function() {\n if (qq.isFunction(readOnlyValues)) {\n return readOnlyValues();\n }\n return readOnlyValues;\n }, includeReadOnlyValues = function(id, existing) {\n if (readOnlyValues && qq.isObject(existing)) {\n qq.extend(existing, getReadOnlyValues());\n }\n if (perIdReadOnlyValues[id]) {\n qq.extend(existing, perIdReadOnlyValues[id]);\n }\n };\n return {\n set: function(val, id) {\n if (id == null) {\n store = {};\n catchall = copy(val);\n } else {\n store[id] = copy(val);\n }\n },\n get: function(id) {\n var values;\n if (id != null && store[id]) {\n values = store[id];\n } else {\n values = copy(catchall);\n }\n includeReadOnlyValues(id, values);\n return copy(values);\n },\n addReadOnly: function(id, values) {\n if (qq.isObject(store)) {\n if (id === null) {\n if (qq.isFunction(values)) {\n readOnlyValues = values;\n } else {\n readOnlyValues = readOnlyValues || {};\n qq.extend(readOnlyValues, values);\n }\n } else {\n perIdReadOnlyValues[id] = perIdReadOnlyValues[id] || {};\n qq.extend(perIdReadOnlyValues[id], values);\n }\n }\n },\n remove: function(fileId) {\n return delete store[fileId];\n },\n reset: function() {\n store = {};\n perIdReadOnlyValues = {};\n catchall = initialValue;\n }\n };\n },\n _createUploadDataTracker: function() {\n var self = this;\n return new qq.UploadData({\n getName: function(id) {\n return self.getName(id);\n },\n getUuid: function(id) {\n return self.getUuid(id);\n },\n getSize: function(id) {\n return self.getSize(id);\n },\n onStatusChange: function(id, oldStatus, newStatus) {\n self._onUploadStatusChange(id, oldStatus, newStatus);\n self._options.callbacks.onStatusChange(id, oldStatus, newStatus);\n self._maybeAllComplete(id, newStatus);\n if (self._totalProgress) {\n setTimeout(function() {\n self._totalProgress.onStatusChange(id, oldStatus, newStatus);\n }, 0);\n }\n }\n });\n },\n _createUploadButton: function(spec) {\n var self = this, acceptFiles = spec.accept || this._options.validation.acceptFiles, allowedExtensions = spec.allowedExtensions || this._options.validation.allowedExtensions, button;\n function allowMultiple() {\n if (qq.supportedFeatures.ajaxUploading) {\n if (self._options.workarounds.iosEmptyVideos && qq.ios() && !qq.ios6() && self._isAllowedExtension(allowedExtensions, \".mov\")) {\n return false;\n }\n if (spec.multiple === undefined) {\n return self._options.multiple;\n }\n return spec.multiple;\n }\n return false;\n }\n button = new qq.UploadButton({\n acceptFiles: acceptFiles,\n element: spec.element,\n focusClass: this._options.classes.buttonFocus,\n folders: spec.folders,\n hoverClass: this._options.classes.buttonHover,\n ios8BrowserCrashWorkaround: this._options.workarounds.ios8BrowserCrash,\n multiple: allowMultiple(),\n name: this._options.request.inputName,\n onChange: function(input) {\n self._onInputChange(input);\n },\n title: spec.title == null ? this._options.text.fileInputTitle : spec.title\n });\n this._disposeSupport.addDisposer(function() {\n button.dispose();\n });\n self._buttons.push(button);\n return button;\n },\n _createUploadHandler: function(additionalOptions, namespace) {\n var self = this, lastOnProgress = {}, options = {\n debug: this._options.debug,\n maxConnections: this._options.maxConnections,\n cors: this._options.cors,\n paramsStore: this._paramsStore,\n endpointStore: this._endpointStore,\n chunking: this._options.chunking,\n resume: this._options.resume,\n blobs: this._options.blobs,\n log: qq.bind(self.log, self),\n preventRetryParam: this._options.retry.preventRetryResponseProperty,\n onProgress: function(id, name, loaded, total) {\n if (loaded < 0 || total < 0) {\n return;\n }\n if (lastOnProgress[id]) {\n if (lastOnProgress[id].loaded !== loaded || lastOnProgress[id].total !== total) {\n self._onProgress(id, name, loaded, total);\n self._options.callbacks.onProgress(id, name, loaded, total);\n }\n } else {\n self._onProgress(id, name, loaded, total);\n self._options.callbacks.onProgress(id, name, loaded, total);\n }\n lastOnProgress[id] = {\n loaded: loaded,\n total: total\n };\n },\n onComplete: function(id, name, result, xhr) {\n delete lastOnProgress[id];\n var status = self.getUploads({\n id: id\n }).status, retVal;\n if (status === qq.status.UPLOAD_SUCCESSFUL || status === qq.status.UPLOAD_FAILED) {\n return;\n }\n retVal = self._onComplete(id, name, result, xhr);\n if (retVal instanceof qq.Promise) {\n retVal.done(function() {\n self._options.callbacks.onComplete(id, name, result, xhr);\n });\n } else {\n self._options.callbacks.onComplete(id, name, result, xhr);\n }\n },\n onCancel: function(id, name, cancelFinalizationEffort) {\n var promise = new qq.Promise();\n self._handleCheckedCallback({\n name: \"onCancel\",\n callback: qq.bind(self._options.callbacks.onCancel, self, id, name),\n onFailure: promise.failure,\n onSuccess: function() {\n cancelFinalizationEffort.then(function() {\n self._onCancel(id, name);\n });\n promise.success();\n },\n identifier: id\n });\n return promise;\n },\n onUploadPrep: qq.bind(this._onUploadPrep, this),\n onUpload: function(id, name) {\n self._onUpload(id, name);\n self._options.callbacks.onUpload(id, name);\n },\n onUploadChunk: function(id, name, chunkData) {\n self._onUploadChunk(id, chunkData);\n self._options.callbacks.onUploadChunk(id, name, chunkData);\n },\n onUploadChunkSuccess: function(id, chunkData, result, xhr) {\n self._options.callbacks.onUploadChunkSuccess.apply(self, arguments);\n },\n onResume: function(id, name, chunkData) {\n return self._options.callbacks.onResume(id, name, chunkData);\n },\n onAutoRetry: function(id, name, responseJSON, xhr) {\n return self._onAutoRetry.apply(self, arguments);\n },\n onUuidChanged: function(id, newUuid) {\n self.log(\"Server requested UUID change from '\" + self.getUuid(id) + \"' to '\" + newUuid + \"'\");\n self.setUuid(id, newUuid);\n },\n getName: qq.bind(self.getName, self),\n getUuid: qq.bind(self.getUuid, self),\n getSize: qq.bind(self.getSize, self),\n setSize: qq.bind(self._setSize, self),\n getDataByUuid: function(uuid) {\n return self.getUploads({\n uuid: uuid\n });\n },\n isQueued: function(id) {\n var status = self.getUploads({\n id: id\n }).status;\n return status === qq.status.QUEUED || status === qq.status.SUBMITTED || status === qq.status.UPLOAD_RETRYING || status === qq.status.PAUSED;\n },\n getIdsInProxyGroup: self._uploadData.getIdsInProxyGroup,\n getIdsInBatch: self._uploadData.getIdsInBatch\n };\n qq.each(this._options.request, function(prop, val) {\n options[prop] = val;\n });\n options.customHeaders = this._customHeadersStore;\n if (additionalOptions) {\n qq.each(additionalOptions, function(key, val) {\n options[key] = val;\n });\n }\n return new qq.UploadHandlerController(options, namespace);\n },\n _fileOrBlobRejected: function(id) {\n this._netUploadedOrQueued--;\n this._uploadData.setStatus(id, qq.status.REJECTED);\n },\n _formatSize: function(bytes) {\n if (bytes === 0) {\n return bytes + this._options.text.sizeSymbols[0];\n }\n var i = -1;\n do {\n bytes = bytes / 1e3;\n i++;\n } while (bytes > 999);\n return Math.max(bytes, .1).toFixed(1) + this._options.text.sizeSymbols[i];\n },\n _generateExtraButtonSpecs: function() {\n var self = this;\n this._extraButtonSpecs = {};\n qq.each(this._options.extraButtons, function(idx, extraButtonOptionEntry) {\n var multiple = extraButtonOptionEntry.multiple, validation = qq.extend({}, self._options.validation, true), extraButtonSpec = qq.extend({}, extraButtonOptionEntry);\n if (multiple === undefined) {\n multiple = self._options.multiple;\n }\n if (extraButtonSpec.validation) {\n qq.extend(validation, extraButtonOptionEntry.validation, true);\n }\n qq.extend(extraButtonSpec, {\n multiple: multiple,\n validation: validation\n }, true);\n self._initExtraButton(extraButtonSpec);\n });\n },\n _getButton: function(buttonId) {\n var extraButtonsSpec = this._extraButtonSpecs[buttonId];\n if (extraButtonsSpec) {\n return extraButtonsSpec.element;\n } else if (buttonId === this._defaultButtonId) {\n return this._options.button;\n }\n },\n _getButtonId: function(buttonOrFileInputOrFile) {\n var inputs, fileInput, fileBlobOrInput = buttonOrFileInputOrFile;\n if (fileBlobOrInput instanceof qq.BlobProxy) {\n fileBlobOrInput = fileBlobOrInput.referenceBlob;\n }\n if (fileBlobOrInput && !qq.isBlob(fileBlobOrInput)) {\n if (qq.isFile(fileBlobOrInput)) {\n return fileBlobOrInput.qqButtonId;\n } else if (fileBlobOrInput.tagName.toLowerCase() === \"input\" && fileBlobOrInput.type.toLowerCase() === \"file\") {\n return fileBlobOrInput.getAttribute(qq.UploadButton.BUTTON_ID_ATTR_NAME);\n }\n inputs = fileBlobOrInput.getElementsByTagName(\"input\");\n qq.each(inputs, function(idx, input) {\n if (input.getAttribute(\"type\") === \"file\") {\n fileInput = input;\n return false;\n }\n });\n if (fileInput) {\n return fileInput.getAttribute(qq.UploadButton.BUTTON_ID_ATTR_NAME);\n }\n }\n },\n _getNotFinished: function() {\n return this._uploadData.retrieve({\n status: [ qq.status.UPLOADING, qq.status.UPLOAD_RETRYING, qq.status.QUEUED, qq.status.SUBMITTING, qq.status.SUBMITTED, qq.status.PAUSED ]\n }).length;\n },\n _getValidationBase: function(buttonId) {\n var extraButtonSpec = this._extraButtonSpecs[buttonId];\n return extraButtonSpec ? extraButtonSpec.validation : this._options.validation;\n },\n _getValidationDescriptor: function(fileWrapper) {\n if (fileWrapper.file instanceof qq.BlobProxy) {\n return {\n name: qq.getFilename(fileWrapper.file.referenceBlob),\n size: fileWrapper.file.referenceBlob.size\n };\n }\n return {\n name: this.getUploads({\n id: fileWrapper.id\n }).name,\n size: this.getUploads({\n id: fileWrapper.id\n }).size\n };\n },\n _getValidationDescriptors: function(fileWrappers) {\n var self = this, fileDescriptors = [];\n qq.each(fileWrappers, function(idx, fileWrapper) {\n fileDescriptors.push(self._getValidationDescriptor(fileWrapper));\n });\n return fileDescriptors;\n },\n _handleCameraAccess: function() {\n if (this._options.camera.ios && qq.ios()) {\n var acceptIosCamera = \"image/*;capture=camera\", button = this._options.camera.button, buttonId = button ? this._getButtonId(button) : this._defaultButtonId, optionRoot = this._options;\n if (buttonId && buttonId !== this._defaultButtonId) {\n optionRoot = this._extraButtonSpecs[buttonId];\n }\n optionRoot.multiple = false;\n if (optionRoot.validation.acceptFiles === null) {\n optionRoot.validation.acceptFiles = acceptIosCamera;\n } else {\n optionRoot.validation.acceptFiles += \",\" + acceptIosCamera;\n }\n qq.each(this._buttons, function(idx, button) {\n if (button.getButtonId() === buttonId) {\n button.setMultiple(optionRoot.multiple);\n button.setAcceptFiles(optionRoot.acceptFiles);\n return false;\n }\n });\n }\n },\n _handleCheckedCallback: function(details) {\n var self = this, callbackRetVal = details.callback();\n if (qq.isGenericPromise(callbackRetVal)) {\n this.log(details.name + \" - waiting for \" + details.name + \" promise to be fulfilled for \" + details.identifier);\n return callbackRetVal.then(function(successParam) {\n self.log(details.name + \" promise success for \" + details.identifier);\n details.onSuccess(successParam);\n }, function() {\n if (details.onFailure) {\n self.log(details.name + \" promise failure for \" + details.identifier);\n details.onFailure();\n } else {\n self.log(details.name + \" promise failure for \" + details.identifier);\n }\n });\n }\n if (callbackRetVal !== false) {\n details.onSuccess(callbackRetVal);\n } else {\n if (details.onFailure) {\n this.log(details.name + \" - return value was 'false' for \" + details.identifier + \". Invoking failure callback.\");\n details.onFailure();\n } else {\n this.log(details.name + \" - return value was 'false' for \" + details.identifier + \". Will not proceed.\");\n }\n }\n return callbackRetVal;\n },\n _handleNewFile: function(file, batchId, newFileWrapperList) {\n var self = this, uuid = qq.getUniqueId(), size = -1, name = qq.getFilename(file), actualFile = file.blob || file, handler = this._customNewFileHandler ? this._customNewFileHandler : qq.bind(self._handleNewFileGeneric, self);\n if (!qq.isInput(actualFile) && actualFile.size >= 0) {\n size = actualFile.size;\n }\n handler(actualFile, name, uuid, size, newFileWrapperList, batchId, this._options.request.uuidName, {\n uploadData: self._uploadData,\n paramsStore: self._paramsStore,\n addFileToHandler: function(id, file) {\n self._handler.add(id, file);\n self._netUploadedOrQueued++;\n self._trackButton(id);\n }\n });\n },\n _handleNewFileGeneric: function(file, name, uuid, size, fileList, batchId) {\n var id = this._uploadData.addFile({\n uuid: uuid,\n name: name,\n size: size,\n batchId: batchId\n });\n this._handler.add(id, file);\n this._trackButton(id);\n this._netUploadedOrQueued++;\n fileList.push({\n id: id,\n file: file\n });\n },\n _handlePasteSuccess: function(blob, extSuppliedName) {\n var extension = blob.type.split(\"/\")[1], name = extSuppliedName;\n if (name == null) {\n name = this._options.paste.defaultName;\n }\n name += \".\" + extension;\n this.addFiles({\n name: name,\n blob: blob\n });\n },\n _handleDeleteSuccess: function(id) {\n if (this.getUploads({\n id: id\n }).status !== qq.status.DELETED) {\n var name = this.getName(id);\n this._netUploadedOrQueued--;\n this._netUploaded--;\n this._handler.expunge(id);\n this._uploadData.setStatus(id, qq.status.DELETED);\n this.log(\"Delete request for '\" + name + \"' has succeeded.\");\n }\n },\n _handleDeleteFailed: function(id, xhrOrXdr) {\n var name = this.getName(id);\n this._uploadData.setStatus(id, qq.status.DELETE_FAILED);\n this.log(\"Delete request for '\" + name + \"' has failed.\", \"error\");\n if (!xhrOrXdr || xhrOrXdr.withCredentials === undefined) {\n this._options.callbacks.onError(id, name, \"Delete request failed\", xhrOrXdr);\n } else {\n this._options.callbacks.onError(id, name, \"Delete request failed with response code \" + xhrOrXdr.status, xhrOrXdr);\n }\n },\n _initExtraButton: function(spec) {\n var button = this._createUploadButton({\n accept: spec.validation.acceptFiles,\n allowedExtensions: spec.validation.allowedExtensions,\n element: spec.element,\n folders: spec.folders,\n multiple: spec.multiple,\n title: spec.fileInputTitle\n });\n this._extraButtonSpecs[button.getButtonId()] = spec;\n },\n _initFormSupportAndParams: function() {\n this._formSupport = qq.FormSupport && new qq.FormSupport(this._options.form, qq.bind(this.uploadStoredFiles, this), qq.bind(this.log, this));\n if (this._formSupport && this._formSupport.attachedToForm) {\n this._paramsStore = this._createStore(this._options.request.params, this._formSupport.getFormInputsAsObject);\n this._options.autoUpload = this._formSupport.newAutoUpload;\n if (this._formSupport.newEndpoint) {\n this._options.request.endpoint = this._formSupport.newEndpoint;\n }\n } else {\n this._paramsStore = this._createStore(this._options.request.params);\n }\n },\n _isDeletePossible: function() {\n if (!qq.DeleteFileAjaxRequester || !this._options.deleteFile.enabled) {\n return false;\n }\n if (this._options.cors.expected) {\n if (qq.supportedFeatures.deleteFileCorsXhr) {\n return true;\n }\n if (qq.supportedFeatures.deleteFileCorsXdr && this._options.cors.allowXdr) {\n return true;\n }\n return false;\n }\n return true;\n },\n _isAllowedExtension: function(allowed, fileName) {\n var valid = false;\n if (!allowed.length) {\n return true;\n }\n qq.each(allowed, function(idx, allowedExt) {\n if (qq.isString(allowedExt)) {\n var extRegex = new RegExp(\"\\\\.\" + allowedExt + \"$\", \"i\");\n if (fileName.match(extRegex) != null) {\n valid = true;\n return false;\n }\n }\n });\n return valid;\n },\n _itemError: function(code, maybeNameOrNames, item) {\n var message = this._options.messages[code], allowedExtensions = [], names = [].concat(maybeNameOrNames), name = names[0], buttonId = this._getButtonId(item), validationBase = this._getValidationBase(buttonId), extensionsForMessage, placeholderMatch;\n function r(name, replacement) {\n message = message.replace(name, replacement);\n }\n qq.each(validationBase.allowedExtensions, function(idx, allowedExtension) {\n if (qq.isString(allowedExtension)) {\n allowedExtensions.push(allowedExtension);\n }\n });\n extensionsForMessage = allowedExtensions.join(\", \").toLowerCase();\n r(\"{file}\", this._options.formatFileName(name));\n r(\"{extensions}\", extensionsForMessage);\n r(\"{sizeLimit}\", this._formatSize(validationBase.sizeLimit));\n r(\"{minSizeLimit}\", this._formatSize(validationBase.minSizeLimit));\n placeholderMatch = message.match(/(\\{\\w+\\})/g);\n if (placeholderMatch !== null) {\n qq.each(placeholderMatch, function(idx, placeholder) {\n r(placeholder, names[idx]);\n });\n }\n this._options.callbacks.onError(null, name, message, undefined);\n return message;\n },\n _manualRetry: function(id, callback) {\n if (this._onBeforeManualRetry(id)) {\n this._netUploadedOrQueued++;\n this._uploadData.setStatus(id, qq.status.UPLOAD_RETRYING);\n if (callback) {\n callback(id);\n } else {\n this._handler.retry(id);\n }\n return true;\n }\n },\n _maybeAllComplete: function(id, status) {\n var self = this, notFinished = this._getNotFinished();\n if (status === qq.status.UPLOAD_SUCCESSFUL) {\n this._succeededSinceLastAllComplete.push(id);\n } else if (status === qq.status.UPLOAD_FAILED) {\n this._failedSinceLastAllComplete.push(id);\n }\n if (notFinished === 0 && (this._succeededSinceLastAllComplete.length || this._failedSinceLastAllComplete.length)) {\n setTimeout(function() {\n self._onAllComplete(self._succeededSinceLastAllComplete, self._failedSinceLastAllComplete);\n }, 0);\n }\n },\n _maybeHandleIos8SafariWorkaround: function() {\n var self = this;\n if (this._options.workarounds.ios8SafariUploads && qq.ios800() && qq.iosSafari()) {\n setTimeout(function() {\n window.alert(self._options.messages.unsupportedBrowserIos8Safari);\n }, 0);\n throw new qq.Error(this._options.messages.unsupportedBrowserIos8Safari);\n }\n },\n _maybeParseAndSendUploadError: function(id, name, response, xhr) {\n if (!response.success) {\n if (xhr && xhr.status !== 200 && !response.error) {\n this._options.callbacks.onError(id, name, \"XHR returned response code \" + xhr.status, xhr);\n } else {\n var errorReason = response.error ? response.error : this._options.text.defaultResponseError;\n this._options.callbacks.onError(id, name, errorReason, xhr);\n }\n }\n },\n _maybeProcessNextItemAfterOnValidateCallback: function(validItem, items, index, params, endpoint) {\n var self = this;\n if (items.length > index) {\n if (validItem || !this._options.validation.stopOnFirstInvalidFile) {\n setTimeout(function() {\n var validationDescriptor = self._getValidationDescriptor(items[index]), buttonId = self._getButtonId(items[index].file), button = self._getButton(buttonId);\n self._handleCheckedCallback({\n name: \"onValidate\",\n callback: qq.bind(self._options.callbacks.onValidate, self, validationDescriptor, button),\n onSuccess: qq.bind(self._onValidateCallbackSuccess, self, items, index, params, endpoint),\n onFailure: qq.bind(self._onValidateCallbackFailure, self, items, index, params, endpoint),\n identifier: \"Item '\" + validationDescriptor.name + \"', size: \" + validationDescriptor.size\n });\n }, 0);\n } else if (!validItem) {\n for (;index < items.length; index++) {\n self._fileOrBlobRejected(items[index].id);\n }\n }\n }\n },\n _onAllComplete: function(successful, failed) {\n this._totalProgress && this._totalProgress.onAllComplete(successful, failed, this._preventRetries);\n this._options.callbacks.onAllComplete(qq.extend([], successful), qq.extend([], failed));\n this._succeededSinceLastAllComplete = [];\n this._failedSinceLastAllComplete = [];\n },\n _onAutoRetry: function(id, name, responseJSON, xhr, callback) {\n var self = this;\n self._preventRetries[id] = responseJSON[self._options.retry.preventRetryResponseProperty];\n if (self._shouldAutoRetry(id, name, responseJSON)) {\n var retryWaitPeriod = self._options.retry.autoAttemptDelay * 1e3;\n self._maybeParseAndSendUploadError.apply(self, arguments);\n self._options.callbacks.onAutoRetry(id, name, self._autoRetries[id]);\n self._onBeforeAutoRetry(id, name);\n self._uploadData.setStatus(id, qq.status.UPLOAD_RETRYING);\n self._retryTimeouts[id] = setTimeout(function() {\n self.log(\"Starting retry for \" + name + \"...\");\n if (callback) {\n callback(id);\n } else {\n self._handler.retry(id);\n }\n }, retryWaitPeriod);\n return true;\n }\n },\n _onBeforeAutoRetry: function(id, name) {\n this.log(\"Waiting \" + this._options.retry.autoAttemptDelay + \" seconds before retrying \" + name + \"...\");\n },\n _onBeforeManualRetry: function(id) {\n var itemLimit = this._currentItemLimit, fileName;\n if (this._preventRetries[id]) {\n this.log(\"Retries are forbidden for id \" + id, \"warn\");\n return false;\n } else if (this._handler.isValid(id)) {\n fileName = this.getName(id);\n if (this._options.callbacks.onManualRetry(id, fileName) === false) {\n return false;\n }\n if (itemLimit > 0 && this._netUploadedOrQueued + 1 > itemLimit) {\n this._itemError(\"retryFailTooManyItems\");\n return false;\n }\n this.log(\"Retrying upload for '\" + fileName + \"' (id: \" + id + \")...\");\n return true;\n } else {\n this.log(\"'\" + id + \"' is not a valid file ID\", \"error\");\n return false;\n }\n },\n _onCancel: function(id, name) {\n this._netUploadedOrQueued--;\n clearTimeout(this._retryTimeouts[id]);\n var storedItemIndex = qq.indexOf(this._storedIds, id);\n if (!this._options.autoUpload && storedItemIndex >= 0) {\n this._storedIds.splice(storedItemIndex, 1);\n }\n this._uploadData.setStatus(id, qq.status.CANCELED);\n },\n _onComplete: function(id, name, result, xhr) {\n if (!result.success) {\n this._netUploadedOrQueued--;\n this._uploadData.setStatus(id, qq.status.UPLOAD_FAILED);\n if (result[this._options.retry.preventRetryResponseProperty] === true) {\n this._preventRetries[id] = true;\n }\n } else {\n if (result.thumbnailUrl) {\n this._thumbnailUrls[id] = result.thumbnailUrl;\n }\n this._netUploaded++;\n this._uploadData.setStatus(id, qq.status.UPLOAD_SUCCESSFUL);\n }\n this._maybeParseAndSendUploadError(id, name, result, xhr);\n return result.success ? true : false;\n },\n _onDelete: function(id) {\n this._uploadData.setStatus(id, qq.status.DELETING);\n },\n _onDeleteComplete: function(id, xhrOrXdr, isError) {\n var name = this.getName(id);\n if (isError) {\n this._handleDeleteFailed(id, xhrOrXdr);\n } else {\n this._handleDeleteSuccess(id);\n }\n },\n _onInputChange: function(input) {\n var fileIndex;\n if (qq.supportedFeatures.ajaxUploading) {\n for (fileIndex = 0; fileIndex < input.files.length; fileIndex++) {\n this._annotateWithButtonId(input.files[fileIndex], input);\n }\n this.addFiles(input.files);\n } else if (input.value.length > 0) {\n this.addFiles(input);\n }\n qq.each(this._buttons, function(idx, button) {\n button.reset();\n });\n },\n _onProgress: function(id, name, loaded, total) {\n this._totalProgress && this._totalProgress.onIndividualProgress(id, loaded, total);\n },\n _onSubmit: function(id, name) {},\n _onSubmitCallbackSuccess: function(id, name) {\n this._onSubmit.apply(this, arguments);\n this._uploadData.setStatus(id, qq.status.SUBMITTED);\n this._onSubmitted.apply(this, arguments);\n if (this._options.autoUpload) {\n this._options.callbacks.onSubmitted.apply(this, arguments);\n this._uploadFile(id);\n } else {\n this._storeForLater(id);\n this._options.callbacks.onSubmitted.apply(this, arguments);\n }\n },\n _onSubmitDelete: function(id, onSuccessCallback, additionalMandatedParams) {\n var uuid = this.getUuid(id), adjustedOnSuccessCallback;\n if (onSuccessCallback) {\n adjustedOnSuccessCallback = qq.bind(onSuccessCallback, this, id, uuid, additionalMandatedParams);\n }\n if (this._isDeletePossible()) {\n this._handleCheckedCallback({\n name: \"onSubmitDelete\",\n callback: qq.bind(this._options.callbacks.onSubmitDelete, this, id),\n onSuccess: adjustedOnSuccessCallback || qq.bind(this._deleteHandler.sendDelete, this, id, uuid, additionalMandatedParams),\n identifier: id\n });\n return true;\n } else {\n this.log(\"Delete request ignored for ID \" + id + \", delete feature is disabled or request not possible \" + \"due to CORS on a user agent that does not support pre-flighting.\", \"warn\");\n return false;\n }\n },\n _onSubmitted: function(id) {},\n _onTotalProgress: function(loaded, total) {\n this._options.callbacks.onTotalProgress(loaded, total);\n },\n _onUploadPrep: function(id) {},\n _onUpload: function(id, name) {\n this._uploadData.setStatus(id, qq.status.UPLOADING);\n },\n _onUploadChunk: function(id, chunkData) {},\n _onUploadStatusChange: function(id, oldStatus, newStatus) {\n if (newStatus === qq.status.PAUSED) {\n clearTimeout(this._retryTimeouts[id]);\n }\n },\n _onValidateBatchCallbackFailure: function(fileWrappers) {\n var self = this;\n qq.each(fileWrappers, function(idx, fileWrapper) {\n self._fileOrBlobRejected(fileWrapper.id);\n });\n },\n _onValidateBatchCallbackSuccess: function(validationDescriptors, items, params, endpoint, button) {\n var errorMessage, itemLimit = this._currentItemLimit, proposedNetFilesUploadedOrQueued = this._netUploadedOrQueued;\n if (itemLimit === 0 || proposedNetFilesUploadedOrQueued <= itemLimit) {\n if (items.length > 0) {\n this._handleCheckedCallback({\n name: \"onValidate\",\n callback: qq.bind(this._options.callbacks.onValidate, this, validationDescriptors[0], button),\n onSuccess: qq.bind(this._onValidateCallbackSuccess, this, items, 0, params, endpoint),\n onFailure: qq.bind(this._onValidateCallbackFailure, this, items, 0, params, endpoint),\n identifier: \"Item '\" + items[0].file.name + \"', size: \" + items[0].file.size\n });\n } else {\n this._itemError(\"noFilesError\");\n }\n } else {\n this._onValidateBatchCallbackFailure(items);\n errorMessage = this._options.messages.tooManyItemsError.replace(/\\{netItems\\}/g, proposedNetFilesUploadedOrQueued).replace(/\\{itemLimit\\}/g, itemLimit);\n this._batchError(errorMessage);\n }\n },\n _onValidateCallbackFailure: function(items, index, params, endpoint) {\n var nextIndex = index + 1;\n this._fileOrBlobRejected(items[index].id, items[index].file.name);\n this._maybeProcessNextItemAfterOnValidateCallback(false, items, nextIndex, params, endpoint);\n },\n _onValidateCallbackSuccess: function(items, index, params, endpoint) {\n var self = this, nextIndex = index + 1, validationDescriptor = this._getValidationDescriptor(items[index]);\n this._validateFileOrBlobData(items[index], validationDescriptor).then(function() {\n self._upload(items[index].id, params, endpoint);\n self._maybeProcessNextItemAfterOnValidateCallback(true, items, nextIndex, params, endpoint);\n }, function() {\n self._maybeProcessNextItemAfterOnValidateCallback(false, items, nextIndex, params, endpoint);\n });\n },\n _prepareItemsForUpload: function(items, params, endpoint) {\n if (items.length === 0) {\n this._itemError(\"noFilesError\");\n return;\n }\n var validationDescriptors = this._getValidationDescriptors(items), buttonId = this._getButtonId(items[0].file), button = this._getButton(buttonId);\n this._handleCheckedCallback({\n name: \"onValidateBatch\",\n callback: qq.bind(this._options.callbacks.onValidateBatch, this, validationDescriptors, button),\n onSuccess: qq.bind(this._onValidateBatchCallbackSuccess, this, validationDescriptors, items, params, endpoint, button),\n onFailure: qq.bind(this._onValidateBatchCallbackFailure, this, items),\n identifier: \"batch validation\"\n });\n },\n _preventLeaveInProgress: function() {\n var self = this;\n this._disposeSupport.attach(window, \"beforeunload\", function(e) {\n if (self.getInProgress()) {\n e = e || window.event;\n e.returnValue = self._options.messages.onLeave;\n return self._options.messages.onLeave;\n }\n });\n },\n _refreshSessionData: function() {\n var self = this, options = this._options.session;\n if (qq.Session && this._options.session.endpoint != null) {\n if (!this._session) {\n qq.extend(options, {\n cors: this._options.cors\n });\n options.log = qq.bind(this.log, this);\n options.addFileRecord = qq.bind(this._addCannedFile, this);\n this._session = new qq.Session(options);\n }\n setTimeout(function() {\n self._session.refresh().then(function(response, xhrOrXdr) {\n self._sessionRequestComplete();\n self._options.callbacks.onSessionRequestComplete(response, true, xhrOrXdr);\n }, function(response, xhrOrXdr) {\n self._options.callbacks.onSessionRequestComplete(response, false, xhrOrXdr);\n });\n }, 0);\n }\n },\n _sessionRequestComplete: function() {},\n _setSize: function(id, newSize) {\n this._uploadData.updateSize(id, newSize);\n this._totalProgress && this._totalProgress.onNewSize(id);\n },\n _shouldAutoRetry: function(id, name, responseJSON) {\n var uploadData = this._uploadData.retrieve({\n id: id\n });\n if (!this._preventRetries[id] && this._options.retry.enableAuto && uploadData.status !== qq.status.PAUSED) {\n if (this._autoRetries[id] === undefined) {\n this._autoRetries[id] = 0;\n }\n if (this._autoRetries[id] < this._options.retry.maxAutoAttempts) {\n this._autoRetries[id] += 1;\n return true;\n }\n }\n return false;\n },\n _storeForLater: function(id) {\n this._storedIds.push(id);\n },\n _trackButton: function(id) {\n var buttonId;\n if (qq.supportedFeatures.ajaxUploading) {\n buttonId = this._handler.getFile(id).qqButtonId;\n } else {\n buttonId = this._getButtonId(this._handler.getInput(id));\n }\n if (buttonId) {\n this._buttonIdsForFileIds[id] = buttonId;\n }\n },\n _updateFormSupportAndParams: function(formElementOrId) {\n this._options.form.element = formElementOrId;\n this._formSupport = qq.FormSupport && new qq.FormSupport(this._options.form, qq.bind(this.uploadStoredFiles, this), qq.bind(this.log, this));\n if (this._formSupport && this._formSupport.attachedToForm) {\n this._paramsStore.addReadOnly(null, this._formSupport.getFormInputsAsObject);\n this._options.autoUpload = this._formSupport.newAutoUpload;\n if (this._formSupport.newEndpoint) {\n this.setEndpoint(this._formSupport.newEndpoint);\n }\n }\n },\n _upload: function(id, params, endpoint) {\n var name = this.getName(id);\n if (params) {\n this.setParams(params, id);\n }\n if (endpoint) {\n this.setEndpoint(endpoint, id);\n }\n this._handleCheckedCallback({\n name: \"onSubmit\",\n callback: qq.bind(this._options.callbacks.onSubmit, this, id, name),\n onSuccess: qq.bind(this._onSubmitCallbackSuccess, this, id, name),\n onFailure: qq.bind(this._fileOrBlobRejected, this, id, name),\n identifier: id\n });\n },\n _uploadFile: function(id) {\n if (!this._handler.upload(id)) {\n this._uploadData.setStatus(id, qq.status.QUEUED);\n }\n },\n _uploadStoredFiles: function() {\n var idToUpload, stillSubmitting, self = this;\n while (this._storedIds.length) {\n idToUpload = this._storedIds.shift();\n this._uploadFile(idToUpload);\n }\n stillSubmitting = this.getUploads({\n status: qq.status.SUBMITTING\n }).length;\n if (stillSubmitting) {\n qq.log(\"Still waiting for \" + stillSubmitting + \" files to clear submit queue. Will re-parse stored IDs array shortly.\");\n setTimeout(function() {\n self._uploadStoredFiles();\n }, 1e3);\n }\n },\n _validateFileOrBlobData: function(fileWrapper, validationDescriptor) {\n var self = this, file = function() {\n if (fileWrapper.file instanceof qq.BlobProxy) {\n return fileWrapper.file.referenceBlob;\n }\n return fileWrapper.file;\n }(), name = validationDescriptor.name, size = validationDescriptor.size, buttonId = this._getButtonId(fileWrapper.file), validationBase = this._getValidationBase(buttonId), validityChecker = new qq.Promise();\n validityChecker.then(function() {}, function() {\n self._fileOrBlobRejected(fileWrapper.id, name);\n });\n if (qq.isFileOrInput(file) && !this._isAllowedExtension(validationBase.allowedExtensions, name)) {\n this._itemError(\"typeError\", name, file);\n return validityChecker.failure();\n }\n if (!this._options.validation.allowEmpty && size === 0) {\n this._itemError(\"emptyError\", name, file);\n return validityChecker.failure();\n }\n if (size > 0 && validationBase.sizeLimit && size > validationBase.sizeLimit) {\n this._itemError(\"sizeError\", name, file);\n return validityChecker.failure();\n }\n if (size > 0 && size < validationBase.minSizeLimit) {\n this._itemError(\"minSizeError\", name, file);\n return validityChecker.failure();\n }\n if (qq.ImageValidation && qq.supportedFeatures.imagePreviews && qq.isFile(file)) {\n new qq.ImageValidation(file, qq.bind(self.log, self)).validate(validationBase.image).then(validityChecker.success, function(errorCode) {\n self._itemError(errorCode + \"ImageError\", name, file);\n validityChecker.failure();\n });\n } else {\n validityChecker.success();\n }\n return validityChecker;\n },\n _wrapCallbacks: function() {\n var self, safeCallback, prop;\n self = this;\n safeCallback = function(name, callback, args) {\n var errorMsg;\n try {\n return callback.apply(self, args);\n } catch (exception) {\n errorMsg = exception.message || exception.toString();\n self.log(\"Caught exception in '\" + name + \"' callback - \" + errorMsg, \"error\");\n }\n };\n for (prop in this._options.callbacks) {\n (function() {\n var callbackName, callbackFunc;\n callbackName = prop;\n callbackFunc = self._options.callbacks[callbackName];\n self._options.callbacks[callbackName] = function() {\n return safeCallback(callbackName, callbackFunc, arguments);\n };\n })();\n }\n }\n };\n })();\n (function() {\n \"use strict\";\n qq.FineUploaderBasic = function(o) {\n var self = this;\n this._options = {\n debug: false,\n button: null,\n multiple: true,\n maxConnections: 3,\n disableCancelForFormUploads: false,\n autoUpload: true,\n request: {\n customHeaders: {},\n endpoint: \"/server/upload\",\n filenameParam: \"qqfilename\",\n forceMultipart: true,\n inputName: \"qqfile\",\n method: \"POST\",\n params: {},\n paramsInBody: true,\n totalFileSizeName: \"qqtotalfilesize\",\n uuidName: \"qquuid\"\n },\n validation: {\n allowedExtensions: [],\n sizeLimit: 0,\n minSizeLimit: 0,\n itemLimit: 0,\n stopOnFirstInvalidFile: true,\n acceptFiles: null,\n image: {\n maxHeight: 0,\n maxWidth: 0,\n minHeight: 0,\n minWidth: 0\n },\n allowEmpty: false\n },\n callbacks: {\n onSubmit: function(id, name) {},\n onSubmitted: function(id, name) {},\n onComplete: function(id, name, responseJSON, maybeXhr) {},\n onAllComplete: function(successful, failed) {},\n onCancel: function(id, name) {},\n onUpload: function(id, name) {},\n onUploadChunk: function(id, name, chunkData) {},\n onUploadChunkSuccess: function(id, chunkData, responseJSON, xhr) {},\n onResume: function(id, fileName, chunkData) {},\n onProgress: function(id, name, loaded, total) {},\n onTotalProgress: function(loaded, total) {},\n onError: function(id, name, reason, maybeXhrOrXdr) {},\n onAutoRetry: function(id, name, attemptNumber) {},\n onManualRetry: function(id, name) {},\n onValidateBatch: function(fileOrBlobData) {},\n onValidate: function(fileOrBlobData) {},\n onSubmitDelete: function(id) {},\n onDelete: function(id) {},\n onDeleteComplete: function(id, xhrOrXdr, isError) {},\n onPasteReceived: function(blob) {},\n onStatusChange: function(id, oldStatus, newStatus) {},\n onSessionRequestComplete: function(response, success, xhrOrXdr) {}\n },\n messages: {\n typeError: \"{file} has an invalid extension. Valid extension(s): {extensions}.\",\n sizeError: \"{file} is too large, maximum file size is {sizeLimit}.\",\n minSizeError: \"{file} is too small, minimum file size is {minSizeLimit}.\",\n emptyError: \"{file} is empty, please select files again without it.\",\n noFilesError: \"No files to upload.\",\n tooManyItemsError: \"Too many items ({netItems}) would be uploaded. Item limit is {itemLimit}.\",\n maxHeightImageError: \"Image is too tall.\",\n maxWidthImageError: \"Image is too wide.\",\n minHeightImageError: \"Image is not tall enough.\",\n minWidthImageError: \"Image is not wide enough.\",\n retryFailTooManyItems: \"Retry failed - you have reached your file limit.\",\n onLeave: \"The files are being uploaded, if you leave now the upload will be canceled.\",\n unsupportedBrowserIos8Safari: \"Unrecoverable error - this browser does not permit file uploading of any kind due to serious bugs in iOS8 Safari. Please use iOS8 Chrome until Apple fixes these issues.\"\n },\n retry: {\n enableAuto: false,\n maxAutoAttempts: 3,\n autoAttemptDelay: 5,\n preventRetryResponseProperty: \"preventRetry\"\n },\n classes: {\n buttonHover: \"qq-upload-button-hover\",\n buttonFocus: \"qq-upload-button-focus\"\n },\n chunking: {\n enabled: false,\n concurrent: {\n enabled: false\n },\n mandatory: false,\n paramNames: {\n partIndex: \"qqpartindex\",\n partByteOffset: \"qqpartbyteoffset\",\n chunkSize: \"qqchunksize\",\n totalFileSize: \"qqtotalfilesize\",\n totalParts: \"qqtotalparts\"\n },\n partSize: 2e6,\n success: {\n endpoint: null\n }\n },\n resume: {\n enabled: false,\n recordsExpireIn: 7,\n paramNames: {\n resuming: \"qqresume\"\n }\n },\n formatFileName: function(fileOrBlobName) {\n return fileOrBlobName;\n },\n text: {\n defaultResponseError: \"Upload failure reason unknown\",\n fileInputTitle: \"file input\",\n sizeSymbols: [ \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\" ]\n },\n deleteFile: {\n enabled: false,\n method: \"DELETE\",\n endpoint: \"/server/upload\",\n customHeaders: {},\n params: {}\n },\n cors: {\n expected: false,\n sendCredentials: false,\n allowXdr: false\n },\n blobs: {\n defaultName: \"misc_data\"\n },\n paste: {\n targetElement: null,\n defaultName: \"pasted_image\"\n },\n camera: {\n ios: false,\n button: null\n },\n extraButtons: [],\n session: {\n endpoint: null,\n params: {},\n customHeaders: {},\n refreshOnReset: true\n },\n form: {\n element: \"qq-form\",\n autoUpload: false,\n interceptSubmit: true\n },\n scaling: {\n customResizer: null,\n sendOriginal: true,\n orient: true,\n defaultType: null,\n defaultQuality: 80,\n failureText: \"Failed to scale\",\n includeExif: false,\n sizes: []\n },\n workarounds: {\n iosEmptyVideos: true,\n ios8SafariUploads: true,\n ios8BrowserCrash: false\n }\n };\n qq.extend(this._options, o, true);\n this._buttons = [];\n this._extraButtonSpecs = {};\n this._buttonIdsForFileIds = [];\n this._wrapCallbacks();\n this._disposeSupport = new qq.DisposeSupport();\n this._storedIds = [];\n this._autoRetries = [];\n this._retryTimeouts = [];\n this._preventRetries = [];\n this._thumbnailUrls = [];\n this._netUploadedOrQueued = 0;\n this._netUploaded = 0;\n this._uploadData = this._createUploadDataTracker();\n this._initFormSupportAndParams();\n this._customHeadersStore = this._createStore(this._options.request.customHeaders);\n this._deleteFileCustomHeadersStore = this._createStore(this._options.deleteFile.customHeaders);\n this._deleteFileParamsStore = this._createStore(this._options.deleteFile.params);\n this._endpointStore = this._createStore(this._options.request.endpoint);\n this._deleteFileEndpointStore = this._createStore(this._options.deleteFile.endpoint);\n this._handler = this._createUploadHandler();\n this._deleteHandler = qq.DeleteFileAjaxRequester && this._createDeleteHandler();\n if (this._options.button) {\n this._defaultButtonId = this._createUploadButton({\n element: this._options.button,\n title: this._options.text.fileInputTitle\n }).getButtonId();\n }\n this._generateExtraButtonSpecs();\n this._handleCameraAccess();\n if (this._options.paste.targetElement) {\n if (qq.PasteSupport) {\n this._pasteHandler = this._createPasteHandler();\n } else {\n this.log(\"Paste support module not found\", \"error\");\n }\n }\n this._preventLeaveInProgress();\n this._imageGenerator = qq.ImageGenerator && new qq.ImageGenerator(qq.bind(this.log, this));\n this._refreshSessionData();\n this._succeededSinceLastAllComplete = [];\n this._failedSinceLastAllComplete = [];\n this._scaler = qq.Scaler && new qq.Scaler(this._options.scaling, qq.bind(this.log, this)) || {};\n if (this._scaler.enabled) {\n this._customNewFileHandler = qq.bind(this._scaler.handleNewFile, this._scaler);\n }\n if (qq.TotalProgress && qq.supportedFeatures.progressBar) {\n this._totalProgress = new qq.TotalProgress(qq.bind(this._onTotalProgress, this), function(id) {\n var entry = self._uploadData.retrieve({\n id: id\n });\n return entry && entry.size || 0;\n });\n }\n this._currentItemLimit = this._options.validation.itemLimit;\n };\n qq.FineUploaderBasic.prototype = qq.basePublicApi;\n qq.extend(qq.FineUploaderBasic.prototype, qq.basePrivateApi);\n })();\n qq.AjaxRequester = function(o) {\n \"use strict\";\n var log, shouldParamsBeInQueryString, queue = [], requestData = {}, options = {\n acceptHeader: null,\n validMethods: [ \"PATCH\", \"POST\", \"PUT\" ],\n method: \"POST\",\n contentType: \"application/x-www-form-urlencoded\",\n maxConnections: 3,\n customHeaders: {},\n endpointStore: {},\n paramsStore: {},\n mandatedParams: {},\n allowXRequestedWithAndCacheControl: true,\n successfulResponseCodes: {\n DELETE: [ 200, 202, 204 ],\n PATCH: [ 200, 201, 202, 203, 204 ],\n POST: [ 200, 201, 202, 203, 204 ],\n PUT: [ 200, 201, 202, 203, 204 ],\n GET: [ 200 ]\n },\n cors: {\n expected: false,\n sendCredentials: false\n },\n log: function(str, level) {},\n onSend: function(id) {},\n onComplete: function(id, xhrOrXdr, isError) {},\n onProgress: null\n };\n qq.extend(options, o);\n log = options.log;\n if (qq.indexOf(options.validMethods, options.method) < 0) {\n throw new Error(\"'\" + options.method + \"' is not a supported method for this type of request!\");\n }\n function isSimpleMethod() {\n return qq.indexOf([ \"GET\", \"POST\", \"HEAD\" ], options.method) >= 0;\n }\n function containsNonSimpleHeaders(headers) {\n var containsNonSimple = false;\n qq.each(containsNonSimple, function(idx, header) {\n if (qq.indexOf([ \"Accept\", \"Accept-Language\", \"Content-Language\", \"Content-Type\" ], header) < 0) {\n containsNonSimple = true;\n return false;\n }\n });\n return containsNonSimple;\n }\n function isXdr(xhr) {\n return options.cors.expected && xhr.withCredentials === undefined;\n }\n function getCorsAjaxTransport() {\n var xhrOrXdr;\n if (window.XMLHttpRequest || window.ActiveXObject) {\n xhrOrXdr = qq.createXhrInstance();\n if (xhrOrXdr.withCredentials === undefined) {\n xhrOrXdr = new XDomainRequest();\n xhrOrXdr.onload = function() {};\n xhrOrXdr.onerror = function() {};\n xhrOrXdr.ontimeout = function() {};\n xhrOrXdr.onprogress = function() {};\n }\n }\n return xhrOrXdr;\n }\n function getXhrOrXdr(id, suppliedXhr) {\n var xhrOrXdr = requestData[id].xhr;\n if (!xhrOrXdr) {\n if (suppliedXhr) {\n xhrOrXdr = suppliedXhr;\n } else {\n if (options.cors.expected) {\n xhrOrXdr = getCorsAjaxTransport();\n } else {\n xhrOrXdr = qq.createXhrInstance();\n }\n }\n requestData[id].xhr = xhrOrXdr;\n }\n return xhrOrXdr;\n }\n function dequeue(id) {\n var i = qq.indexOf(queue, id), max = options.maxConnections, nextId;\n delete requestData[id];\n queue.splice(i, 1);\n if (queue.length >= max && i < max) {\n nextId = queue[max - 1];\n sendRequest(nextId);\n }\n }\n function onComplete(id, xdrError) {\n var xhr = getXhrOrXdr(id), method = options.method, isError = xdrError === true;\n dequeue(id);\n if (isError) {\n log(method + \" request for \" + id + \" has failed\", \"error\");\n } else if (!isXdr(xhr) && !isResponseSuccessful(xhr.status)) {\n isError = true;\n log(method + \" request for \" + id + \" has failed - response code \" + xhr.status, \"error\");\n }\n options.onComplete(id, xhr, isError);\n }\n function getParams(id) {\n var onDemandParams = requestData[id].additionalParams, mandatedParams = options.mandatedParams, params;\n if (options.paramsStore.get) {\n params = options.paramsStore.get(id);\n }\n if (onDemandParams) {\n qq.each(onDemandParams, function(name, val) {\n params = params || {};\n params[name] = val;\n });\n }\n if (mandatedParams) {\n qq.each(mandatedParams, function(name, val) {\n params = params || {};\n params[name] = val;\n });\n }\n return params;\n }\n function sendRequest(id, optXhr) {\n var xhr = getXhrOrXdr(id, optXhr), method = options.method, params = getParams(id), payload = requestData[id].payload, url;\n options.onSend(id);\n url = createUrl(id, params, requestData[id].additionalQueryParams);\n if (isXdr(xhr)) {\n xhr.onload = getXdrLoadHandler(id);\n xhr.onerror = getXdrErrorHandler(id);\n } else {\n xhr.onreadystatechange = getXhrReadyStateChangeHandler(id);\n }\n registerForUploadProgress(id);\n xhr.open(method, url, true);\n if (options.cors.expected && options.cors.sendCredentials && !isXdr(xhr)) {\n xhr.withCredentials = true;\n }\n setHeaders(id);\n log(\"Sending \" + method + \" request for \" + id);\n if (payload) {\n xhr.send(payload);\n } else if (shouldParamsBeInQueryString || !params) {\n xhr.send();\n } else if (params && options.contentType && options.contentType.toLowerCase().indexOf(\"application/x-www-form-urlencoded\") >= 0) {\n xhr.send(qq.obj2url(params, \"\"));\n } else if (params && options.contentType && options.contentType.toLowerCase().indexOf(\"application/json\") >= 0) {\n xhr.send(JSON.stringify(params));\n } else {\n xhr.send(params);\n }\n return xhr;\n }\n function createUrl(id, params, additionalQueryParams) {\n var endpoint = options.endpointStore.get(id), addToPath = requestData[id].addToPath;\n if (addToPath != undefined) {\n endpoint += \"/\" + addToPath;\n }\n if (shouldParamsBeInQueryString && params) {\n endpoint = qq.obj2url(params, endpoint);\n }\n if (additionalQueryParams) {\n endpoint = qq.obj2url(additionalQueryParams, endpoint);\n }\n return endpoint;\n }\n function getXhrReadyStateChangeHandler(id) {\n return function() {\n if (getXhrOrXdr(id).readyState === 4) {\n onComplete(id);\n }\n };\n }\n function registerForUploadProgress(id) {\n var onProgress = options.onProgress;\n if (onProgress) {\n getXhrOrXdr(id).upload.onprogress = function(e) {\n if (e.lengthComputable) {\n onProgress(id, e.loaded, e.total);\n }\n };\n }\n }\n function getXdrLoadHandler(id) {\n return function() {\n onComplete(id);\n };\n }\n function getXdrErrorHandler(id) {\n return function() {\n onComplete(id, true);\n };\n }\n function setHeaders(id) {\n var xhr = getXhrOrXdr(id), customHeaders = options.customHeaders, onDemandHeaders = requestData[id].additionalHeaders || {}, method = options.method, allHeaders = {};\n if (!isXdr(xhr)) {\n options.acceptHeader && xhr.setRequestHeader(\"Accept\", options.acceptHeader);\n if (options.allowXRequestedWithAndCacheControl) {\n if (!options.cors.expected || (!isSimpleMethod() || containsNonSimpleHeaders(customHeaders))) {\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n xhr.setRequestHeader(\"Cache-Control\", \"no-cache\");\n }\n }\n if (options.contentType && (method === \"POST\" || method === \"PUT\")) {\n xhr.setRequestHeader(\"Content-Type\", options.contentType);\n }\n qq.extend(allHeaders, qq.isFunction(customHeaders) ? customHeaders(id) : customHeaders);\n qq.extend(allHeaders, onDemandHeaders);\n qq.each(allHeaders, function(name, val) {\n xhr.setRequestHeader(name, val);\n });\n }\n }\n function isResponseSuccessful(responseCode) {\n return qq.indexOf(options.successfulResponseCodes[options.method], responseCode) >= 0;\n }\n function prepareToSend(id, optXhr, addToPath, additionalParams, additionalQueryParams, additionalHeaders, payload) {\n requestData[id] = {\n addToPath: addToPath,\n additionalParams: additionalParams,\n additionalQueryParams: additionalQueryParams,\n additionalHeaders: additionalHeaders,\n payload: payload\n };\n var len = queue.push(id);\n if (len <= options.maxConnections) {\n return sendRequest(id, optXhr);\n }\n }\n shouldParamsBeInQueryString = options.method === \"GET\" || options.method === \"DELETE\";\n qq.extend(this, {\n initTransport: function(id) {\n var path, params, headers, payload, cacheBuster, additionalQueryParams;\n return {\n withPath: function(appendToPath) {\n path = appendToPath;\n return this;\n },\n withParams: function(additionalParams) {\n params = additionalParams;\n return this;\n },\n withQueryParams: function(_additionalQueryParams_) {\n additionalQueryParams = _additionalQueryParams_;\n return this;\n },\n withHeaders: function(additionalHeaders) {\n headers = additionalHeaders;\n return this;\n },\n withPayload: function(thePayload) {\n payload = thePayload;\n return this;\n },\n withCacheBuster: function() {\n cacheBuster = true;\n return this;\n },\n send: function(optXhr) {\n if (cacheBuster && qq.indexOf([ \"GET\", \"DELETE\" ], options.method) >= 0) {\n params.qqtimestamp = new Date().getTime();\n }\n return prepareToSend(id, optXhr, path, params, additionalQueryParams, headers, payload);\n }\n };\n },\n canceled: function(id) {\n dequeue(id);\n }\n });\n };\n qq.UploadHandler = function(spec) {\n \"use strict\";\n var proxy = spec.proxy, fileState = {}, onCancel = proxy.onCancel, getName = proxy.getName;\n qq.extend(this, {\n add: function(id, fileItem) {\n fileState[id] = fileItem;\n fileState[id].temp = {};\n },\n cancel: function(id) {\n var self = this, cancelFinalizationEffort = new qq.Promise(), onCancelRetVal = onCancel(id, getName(id), cancelFinalizationEffort);\n onCancelRetVal.then(function() {\n if (self.isValid(id)) {\n fileState[id].canceled = true;\n self.expunge(id);\n }\n cancelFinalizationEffort.success();\n });\n },\n expunge: function(id) {\n delete fileState[id];\n },\n getThirdPartyFileId: function(id) {\n return fileState[id].key;\n },\n isValid: function(id) {\n return fileState[id] !== undefined;\n },\n reset: function() {\n fileState = {};\n },\n _getFileState: function(id) {\n return fileState[id];\n },\n _setThirdPartyFileId: function(id, thirdPartyFileId) {\n fileState[id].key = thirdPartyFileId;\n },\n _wasCanceled: function(id) {\n return !!fileState[id].canceled;\n }\n });\n };\n qq.UploadHandlerController = function(o, namespace) {\n \"use strict\";\n var controller = this, chunkingPossible = false, concurrentChunkingPossible = false, chunking, preventRetryResponse, log, handler, options = {\n paramsStore: {},\n maxConnections: 3,\n chunking: {\n enabled: false,\n multiple: {\n enabled: false\n }\n },\n log: function(str, level) {},\n onProgress: function(id, fileName, loaded, total) {},\n onComplete: function(id, fileName, response, xhr) {},\n onCancel: function(id, fileName) {},\n onUploadPrep: function(id) {},\n onUpload: function(id, fileName) {},\n onUploadChunk: function(id, fileName, chunkData) {},\n onUploadChunkSuccess: function(id, chunkData, response, xhr) {},\n onAutoRetry: function(id, fileName, response, xhr) {},\n onResume: function(id, fileName, chunkData) {},\n onUuidChanged: function(id, newUuid) {},\n getName: function(id) {},\n setSize: function(id, newSize) {},\n isQueued: function(id) {},\n getIdsInProxyGroup: function(id) {},\n getIdsInBatch: function(id) {}\n }, chunked = {\n done: function(id, chunkIdx, response, xhr) {\n var chunkData = handler._getChunkData(id, chunkIdx);\n handler._getFileState(id).attemptingResume = false;\n delete handler._getFileState(id).temp.chunkProgress[chunkIdx];\n handler._getFileState(id).loaded += chunkData.size;\n options.onUploadChunkSuccess(id, handler._getChunkDataForCallback(chunkData), response, xhr);\n },\n finalize: function(id) {\n var size = options.getSize(id), name = options.getName(id);\n log(\"All chunks have been uploaded for \" + id + \" - finalizing....\");\n handler.finalizeChunks(id).then(function(response, xhr) {\n log(\"Finalize successful for \" + id);\n var normaizedResponse = upload.normalizeResponse(response, true);\n options.onProgress(id, name, size, size);\n handler._maybeDeletePersistedChunkData(id);\n upload.cleanup(id, normaizedResponse, xhr);\n }, function(response, xhr) {\n var normaizedResponse = upload.normalizeResponse(response, false);\n log(\"Problem finalizing chunks for file ID \" + id + \" - \" + normaizedResponse.error, \"error\");\n if (normaizedResponse.reset) {\n chunked.reset(id);\n }\n if (!options.onAutoRetry(id, name, normaizedResponse, xhr)) {\n upload.cleanup(id, normaizedResponse, xhr);\n }\n });\n },\n handleFailure: function(chunkIdx, id, response, xhr) {\n var name = options.getName(id);\n log(\"Chunked upload request failed for \" + id + \", chunk \" + chunkIdx);\n handler.clearCachedChunk(id, chunkIdx);\n var responseToReport = upload.normalizeResponse(response, false), inProgressIdx;\n if (responseToReport.reset) {\n chunked.reset(id);\n } else {\n inProgressIdx = qq.indexOf(handler._getFileState(id).chunking.inProgress, chunkIdx);\n if (inProgressIdx >= 0) {\n handler._getFileState(id).chunking.inProgress.splice(inProgressIdx, 1);\n handler._getFileState(id).chunking.remaining.unshift(chunkIdx);\n }\n }\n if (!handler._getFileState(id).temp.ignoreFailure) {\n if (concurrentChunkingPossible) {\n handler._getFileState(id).temp.ignoreFailure = true;\n log(qq.format(\"Going to attempt to abort these chunks: {}. These are currently in-progress: {}.\", JSON.stringify(Object.keys(handler._getXhrs(id))), JSON.stringify(handler._getFileState(id).chunking.inProgress)));\n qq.each(handler._getXhrs(id), function(ckid, ckXhr) {\n log(qq.format(\"Attempting to abort file {}.{}. XHR readyState {}. \", id, ckid, ckXhr.readyState));\n ckXhr.abort();\n ckXhr._cancelled = true;\n });\n handler.moveInProgressToRemaining(id);\n connectionManager.free(id, true);\n }\n if (!options.onAutoRetry(id, name, responseToReport, xhr)) {\n upload.cleanup(id, responseToReport, xhr);\n }\n }\n },\n hasMoreParts: function(id) {\n return !!handler._getFileState(id).chunking.remaining.length;\n },\n nextPart: function(id) {\n var nextIdx = handler._getFileState(id).chunking.remaining.shift();\n if (nextIdx >= handler._getTotalChunks(id)) {\n nextIdx = null;\n }\n return nextIdx;\n },\n reset: function(id) {\n log(\"Server or callback has ordered chunking effort to be restarted on next attempt for item ID \" + id, \"error\");\n handler._maybeDeletePersistedChunkData(id);\n handler.reevaluateChunking(id);\n handler._getFileState(id).loaded = 0;\n },\n sendNext: function(id) {\n var size = options.getSize(id), name = options.getName(id), chunkIdx = chunked.nextPart(id), chunkData = handler._getChunkData(id, chunkIdx), resuming = handler._getFileState(id).attemptingResume, inProgressChunks = handler._getFileState(id).chunking.inProgress || [];\n if (handler._getFileState(id).loaded == null) {\n handler._getFileState(id).loaded = 0;\n }\n if (resuming && options.onResume(id, name, chunkData) === false) {\n chunked.reset(id);\n chunkIdx = chunked.nextPart(id);\n chunkData = handler._getChunkData(id, chunkIdx);\n resuming = false;\n }\n if (chunkIdx == null && inProgressChunks.length === 0) {\n chunked.finalize(id);\n } else {\n log(qq.format(\"Sending chunked upload request for item {}.{}, bytes {}-{} of {}.\", id, chunkIdx, chunkData.start + 1, chunkData.end, size));\n options.onUploadChunk(id, name, handler._getChunkDataForCallback(chunkData));\n inProgressChunks.push(chunkIdx);\n handler._getFileState(id).chunking.inProgress = inProgressChunks;\n if (concurrentChunkingPossible) {\n connectionManager.open(id, chunkIdx);\n }\n if (concurrentChunkingPossible && connectionManager.available() && handler._getFileState(id).chunking.remaining.length) {\n chunked.sendNext(id);\n }\n if (chunkData.blob.size === 0) {\n log(qq.format(\"Chunk {} for file {} will not be uploaded, zero sized chunk.\", chunkIdx, id), \"error\");\n chunked.handleFailure(chunkIdx, id, \"File is no longer available\", null);\n } else {\n handler.uploadChunk(id, chunkIdx, resuming).then(function success(response, xhr) {\n log(\"Chunked upload request succeeded for \" + id + \", chunk \" + chunkIdx);\n handler.clearCachedChunk(id, chunkIdx);\n var inProgressChunks = handler._getFileState(id).chunking.inProgress || [], responseToReport = upload.normalizeResponse(response, true), inProgressChunkIdx = qq.indexOf(inProgressChunks, chunkIdx);\n log(qq.format(\"Chunk {} for file {} uploaded successfully.\", chunkIdx, id));\n chunked.done(id, chunkIdx, responseToReport, xhr);\n if (inProgressChunkIdx >= 0) {\n inProgressChunks.splice(inProgressChunkIdx, 1);\n }\n handler._maybePersistChunkedState(id);\n if (!chunked.hasMoreParts(id) && inProgressChunks.length === 0) {\n chunked.finalize(id);\n } else if (chunked.hasMoreParts(id)) {\n chunked.sendNext(id);\n } else {\n log(qq.format(\"File ID {} has no more chunks to send and these chunk indexes are still marked as in-progress: {}\", id, JSON.stringify(inProgressChunks)));\n }\n }, function failure(response, xhr) {\n chunked.handleFailure(chunkIdx, id, response, xhr);\n }).done(function() {\n handler.clearXhr(id, chunkIdx);\n });\n }\n }\n }\n }, connectionManager = {\n _open: [],\n _openChunks: {},\n _waiting: [],\n available: function() {\n var max = options.maxConnections, openChunkEntriesCount = 0, openChunksCount = 0;\n qq.each(connectionManager._openChunks, function(fileId, openChunkIndexes) {\n openChunkEntriesCount++;\n openChunksCount += openChunkIndexes.length;\n });\n return max - (connectionManager._open.length - openChunkEntriesCount + openChunksCount);\n },\n free: function(id, dontAllowNext) {\n var allowNext = !dontAllowNext, waitingIndex = qq.indexOf(connectionManager._waiting, id), connectionsIndex = qq.indexOf(connectionManager._open, id), nextId;\n delete connectionManager._openChunks[id];\n if (upload.getProxyOrBlob(id) instanceof qq.BlobProxy) {\n log(\"Generated blob upload has ended for \" + id + \", disposing generated blob.\");\n delete handler._getFileState(id).file;\n }\n if (waitingIndex >= 0) {\n connectionManager._waiting.splice(waitingIndex, 1);\n } else if (allowNext && connectionsIndex >= 0) {\n connectionManager._open.splice(connectionsIndex, 1);\n nextId = connectionManager._waiting.shift();\n if (nextId >= 0) {\n connectionManager._open.push(nextId);\n upload.start(nextId);\n }\n }\n },\n getWaitingOrConnected: function() {\n var waitingOrConnected = [];\n qq.each(connectionManager._openChunks, function(fileId, chunks) {\n if (chunks && chunks.length) {\n waitingOrConnected.push(parseInt(fileId));\n }\n });\n qq.each(connectionManager._open, function(idx, fileId) {\n if (!connectionManager._openChunks[fileId]) {\n waitingOrConnected.push(parseInt(fileId));\n }\n });\n waitingOrConnected = waitingOrConnected.concat(connectionManager._waiting);\n return waitingOrConnected;\n },\n isUsingConnection: function(id) {\n return qq.indexOf(connectionManager._open, id) >= 0;\n },\n open: function(id, chunkIdx) {\n if (chunkIdx == null) {\n connectionManager._waiting.push(id);\n }\n if (connectionManager.available()) {\n if (chunkIdx == null) {\n connectionManager._waiting.pop();\n connectionManager._open.push(id);\n } else {\n (function() {\n var openChunksEntry = connectionManager._openChunks[id] || [];\n openChunksEntry.push(chunkIdx);\n connectionManager._openChunks[id] = openChunksEntry;\n })();\n }\n return true;\n }\n return false;\n },\n reset: function() {\n connectionManager._waiting = [];\n connectionManager._open = [];\n }\n }, simple = {\n send: function(id, name) {\n handler._getFileState(id).loaded = 0;\n log(\"Sending simple upload request for \" + id);\n handler.uploadFile(id).then(function(response, optXhr) {\n log(\"Simple upload request succeeded for \" + id);\n var responseToReport = upload.normalizeResponse(response, true), size = options.getSize(id);\n options.onProgress(id, name, size, size);\n upload.maybeNewUuid(id, responseToReport);\n upload.cleanup(id, responseToReport, optXhr);\n }, function(response, optXhr) {\n log(\"Simple upload request failed for \" + id);\n var responseToReport = upload.normalizeResponse(response, false);\n if (!options.onAutoRetry(id, name, responseToReport, optXhr)) {\n upload.cleanup(id, responseToReport, optXhr);\n }\n });\n }\n }, upload = {\n cancel: function(id) {\n log(\"Cancelling \" + id);\n options.paramsStore.remove(id);\n connectionManager.free(id);\n },\n cleanup: function(id, response, optXhr) {\n var name = options.getName(id);\n options.onComplete(id, name, response, optXhr);\n if (handler._getFileState(id)) {\n handler._clearXhrs && handler._clearXhrs(id);\n }\n connectionManager.free(id);\n },\n getProxyOrBlob: function(id) {\n return handler.getProxy && handler.getProxy(id) || handler.getFile && handler.getFile(id);\n },\n initHandler: function() {\n var handlerType = namespace ? qq[namespace] : qq.traditional, handlerModuleSubtype = qq.supportedFeatures.ajaxUploading ? \"Xhr\" : \"Form\";\n handler = new handlerType[handlerModuleSubtype + \"UploadHandler\"](options, {\n getDataByUuid: options.getDataByUuid,\n getName: options.getName,\n getSize: options.getSize,\n getUuid: options.getUuid,\n log: log,\n onCancel: options.onCancel,\n onProgress: options.onProgress,\n onUuidChanged: options.onUuidChanged\n });\n if (handler._removeExpiredChunkingRecords) {\n handler._removeExpiredChunkingRecords();\n }\n },\n isDeferredEligibleForUpload: function(id) {\n return options.isQueued(id);\n },\n maybeDefer: function(id, blob) {\n if (blob && !handler.getFile(id) && blob instanceof qq.BlobProxy) {\n options.onUploadPrep(id);\n log(\"Attempting to generate a blob on-demand for \" + id);\n blob.create().then(function(generatedBlob) {\n log(\"Generated an on-demand blob for \" + id);\n handler.updateBlob(id, generatedBlob);\n options.setSize(id, generatedBlob.size);\n handler.reevaluateChunking(id);\n upload.maybeSendDeferredFiles(id);\n }, function(errorMessage) {\n var errorResponse = {};\n if (errorMessage) {\n errorResponse.error = errorMessage;\n }\n log(qq.format(\"Failed to generate blob for ID {}. Error message: {}.\", id, errorMessage), \"error\");\n options.onComplete(id, options.getName(id), qq.extend(errorResponse, preventRetryResponse), null);\n upload.maybeSendDeferredFiles(id);\n connectionManager.free(id);\n });\n } else {\n return upload.maybeSendDeferredFiles(id);\n }\n return false;\n },\n maybeSendDeferredFiles: function(id) {\n var idsInGroup = options.getIdsInProxyGroup(id), uploadedThisId = false;\n if (idsInGroup && idsInGroup.length) {\n log(\"Maybe ready to upload proxy group file \" + id);\n qq.each(idsInGroup, function(idx, idInGroup) {\n if (upload.isDeferredEligibleForUpload(idInGroup) && !!handler.getFile(idInGroup)) {\n uploadedThisId = idInGroup === id;\n upload.now(idInGroup);\n } else if (upload.isDeferredEligibleForUpload(idInGroup)) {\n return false;\n }\n });\n } else {\n uploadedThisId = true;\n upload.now(id);\n }\n return uploadedThisId;\n },\n maybeNewUuid: function(id, response) {\n if (response.newUuid !== undefined) {\n options.onUuidChanged(id, response.newUuid);\n }\n },\n normalizeResponse: function(originalResponse, successful) {\n var response = originalResponse;\n if (!qq.isObject(originalResponse)) {\n response = {};\n if (qq.isString(originalResponse) && !successful) {\n response.error = originalResponse;\n }\n }\n response.success = successful;\n return response;\n },\n now: function(id) {\n var name = options.getName(id);\n if (!controller.isValid(id)) {\n throw new qq.Error(id + \" is not a valid file ID to upload!\");\n }\n options.onUpload(id, name);\n if (chunkingPossible && handler._shouldChunkThisFile(id)) {\n chunked.sendNext(id);\n } else {\n simple.send(id, name);\n }\n },\n start: function(id) {\n var blobToUpload = upload.getProxyOrBlob(id);\n if (blobToUpload) {\n return upload.maybeDefer(id, blobToUpload);\n } else {\n upload.now(id);\n return true;\n }\n }\n };\n qq.extend(this, {\n add: function(id, file) {\n handler.add.apply(this, arguments);\n },\n upload: function(id) {\n if (connectionManager.open(id)) {\n return upload.start(id);\n }\n return false;\n },\n retry: function(id) {\n if (concurrentChunkingPossible) {\n handler._getFileState(id).temp.ignoreFailure = false;\n }\n if (connectionManager.isUsingConnection(id)) {\n return upload.start(id);\n } else {\n return controller.upload(id);\n }\n },\n cancel: function(id) {\n var cancelRetVal = handler.cancel(id);\n if (qq.isGenericPromise(cancelRetVal)) {\n cancelRetVal.then(function() {\n upload.cancel(id);\n });\n } else if (cancelRetVal !== false) {\n upload.cancel(id);\n }\n },\n cancelAll: function() {\n var waitingOrConnected = connectionManager.getWaitingOrConnected(), i;\n if (waitingOrConnected.length) {\n for (i = waitingOrConnected.length - 1; i >= 0; i--) {\n controller.cancel(waitingOrConnected[i]);\n }\n }\n connectionManager.reset();\n },\n getFile: function(id) {\n if (handler.getProxy && handler.getProxy(id)) {\n return handler.getProxy(id).referenceBlob;\n }\n return handler.getFile && handler.getFile(id);\n },\n isProxied: function(id) {\n return !!(handler.getProxy && handler.getProxy(id));\n },\n getInput: function(id) {\n if (handler.getInput) {\n return handler.getInput(id);\n }\n },\n reset: function() {\n log(\"Resetting upload handler\");\n controller.cancelAll();\n connectionManager.reset();\n handler.reset();\n },\n expunge: function(id) {\n if (controller.isValid(id)) {\n return handler.expunge(id);\n }\n },\n isValid: function(id) {\n return handler.isValid(id);\n },\n getResumableFilesData: function() {\n if (handler.getResumableFilesData) {\n return handler.getResumableFilesData();\n }\n return [];\n },\n getThirdPartyFileId: function(id) {\n if (controller.isValid(id)) {\n return handler.getThirdPartyFileId(id);\n }\n },\n pause: function(id) {\n if (controller.isResumable(id) && handler.pause && controller.isValid(id) && handler.pause(id)) {\n connectionManager.free(id);\n handler.moveInProgressToRemaining(id);\n return true;\n }\n return false;\n },\n isResumable: function(id) {\n return !!handler.isResumable && handler.isResumable(id);\n }\n });\n qq.extend(options, o);\n log = options.log;\n chunkingPossible = options.chunking.enabled && qq.supportedFeatures.chunking;\n concurrentChunkingPossible = chunkingPossible && options.chunking.concurrent.enabled;\n preventRetryResponse = function() {\n var response = {};\n response[options.preventRetryParam] = true;\n return response;\n }();\n upload.initHandler();\n };\n qq.WindowReceiveMessage = function(o) {\n \"use strict\";\n var options = {\n log: function(message, level) {}\n }, callbackWrapperDetachers = {};\n qq.extend(options, o);\n qq.extend(this, {\n receiveMessage: function(id, callback) {\n var onMessageCallbackWrapper = function(event) {\n callback(event.data);\n };\n if (window.postMessage) {\n callbackWrapperDetachers[id] = qq(window).attach(\"message\", onMessageCallbackWrapper);\n } else {\n log(\"iframe message passing not supported in this browser!\", \"error\");\n }\n },\n stopReceivingMessages: function(id) {\n if (window.postMessage) {\n var detacher = callbackWrapperDetachers[id];\n if (detacher) {\n detacher();\n }\n }\n }\n });\n };\n qq.FormUploadHandler = function(spec) {\n \"use strict\";\n var options = spec.options, handler = this, proxy = spec.proxy, formHandlerInstanceId = qq.getUniqueId(), onloadCallbacks = {}, detachLoadEvents = {}, postMessageCallbackTimers = {}, isCors = options.isCors, inputName = options.inputName, getUuid = proxy.getUuid, log = proxy.log, corsMessageReceiver = new qq.WindowReceiveMessage({\n log: log\n });\n function expungeFile(id) {\n delete detachLoadEvents[id];\n if (isCors) {\n clearTimeout(postMessageCallbackTimers[id]);\n delete postMessageCallbackTimers[id];\n corsMessageReceiver.stopReceivingMessages(id);\n }\n var iframe = document.getElementById(handler._getIframeName(id));\n if (iframe) {\n iframe.setAttribute(\"src\", \"javascript:false;\");\n qq(iframe).remove();\n }\n }\n function getFileIdForIframeName(iframeName) {\n return iframeName.split(\"_\")[0];\n }\n function initIframeForUpload(name) {\n var iframe = qq.toElement(\"