(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["document-DocumentViewController","filebrowser-TImage","filebrowser-TImageBrowser"],{1469:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(9755);\n( function( $ ) {\n\n\t$.fn.TImage = function( options ) {\n\n\t\tGlobal.addCss( 'global/widgets/filebrowser/TImageBrowser.css' );\n\t\tvar opts = $.extend( {}, $.fn.TImage.defaults, options );\n\n\t\tvar $this = this;\n\t\tvar field;\n\n\t\tthis.clearErrorStyle = function() {\n\n\t\t};\n\n\t\tthis.getField = function() {\n\t\t\treturn field;\n\t\t};\n\n\t\tthis.getValue = function() {\n\t\t\treturn null;\n\t\t};\n\n\t\tthis.setValue = function( val ) {\n\t\t\tif ( !val ) {\n\t\t\t\tthis.attr( 'src', '' );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar d = new Date();\n\t\t\tthis.attr( 'src', val + '&t=' + d.getTime() );\n\n\t\t};\n\n\t\tthis.each( function() {\n\n\t\t\tvar o = $.meta ? $.extend( {}, opts, $( this ).data() ) : opts;\n\n\t\t\tfield = o.field;\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\t$.fn.TImage.defaults = {};\n\n\t$( document ).on( 'mouseover', '.file-browser img', function( e ) {\n\t\tvar $this_image_widget = $( e.target ).parents( '.file-browser' );\n\n\t\tif ( !$( '.file_browser_overlay' )[0] && $( e.target ).attr( 'enable-delete' ) == 1 ) {\n\t\t\tvar height = $( e.target ).height();\n\t\t\tvar top = ( height - 32 ) / 2;\n\t\t\tvar left = top;\n\n\t\t\tvar file_browser_overlay = $( '
' );\n\t\t\tfile_browser_overlay.css( 'position', 'absolute' );\n\t\t\tfile_browser_overlay.css( 'top', '0px' );\n\t\t\tfile_browser_overlay.css( 'left', '0' );\n\t\t\tfile_browser_overlay.css( 'cursor', 'pointer' );\n\t\t\tfile_browser_overlay.css( 'height', height + 'px' );\n\t\t\tfile_browser_overlay.css( 'width', '100%' );\n\t\t\tfile_browser_overlay.css( 'background', 'rgba(255,255,255,0.85)' );\n\n\t\t\t$( e.target ).parents( '.file-browser' ).append( file_browser_overlay );\n\n\t\t\t$( document ).on( 'click', '.file_browser_overlay', function( e ) {\n\t\t\t\tvar img_src = $( e.target ).parent().find( 'img' ).attr( 'src' );\n\t\t\t\tTAlertManager.showConfirmAlert( $.i18n._( 'This will permanently delete the image. Are you sure?' ), '', function( flag ) {\n\t\t\t\t\tif ( flag ) {\n\t\t\t\t\t\tvar e = { type: 'deleteClick', message: 'Delete image clicked.', time: new Date() };\n\t\t\t\t\t\t$this_image_widget.trigger( e );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t$( document ).on( 'mouseleave', '.file-browser', function() {\n\t\t\t\t$( document ).off( 'click', '.file_browser_overlay' );\n\t\t\t\tif ( $( '.file_browser_overlay' )[0] ) {\n\t\t\t\t\tvar file_browser_overlay = $( this ).find( '.file_browser_overlay' );\n\t\t\t\t\tfile_browser_overlay.off().remove();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\n} )( jQuery );//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQ2OS5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUE7O0FBRUE7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxnQ0FBZ0M7O0FBRWhDOztBQUVBLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0SUFBNEksV0FBVyxZQUFZLGtCQUFrQixvQkFBb0I7QUFDek07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLE1BQU07QUFDTixLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7O0FBRUgsRUFBRSxHQUFHLE1BQU0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvZ2xvYmFsL3dpZGdldHMvZmlsZWJyb3dzZXIvVEltYWdlLmpzPzllOTIiXSwic291cmNlc0NvbnRlbnQiOlsiKCBmdW5jdGlvbiggJCApIHtcblxuXHQkLmZuLlRJbWFnZSA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdFx0R2xvYmFsLmFkZENzcyggJ2dsb2JhbC93aWRnZXRzL2ZpbGVicm93c2VyL1RJbWFnZUJyb3dzZXIuY3NzJyApO1xuXHRcdHZhciBvcHRzID0gJC5leHRlbmQoIHt9LCAkLmZuLlRJbWFnZS5kZWZhdWx0cywgb3B0aW9ucyApO1xuXG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgZmllbGQ7XG5cblx0XHR0aGlzLmNsZWFyRXJyb3JTdHlsZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmllbGQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBmaWVsZDtcblx0XHR9O1xuXG5cdFx0dGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fTtcblxuXHRcdHRoaXMuc2V0VmFsdWUgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHR0aGlzLmF0dHIoICdzcmMnLCAnJyApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR2YXIgZCA9IG5ldyBEYXRlKCk7XG5cdFx0XHR0aGlzLmF0dHIoICdzcmMnLCB2YWwgKyAnJnQ9JyArIGQuZ2V0VGltZSgpICk7XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0dmFyIG8gPSAkLm1ldGEgPyAkLmV4dGVuZCgge30sIG9wdHMsICQoIHRoaXMgKS5kYXRhKCkgKSA6IG9wdHM7XG5cblx0XHRcdGZpZWxkID0gby5maWVsZDtcblxuXHRcdH0gKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0JC5mbi5USW1hZ2UuZGVmYXVsdHMgPSB7fTtcblxuXHQkKCBkb2N1bWVudCApLm9uKCAnbW91c2VvdmVyJywgJy5maWxlLWJyb3dzZXIgaW1nJywgZnVuY3Rpb24oIGUgKSB7XG5cdFx0dmFyICR0aGlzX2ltYWdlX3dpZGdldCA9ICQoIGUudGFyZ2V0ICkucGFyZW50cyggJy5maWxlLWJyb3dzZXInICk7XG5cblx0XHRpZiAoICEkKCAnLmZpbGVfYnJvd3Nlcl9vdmVybGF5JyApWzBdICYmICQoIGUudGFyZ2V0ICkuYXR0ciggJ2VuYWJsZS1kZWxldGUnICkgPT0gMSApIHtcblx0XHRcdHZhciBoZWlnaHQgPSAkKCBlLnRhcmdldCApLmhlaWdodCgpO1xuXHRcdFx0dmFyIHRvcCA9ICggaGVpZ2h0IC0gMzIgKSAvIDI7XG5cdFx0XHR2YXIgbGVmdCA9IHRvcDtcblxuXHRcdFx0dmFyIGZpbGVfYnJvd3Nlcl9vdmVybGF5ID0gJCggJzxkaXYgY2xhc3M9XCJmaWxlX2Jyb3dzZXJfb3ZlcmxheVwiPjxpbWcgc3JjPVwidGhlbWUvZGVmYXVsdC9pbWFnZXMvZGVsZXRlLTUxMi5wbmdcIiBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7dG9wOicgKyB0b3AgKyAncHg7bGVmdDonICsgbGVmdCArICdweDtcIj48L2Rpdj4nICk7XG5cdFx0XHRmaWxlX2Jyb3dzZXJfb3ZlcmxheS5jc3MoICdwb3NpdGlvbicsICdhYnNvbHV0ZScgKTtcblx0XHRcdGZpbGVfYnJvd3Nlcl9vdmVybGF5LmNzcyggJ3RvcCcsICcwcHgnICk7XG5cdFx0XHRmaWxlX2Jyb3dzZXJfb3ZlcmxheS5jc3MoICdsZWZ0JywgJzAnICk7XG5cdFx0XHRmaWxlX2Jyb3dzZXJfb3ZlcmxheS5jc3MoICdjdXJzb3InLCAncG9pbnRlcicgKTtcblx0XHRcdGZpbGVfYnJvd3Nlcl9vdmVybGF5LmNzcyggJ2hlaWdodCcsIGhlaWdodCArICdweCcgKTtcblx0XHRcdGZpbGVfYnJvd3Nlcl9vdmVybGF5LmNzcyggJ3dpZHRoJywgJzEwMCUnICk7XG5cdFx0XHRmaWxlX2Jyb3dzZXJfb3ZlcmxheS5jc3MoICdiYWNrZ3JvdW5kJywgJ3JnYmEoMjU1LDI1NSwyNTUsMC44NSknICk7XG5cblx0XHRcdCQoIGUudGFyZ2V0ICkucGFyZW50cyggJy5maWxlLWJyb3dzZXInICkuYXBwZW5kKCBmaWxlX2Jyb3dzZXJfb3ZlcmxheSApO1xuXG5cdFx0XHQkKCBkb2N1bWVudCApLm9uKCAnY2xpY2snLCAnLmZpbGVfYnJvd3Nlcl9vdmVybGF5JywgZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRcdHZhciBpbWdfc3JjID0gJCggZS50YXJnZXQgKS5wYXJlbnQoKS5maW5kKCAnaW1nJyApLmF0dHIoICdzcmMnICk7XG5cdFx0XHRcdFRBbGVydE1hbmFnZXIuc2hvd0NvbmZpcm1BbGVydCggJC5pMThuLl8oICdUaGlzIHdpbGwgcGVybWFuZW50bHkgZGVsZXRlIHRoZSBpbWFnZS4gQXJlIHlvdSBzdXJlPycgKSwgJycsIGZ1bmN0aW9uKCBmbGFnICkge1xuXHRcdFx0XHRcdGlmICggZmxhZyApIHtcblx0XHRcdFx0XHRcdHZhciBlID0geyB0eXBlOiAnZGVsZXRlQ2xpY2snLCBtZXNzYWdlOiAnRGVsZXRlIGltYWdlIGNsaWNrZWQuJywgdGltZTogbmV3IERhdGUoKSB9O1xuXHRcdFx0XHRcdFx0JHRoaXNfaW1hZ2Vfd2lkZ2V0LnRyaWdnZXIoIGUgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdH0gKTtcblxuXHRcdFx0JCggZG9jdW1lbnQgKS5vbiggJ21vdXNlbGVhdmUnLCAnLmZpbGUtYnJvd3NlcicsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkKCBkb2N1bWVudCApLm9mZiggJ2NsaWNrJywgJy5maWxlX2Jyb3dzZXJfb3ZlcmxheScgKTtcblx0XHRcdFx0aWYgKCAkKCAnLmZpbGVfYnJvd3Nlcl9vdmVybGF5JyApWzBdICkge1xuXHRcdFx0XHRcdHZhciBmaWxlX2Jyb3dzZXJfb3ZlcmxheSA9ICQoIHRoaXMgKS5maW5kKCAnLmZpbGVfYnJvd3Nlcl9vdmVybGF5JyApO1xuXHRcdFx0XHRcdGZpbGVfYnJvd3Nlcl9vdmVybGF5Lm9mZigpLnJlbW92ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9ICk7XG5cbn0gKSggalF1ZXJ5ICk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1469\n")},8326:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("/* provided dependency */ var jQuery = __webpack_require__(9755);\n( function( $ ) {\n\n\t$.fn.TImageBrowser = function( options ) {\n\t\tGlobal.addCss( 'global/widgets/filebrowser/TImageBrowser.css' );\n\t\tvar opts = $.extend( {}, $.fn.TImageBrowser.defaults, options );\n\n\t\tvar $this = this;\n\t\tvar field;\n\t\tvar id = 'file_browser';\n\t\tvar name = 'filedata';\n\t\tvar browser;\n\n\t\tvar accept_filter = '';\n\n\t\tvar default_width = 177;\n\t\tvar default_height = 42;\n\t\tvar enabled = true;\n\n\t\tthis.setEnabled = function( val ) {\n\t\t\tenabled = val;\n\n\t\t\tvar btn = this.find( '.browser-form input' );\n\n\t\t\tif ( !val ) {\n\t\t\t\tbtn.attr( 'disabled', true );\n\t\t\t\tbtn.removeClass( 'disable-element' ).addClass( 'disable-element' );\n\t\t\t} else {\n\t\t\t\tbtn.removeAttr( 'disabled' );\n\t\t\t\tbtn.removeClass( 'disable-element' );\n\t\t\t}\n\n\t\t};\n\n\t\tthis.clearErrorStyle = function() {\n\n\t\t};\n\n\t\tthis.getFileName = function() {\n\n\t\t\treturn browser.val();\n\t\t};\n\n\t\tthis.getField = function() {\n\t\t\treturn field;\n\t\t};\n\n\t\tthis.setEnableDelete = function( val ) {\n\t\t\tvar image = $this.find( '.image' );\n\t\t\tif ( !val ) {\n\t\t\t\timage.removeAttr( 'enable-delete' );\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\timage.attr( 'enable-delete', 1 );\n\t\t\t}\n\t\t};\n\n\t\tthis.getValue = function() {\n\t\t\tvar form_data;\n\t\t\tif ( browser && browser.val() ) {\n\n\t\t\t\tif ( typeof FormData == 'undefined' ) {\n\t\t\t\t\tform_data = $this.find( '.browser-form' );\n\t\t\t\t} else {\n\t\t\t\t\tform_data = new FormData( $( $this.find( '.browser-form' ) )[0] );\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tform_data = null;\n\t\t\t}\n\n\t\t\treturn form_data;\n\t\t};\n\n\t\tthis.getImageSrc = function() {\n\t\t\tvar image = $this.find( '.image' );\n\t\t\treturn image.attr( 'src' );\n\t\t};\n\n\t\tthis.setImage = function( val ) {\n\t\t\tvar image = $this.find( '.image' );\n\n\t\t\tif ( !val ) {\n\t\t\t\timage.attr( 'src', '' );\n\t\t\t\timage.hide();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar d = new Date();\n\t\t\timage.hide();\n\t\t\timage.attr( 'src', val + '&t=' + d.getTime() );\n\t\t\timage.css( 'height', 'auto' );\n\t\t\timage.css( 'width', 'auto' );\n\n\t\t};\n\n\t\tvar onImageLoad = function( image ) {\n\n\t\t\tvar image_height = $( image ).height() > 0 ? $( image ).height() : image.naturalHeight;\n\t\t\tvar image_width = $( image ).width() > 0 ? $( image ).width() : image.naturalWidth;\n\n\t\t\tif ( image_height > default_height ) {\n\t\t\t\t$( image ).css( 'height', default_height );\n\n\t\t\t}\n\n\t\t\tif ( image_width > default_width ) {\n\t\t\t\t$( image ).css( 'width', default_width );\n\t\t\t\t$( image ).css( 'height', 'auto' );\n\t\t\t}\n\n\t\t\t$this.trigger( 'setSize' );\n\n\t\t\tif ( image_height < 5 ) {\n\t\t\t\t$( image ).hide();\n\t\t\t} else {\n\t\t\t\t$( image ).show();\n\t\t\t}\n\t\t};\n\n\t\tthis.setValue = function( val ) {\n\n\t\t\tif ( !val ) {\n\t\t\t\tval = '';\n\t\t\t}\n\n\t\t};\n\n\t\tthis.each( function() {\n\t\t\tvar o = $.meta ? $.extend( {}, opts, $( this ).data() ) : opts;\n\n\t\t\tfield = o.field;\n\n\t\t\t// var $this = this;\n\n\t\t\tif ( o.default_width > 0 ) {\n\t\t\t\tdefault_width = o.default_width;\n\t\t\t}\n\n\t\t\tif ( o.default_height > 0 ) {\n\t\t\t\tdefault_height = o.default_height;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( o.name ) ) {\n\t\t\t\tname = o.name;\n\t\t\t}\n\n\t\t\tif ( Global.isSet( accept_filter ) ) {\n\t\t\t\taccept_filter = o.accept_filter;\n\t\t\t}\n\n\t\t\tbrowser = $( this ).find( '.browser' );\n\t\t\tvar image = $( this ).find( '.image' );\n\t\t\timage.hide();\n\t\t\timage.on( 'load', function() {\n\t\t\t\tonImageLoad( this );\n\n\t\t\t} );\n\n\t\t\tif ( accept_filter ) {\n\t\t\t\tbrowser.attr( 'accept', accept_filter );\n\t\t\t} else {\n\t\t\t\taccept_filter = 'image/*';\n\t\t\t\tbrowser.attr( 'accept', 'image/*' );\n\t\t\t}\n\n\t\t\tbrowser.attr( 'id', id );\n\t\t\tbrowser.attr( 'name', name );\n\n\t\t\tif ( Global.isSet( o.changeHandler ) ) {\n\n\t\t\t\t$this.bind( 'imageChange', o.changeHandler );\n\t\t\t}\n\t\t\tif ( Global.isSet( o.deleteImageHandler ) ) {\n\t\t\t\tthis.find( '.file-browser' ).on( 'deleteClick', function() {\n\t\t\t\t\to.deleteImageHandler();\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tbrowser.bind( 'change', function() {\n\t\t\t\timage.hide();\n\n\t\t\t\tif ( typeof FileReader != 'undefined' ) {\n\n\t\t\t\t\tvar files = !!this.files ? this.files : [];\n\n\t\t\t\t\t// If no files were selected, or no FileReader support, return\n\t\t\t\t\tif ( !files.length || !window.FileReader ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( accept_filter === 'image/*' ) {\n\t\t\t\t\t\t// Create a new instance of the FileReader\n\t\t\t\t\t\tvar reader = new FileReader();\n\n\t\t\t\t\t\t// Read the local file as a DataURL\n\t\t\t\t\t\treader.readAsDataURL( files[0] );\n\n\t\t\t\t\t\t// When loaded, set image data as background of div\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = this.result;\n\t\t\t\t\t\t\timage.attr( 'src', url );\n\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t$this.trigger( 'imageChange', [$this] );\n\n\t\t\t} );\n\n\t\t} );\n\n\t\treturn this;\n\n\t};\n\n\t$.fn.TImageBrowser.defaults = {};\n\t$.fn.TImageBrowser.html_template = `\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t
\n\t`;\n\n} )( jQuery );//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiODMyNi5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUE7QUFDQTtBQUNBLHlCQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdDQUFnQzs7QUFFaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxLQUFLOztBQUVMLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUsR0FBRyxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L2dsb2JhbC93aWRnZXRzL2ZpbGVicm93c2VyL1RJbWFnZUJyb3dzZXIuanM/MjAyOSJdLCJzb3VyY2VzQ29udGVudCI6WyIoIGZ1bmN0aW9uKCAkICkge1xuXG5cdCQuZm4uVEltYWdlQnJvd3NlciA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXHRcdEdsb2JhbC5hZGRDc3MoICdnbG9iYWwvd2lkZ2V0cy9maWxlYnJvd3Nlci9USW1hZ2VCcm93c2VyLmNzcycgKTtcblx0XHR2YXIgb3B0cyA9ICQuZXh0ZW5kKCB7fSwgJC5mbi5USW1hZ2VCcm93c2VyLmRlZmF1bHRzLCBvcHRpb25zICk7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciBmaWVsZDtcblx0XHR2YXIgaWQgPSAnZmlsZV9icm93c2VyJztcblx0XHR2YXIgbmFtZSA9ICdmaWxlZGF0YSc7XG5cdFx0dmFyIGJyb3dzZXI7XG5cblx0XHR2YXIgYWNjZXB0X2ZpbHRlciA9ICcnO1xuXG5cdFx0dmFyIGRlZmF1bHRfd2lkdGggPSAxNzc7XG5cdFx0dmFyIGRlZmF1bHRfaGVpZ2h0ID0gNDI7XG5cdFx0dmFyIGVuYWJsZWQgPSB0cnVlO1xuXG5cdFx0dGhpcy5zZXRFbmFibGVkID0gZnVuY3Rpb24oIHZhbCApIHtcblx0XHRcdGVuYWJsZWQgPSB2YWw7XG5cblx0XHRcdHZhciBidG4gPSB0aGlzLmZpbmQoICcuYnJvd3Nlci1mb3JtIGlucHV0JyApO1xuXG5cdFx0XHRpZiAoICF2YWwgKSB7XG5cdFx0XHRcdGJ0bi5hdHRyKCAnZGlzYWJsZWQnLCB0cnVlICk7XG5cdFx0XHRcdGJ0bi5yZW1vdmVDbGFzcyggJ2Rpc2FibGUtZWxlbWVudCcgKS5hZGRDbGFzcyggJ2Rpc2FibGUtZWxlbWVudCcgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJ0bi5yZW1vdmVBdHRyKCAnZGlzYWJsZWQnICk7XG5cdFx0XHRcdGJ0bi5yZW1vdmVDbGFzcyggJ2Rpc2FibGUtZWxlbWVudCcgKTtcblx0XHRcdH1cblxuXHRcdH07XG5cblx0XHR0aGlzLmNsZWFyRXJyb3JTdHlsZSA9IGZ1bmN0aW9uKCkge1xuXG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmlsZU5hbWUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0cmV0dXJuIGJyb3dzZXIudmFsKCk7XG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0RmllbGQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBmaWVsZDtcblx0XHR9O1xuXG5cdFx0dGhpcy5zZXRFbmFibGVEZWxldGUgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0dmFyIGltYWdlID0gJHRoaXMuZmluZCggJy5pbWFnZScgKTtcblx0XHRcdGlmICggIXZhbCApIHtcblx0XHRcdFx0aW1hZ2UucmVtb3ZlQXR0ciggJ2VuYWJsZS1kZWxldGUnICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGltYWdlLmF0dHIoICdlbmFibGUtZGVsZXRlJywgMSApO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLmdldFZhbHVlID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZm9ybV9kYXRhO1xuXHRcdFx0aWYgKCBicm93c2VyICYmIGJyb3dzZXIudmFsKCkgKSB7XG5cblx0XHRcdFx0aWYgKCB0eXBlb2YgRm9ybURhdGEgPT0gJ3VuZGVmaW5lZCcgKSB7XG5cdFx0XHRcdFx0Zm9ybV9kYXRhID0gJHRoaXMuZmluZCggJy5icm93c2VyLWZvcm0nICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Zm9ybV9kYXRhID0gbmV3IEZvcm1EYXRhKCAkKCAkdGhpcy5maW5kKCAnLmJyb3dzZXItZm9ybScgKSApWzBdICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRmb3JtX2RhdGEgPSBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm9ybV9kYXRhO1xuXHRcdH07XG5cblx0XHR0aGlzLmdldEltYWdlU3JjID0gZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgaW1hZ2UgPSAkdGhpcy5maW5kKCAnLmltYWdlJyApO1xuXHRcdFx0cmV0dXJuIGltYWdlLmF0dHIoICdzcmMnICk7XG5cdFx0fTtcblxuXHRcdHRoaXMuc2V0SW1hZ2UgPSBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0dmFyIGltYWdlID0gJHRoaXMuZmluZCggJy5pbWFnZScgKTtcblxuXHRcdFx0aWYgKCAhdmFsICkge1xuXHRcdFx0XHRpbWFnZS5hdHRyKCAnc3JjJywgJycgKTtcblx0XHRcdFx0aW1hZ2UuaGlkZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBkID0gbmV3IERhdGUoKTtcblx0XHRcdGltYWdlLmhpZGUoKTtcblx0XHRcdGltYWdlLmF0dHIoICdzcmMnLCB2YWwgKyAnJnQ9JyArIGQuZ2V0VGltZSgpICk7XG5cdFx0XHRpbWFnZS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcblx0XHRcdGltYWdlLmNzcyggJ3dpZHRoJywgJ2F1dG8nICk7XG5cblx0XHR9O1xuXG5cdFx0dmFyIG9uSW1hZ2VMb2FkID0gZnVuY3Rpb24oIGltYWdlICkge1xuXG5cdFx0XHR2YXIgaW1hZ2VfaGVpZ2h0ID0gJCggaW1hZ2UgKS5oZWlnaHQoKSA+IDAgPyAkKCBpbWFnZSApLmhlaWdodCgpIDogaW1hZ2UubmF0dXJhbEhlaWdodDtcblx0XHRcdHZhciBpbWFnZV93aWR0aCA9ICQoIGltYWdlICkud2lkdGgoKSA+IDAgPyAkKCBpbWFnZSApLndpZHRoKCkgOiBpbWFnZS5uYXR1cmFsV2lkdGg7XG5cblx0XHRcdGlmICggaW1hZ2VfaGVpZ2h0ID4gZGVmYXVsdF9oZWlnaHQgKSB7XG5cdFx0XHRcdCQoIGltYWdlICkuY3NzKCAnaGVpZ2h0JywgZGVmYXVsdF9oZWlnaHQgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGltYWdlX3dpZHRoID4gZGVmYXVsdF93aWR0aCApIHtcblx0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICd3aWR0aCcsIGRlZmF1bHRfd2lkdGggKTtcblx0XHRcdFx0JCggaW1hZ2UgKS5jc3MoICdoZWlnaHQnLCAnYXV0bycgKTtcblx0XHRcdH1cblxuXHRcdFx0JHRoaXMudHJpZ2dlciggJ3NldFNpemUnICk7XG5cblx0XHRcdGlmICggaW1hZ2VfaGVpZ2h0IDwgNSApIHtcblx0XHRcdFx0JCggaW1hZ2UgKS5oaWRlKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQkKCBpbWFnZSApLnNob3coKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0dGhpcy5zZXRWYWx1ZSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cblx0XHRcdGlmICggIXZhbCApIHtcblx0XHRcdFx0dmFsID0gJyc7XG5cdFx0XHR9XG5cblx0XHR9O1xuXG5cdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBvID0gJC5tZXRhID8gJC5leHRlbmQoIHt9LCBvcHRzLCAkKCB0aGlzICkuZGF0YSgpICkgOiBvcHRzO1xuXG5cdFx0XHRmaWVsZCA9IG8uZmllbGQ7XG5cblx0XHRcdC8vIHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHRcdGlmICggby5kZWZhdWx0X3dpZHRoID4gMCApIHtcblx0XHRcdFx0ZGVmYXVsdF93aWR0aCA9IG8uZGVmYXVsdF93aWR0aDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBvLmRlZmF1bHRfaGVpZ2h0ID4gMCApIHtcblx0XHRcdFx0ZGVmYXVsdF9oZWlnaHQgPSBvLmRlZmF1bHRfaGVpZ2h0O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggby5uYW1lICkgKSB7XG5cdFx0XHRcdG5hbWUgPSBvLm5hbWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCBhY2NlcHRfZmlsdGVyICkgKSB7XG5cdFx0XHRcdGFjY2VwdF9maWx0ZXIgPSBvLmFjY2VwdF9maWx0ZXI7XG5cdFx0XHR9XG5cblx0XHRcdGJyb3dzZXIgPSAkKCB0aGlzICkuZmluZCggJy5icm93c2VyJyApO1xuXHRcdFx0dmFyIGltYWdlID0gJCggdGhpcyApLmZpbmQoICcuaW1hZ2UnICk7XG5cdFx0XHRpbWFnZS5oaWRlKCk7XG5cdFx0XHRpbWFnZS5vbiggJ2xvYWQnLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0b25JbWFnZUxvYWQoIHRoaXMgKTtcblxuXHRcdFx0fSApO1xuXG5cdFx0XHRpZiAoIGFjY2VwdF9maWx0ZXIgKSB7XG5cdFx0XHRcdGJyb3dzZXIuYXR0ciggJ2FjY2VwdCcsIGFjY2VwdF9maWx0ZXIgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFjY2VwdF9maWx0ZXIgPSAnaW1hZ2UvKic7XG5cdFx0XHRcdGJyb3dzZXIuYXR0ciggJ2FjY2VwdCcsICdpbWFnZS8qJyApO1xuXHRcdFx0fVxuXG5cdFx0XHRicm93c2VyLmF0dHIoICdpZCcsIGlkICk7XG5cdFx0XHRicm93c2VyLmF0dHIoICduYW1lJywgbmFtZSApO1xuXG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggby5jaGFuZ2VIYW5kbGVyICkgKSB7XG5cblx0XHRcdFx0JHRoaXMuYmluZCggJ2ltYWdlQ2hhbmdlJywgby5jaGFuZ2VIYW5kbGVyICk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggby5kZWxldGVJbWFnZUhhbmRsZXIgKSApIHtcblx0XHRcdFx0dGhpcy5maW5kKCAnLmZpbGUtYnJvd3NlcicgKS5vbiggJ2RlbGV0ZUNsaWNrJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0by5kZWxldGVJbWFnZUhhbmRsZXIoKTtcblx0XHRcdFx0fSApO1xuXG5cdFx0XHR9XG5cblx0XHRcdGJyb3dzZXIuYmluZCggJ2NoYW5nZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpbWFnZS5oaWRlKCk7XG5cblx0XHRcdFx0aWYgKCB0eXBlb2YgRmlsZVJlYWRlciAhPSAndW5kZWZpbmVkJyApIHtcblxuXHRcdFx0XHRcdHZhciBmaWxlcyA9ICEhdGhpcy5maWxlcyA/IHRoaXMuZmlsZXMgOiBbXTtcblxuXHRcdFx0XHRcdC8vIElmIG5vIGZpbGVzIHdlcmUgc2VsZWN0ZWQsIG9yIG5vIEZpbGVSZWFkZXIgc3VwcG9ydCwgcmV0dXJuXG5cdFx0XHRcdFx0aWYgKCAhZmlsZXMubGVuZ3RoIHx8ICF3aW5kb3cuRmlsZVJlYWRlciApIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIGFjY2VwdF9maWx0ZXIgPT09ICdpbWFnZS8qJyApIHtcblx0XHRcdFx0XHRcdC8vIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgRmlsZVJlYWRlclxuXHRcdFx0XHRcdFx0dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cblx0XHRcdFx0XHRcdC8vIFJlYWQgdGhlIGxvY2FsIGZpbGUgYXMgYSBEYXRhVVJMXG5cdFx0XHRcdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCggZmlsZXNbMF0gKTtcblxuXHRcdFx0XHRcdFx0Ly8gV2hlbiBsb2FkZWQsIHNldCBpbWFnZSBkYXRhIGFzIGJhY2tncm91bmQgb2YgZGl2XG5cdFx0XHRcdFx0XHRyZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHZhciB1cmwgPSB0aGlzLnJlc3VsdDtcblx0XHRcdFx0XHRcdFx0aW1hZ2UuYXR0ciggJ3NyYycsIHVybCApO1xuXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHRoaXMudHJpZ2dlciggJ2ltYWdlQ2hhbmdlJywgWyR0aGlzXSApO1xuXG5cdFx0XHR9ICk7XG5cblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblxuXHR9O1xuXG5cdCQuZm4uVEltYWdlQnJvd3Nlci5kZWZhdWx0cyA9IHt9O1xuXHQkLmZuLlRJbWFnZUJyb3dzZXIuaHRtbF90ZW1wbGF0ZSA9IGBcblx0PGRpdiBjbGFzcz1cImZpbGUtYnJvd3NlclwiPlxuXHRcdDxpbWcgY2xhc3M9XCJpbWFnZVwiPlxuXHRcdDxmb3JtIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgY2xhc3M9XCJicm93c2VyLWZvcm1cIj5cblx0XHRcdDxpbnB1dCBuYW1lPVwiZmlsZWRhdGFcIiBjbGFzcz1cImJyb3dzZXJcIiB0eXBlPVwiZmlsZVwiLz5cblx0XHQ8L2Zvcm0+XG5cdDwvZGl2PlxuXHRgO1xuXG59ICkoIGpRdWVyeSApOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///8326\n")},1214:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DocumentViewController\": () => (/* binding */ DocumentViewController)\n/* harmony export */ });\n/* harmony import */ var _global_widgets_filebrowser_TImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1469);\n/* harmony import */ var _global_widgets_filebrowser_TImage__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_global_widgets_filebrowser_TImage__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _global_widgets_filebrowser_TImageBrowser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8326);\n/* harmony import */ var _global_widgets_filebrowser_TImageBrowser__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_global_widgets_filebrowser_TImageBrowser__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\n\n\n\nclass DocumentViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#document_view_container',\n\n\t\t\t// _required_files: ['TImageBrowser', 'TImage'],\n\n\t\t\tstatus_array: null,\n\t\t\tdocument_group_array: null,\n\n\t\t\tdocument_group_api: null,\n\t\t\tdocument_revision_api: null,\n\t\t\tdocument_attach_api: null,\n\t\t\tsub_document_revision_view_controller: null,\n\t\t\tsub_revision_view_controller: null,\n\n\t\t\tdocument_object_type_id: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'DocumentEditView.html';\n\t\tthis.permission_id = 'document';\n\t\tthis.viewId = 'Document';\n\t\tthis.script_name = 'DocumentView';\n\t\tthis.table_name_key = 'document';\n\t\tthis.context_menu_name = $.i18n._( 'Documents' );\n\t\tthis.navigation_label = $.i18n._( 'Document' );\n\t\tthis.api = TTAPI.APIDocument;\n\t\tthis.document_group_api = TTAPI.APIDocumentGroup;\n\t\tthis.document_revision_api = TTAPI.APIDocumentRevision;\n\t\tthis.document_attach_api = TTAPI.APIDocumentAttachment;\n\n\t\tthis.render();\n\n\t\tif ( this.sub_view_mode ) {\n\t\t\tthis.buildContextMenu( true );\n\t\t} else {\n\t\t\tthis.buildContextMenu();\n\t\t}\n\n\t\t//call init data in parent view\n\t\tif ( !this.sub_view_mode ) {\n\t\t\tthis.initData();\n\t\t}\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: ['copy'],\n\t\t\tinclude: [\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Download' ),\n\t\t\t\t\tid: 'download',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'download',\n\t\t\t\t\tsort_order: 100\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'View' ),\n\t\t\t\t\tid: 'view_file',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'download',\n\t\t\t\t\tsort_order: 200\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tsetCustomDefaultMenuIcon( id, context_btn, grid_selected_length ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'download':\n\t\t\tcase 'view_file':\n\t\t\t\tthis.setDefaultMenuDownIcon( context_btn, grid_selected_length );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetDefaultMenuDownIcon( context_btn, grid_selected_length, pId ) {\n\n\t\tif ( grid_selected_length === 1 ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tinitOptions() {\n\t\tvar $this = this;\n\t\tthis.initDropDownOption( 'status' );\n\n\t\tthis.document_group_api.getDocumentGroup( '', false, false, {\n\t\t\tonResult: function( res ) {\n\n\t\t\t\tres = res.getResult();\n\t\t\t\tres = Global.buildTreeRecord( res );\n\n\t\t\t\tif ( !$this.sub_view_mode ) {\n\t\t\t\t\tif ( !$this.sub_view_mode && $this.basic_search_field_ui_dic['group_id'] ) {\n\t\t\t\t\t\t$this.basic_search_field_ui_dic['group_id'].setSourceData( res );\n\t\t\t\t\t\t$this.adv_search_field_ui_dic['group_id'].setSourceData( res );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t$this.document_group_array = res;\n\n\t\t\t}\n\t\t} );\n\t}\n\n\tgetSubViewFilter( filter ) {\n\n\t\tif ( filter.length === 0 ) {\n\t\t\tfilter = {};\n\t\t}\n\n\t\tif ( this.sub_view_mode && Global.isSet( this.document_object_type_id ) ) {\n\t\t\tfilter['object_type_id'] = this.document_object_type_id;\n\t\t}\n\n\t\treturn filter;\n\t}\n\n\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\t\tthis.search_fields = [\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Status' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'status_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'name',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Description' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'description',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'File Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'remote_file_name',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Tags' ),\n\t\t\t\tfield: 'tag',\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 1,\n\t\t\t\tobject_type_id: 700,\n\t\t\t\tform_item_type: FormItemType.TAG_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Group' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tmultiple: true,\n\t\t\t\tfield: 'group_id',\n\t\t\t\tlayout_name: 'global_tree_column',\n\t\t\t\ttree_mode: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Template' ),\n\t\t\t\tfield: 'template',\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: true,\n\t\t\t\tin_column: 2,\n\t\t\t\tform_item_type: FormItemType.CHECKBOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Private' ),\n\t\t\t\tfield: 'private',\n\t\t\t\tbasic_search: ( PermissionManager.validate( 'document', 'view' ) && PermissionManager.validate( 'document', 'view_private' ) ) ? true : false,\n\t\t\t\tadv_search: ( PermissionManager.validate( 'document', 'view' ) && PermissionManager.validate( 'document', 'view_private' ) ) ? true : false,\n\t\t\t\tin_column: 2,\n\t\t\t\tform_item_type: FormItemType.CHECKBOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Attachments' ),\n\t\t\t\tfield: 'is_attachment',\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: ( PermissionManager.validate( 'document', 'view' ) && PermissionManager.validate( 'document', 'view_private' ) && PermissionManager.validate( 'document', 'edit' ) && PermissionManager.validate( 'user', 'edit' ) ) ? true : false, //Require additional permissions other than just document ones to show document attachments.\n\t\t\t\tin_column: 2,\n\t\t\t\tform_item_type: FormItemType.CHECKBOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Created By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'created_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Updated By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'updated_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: false,\n\t\t\t\tadv_search: true,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} )\n\t\t];\n\t}\n\n\tbuildEditViewUI() {\n\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_document': { 'label': $.i18n._( 'Document' ) },\n\t\t\t'tab_revision': {\n\t\t\t\t'label': $.i18n._( 'Revision' ),\n\t\t\t\t'init_callback': 'initSubDocumentRevisionView',\n\t\t\t\t'display_on_mass_edit': false\n\t\t\t},\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APIDocument,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_document',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\t//Tab 0 start\n\n\t\tvar tab_document = this.edit_view_tab.find( '#tab_document' );\n\n\t\tvar tab_document_column1 = tab_document.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_document_column1 );\n\n\t\t// Status\n\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'status_id' } );\n\t\tform_item_input.setSourceData( $this.status_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_document_column1, '' );\n\n\t\t// Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Name' ), form_item_input, tab_document_column1 );\n\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Revision\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'revision', width: 114 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Revision' ), form_item_input, tab_document_column1, '', null, true );\n\n\t\t// File\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.FILE_BROWSER );\n\n\t\tthis.file_browser = form_item_input.TImageBrowser( { field: 'file', name: 'filedata', accept_filter: '*' } );\n\n\t\tthis.addEditFieldToColumn( $.i18n._( 'File' ), form_item_input, tab_document_column1, '', null, true, true );\n\n\t\t// Group\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\tform_item_input.AComboBox( {\n\t\t\ttree_mode: true,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_tree_column',\n\t\t\tfield: 'group_id',\n\t\t\tset_empty: true\n\t\t} );\n\t\tform_item_input.setSourceData( $this.document_group_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Group' ), form_item_input, tab_document_column1 );\n\n\t\t// Template\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'template' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Template' ), form_item_input, tab_document_column1 );\n\n\t\t// Private\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'private' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Private' ), form_item_input, tab_document_column1 );\n\n\t\t// Description\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\t\tform_item_input.TTextArea( { field: 'description' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Description' ), form_item_input, tab_document_column1, '', null, false, true );\n\n\t\t//Tags\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TAG_INPUT );\n\n\t\tform_item_input.TTagInput( { field: 'tag', object_type_id: 700 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Tags' ), form_item_input, tab_document_column1, '', null, null, true );\n\t}\n\n\tisEditChange() {\n\n\t\tif ( this.current_edit_record.id ) {\n\t\t\tthis.detachElement( 'revision' );\n\t\t\tthis.detachElement( 'file' );\n\t\t} else if ( this.is_mass_editing ) {\n\t\t\tthis.detachElement( 'revision' );\n\t\t\tthis.detachElement( 'file' );\n\t\t} else {\n\t\t\tthis.attachElement( 'revision' );\n\t\t\tthis.attachElement( 'file' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\t\tthis.isEditChange();\n\t}\n\n\tonCustomContextClick( id ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'view_file':\n\t\t\t\tthis.onDownloadClick();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tdoFormIFrameCall() {\n\t\tvar url = ServiceCaller.getURLByObjectType( 'file_download' ) + '&object_type=document&parent_id=' + this.current_edit_record.id;\n\t\tif ( Global.isSet( this.document_object_type_id ) ) {\n\t\t\turl = url + '&parent_object_type_id=' + this.document_object_type_id;\n\t\t}\n\t\turl = url + '&object_id=' + this.current_edit_record.document_revision_id;\n\n\t\tGlobal.APIFileDownload( null, null, null, url );\n\t}\n\n\tonDownloadClick() {\n\n\t\tvar $this = this;\n\t\tvar url;\n\t\tif ( this.edit_view && this.current_edit_record.id ) {\n\t\t\tthis.doFormIFrameCall();\n\n\t\t} else {\n\t\t\tvar filter = {};\n\t\t\tvar selectedId;\n\t\t\tvar grid_selected_id_array = this.getGridSelectIdArray();\n\t\t\tvar grid_selected_length = grid_selected_id_array.length;\n\t\t\tif ( grid_selected_length > 0 ) {\n\t\t\t\tselectedId = grid_selected_id_array[0];\n\t\t\t}\n\t\t\tfilter.filter_data = {};\n\t\t\tfilter.filter_data.id = [selectedId];\n\t\t\tfilter.filter_data.object_type_id = this.document_object_type_id;\n\n\t\t\tvar result = this.api['get' + this.api.key_name]( filter, { async: false } );\n\n\t\t\tvar result_data = result.getResult();\n\n\t\t\tif ( !result_data ) {\n\t\t\t\tresult_data = [];\n\t\t\t}\n\n\t\t\tresult_data = result_data[0];\n\n\t\t\t$this.current_edit_record = result_data;\n\n\t\t\t$this.doFormIFrameCall();\n\n\t\t}\n\t}\n\n\tgetAPIFilters() {\n\t\tvar filter = super.getAPIFilters();\n\t\tfilter.filter_data.object_type_id = this.document_object_type_id; // Note: On My Account->Documents data.object_type_id is NULL, but this is definately used in other areas, like Edit Employee->Attachments.\n\n\t\treturn filter;\n\t}\n\n\tonAddResult( result ) {\n\t\tvar $this = this;\n\t\tvar result_data = result.getResult();\n\n\t\tif ( !result_data ) {\n\t\t\tresult_data = [];\n\t\t}\n\n\t\tresult_data.company = LocalCacheData.current_company.name;\n\t\tresult_data.revision = '1.0';\n\n\t\tif ( $this.sub_view_mode && $this.parent_key ) {\n\t\t\tresult_data[$this.parent_key] = $this.parent_value;\n\t\t}\n\n\t\t$this.current_edit_record = result_data;\n\t\t$this.initEditView();\n\t}\n\n\tonCustomContextClick( id ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'download':\n\t\t\tcase 'view_file':\n\t\t\t\tthis.onDownloadClick();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetAttachmentBinding( document_result, super_fun_name ) {\n\t\tvar $this = this;\n\t\tvar document_id = document_result.getResult();\n\n\t\t/* jshint ignore:start */\n\t\tif ( TTUUID.isUUID( document_id ) == false ) {\n\t\t\tsuper[super_fun_name]( document_result );\n\t\t\treturn;\n\t\t}\n\t\t/* jshint ignore:end */\n\n\t\tif ( $this.sub_view_mode ) {\n\t\t\tvar args = {};\n\t\t\targs.object_type_id = $this.document_object_type_id;\n\t\t\targs.object_id = $this.parent_value;\n\t\t\targs.document_id = document_id;\n\t\t\t$this.document_attach_api.setDocumentAttachment( args, {\n\t\t\t\tonResult: () => {\n\t\t\t\t\tsuper[super_fun_name]( document_result );\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\tsuper[super_fun_name]( document_result );\n\t\t}\n\t}\n\n\thandleSaveResult( document_result, super_fun_name ) {\n\t\tvar document_id = document_result.getResult();\n\t\tvar $this = this;\n\n\t\tvar file_data;\n\n\t\tif ( !$this.current_edit_record.id && !this.is_mass_editing ) {\n\t\t\tfile_data = $this.file_browser.getValue();\n\t\t} else {\n\t\t\tfile_data = null;\n\t\t}\n\n\t\t//Save a document revision data if has upload file, otherwise don't\n\t\tif ( document_result.isValid() == true && file_data ) {\n\t\t\tvar document_revision_record = {};\n\t\t\tdocument_revision_record['document_id'] = document_id;\n\t\t\tdocument_revision_record['revision'] = this.current_edit_record.revision;\n\n\t\t\t$this.document_revision_api['set' + $this.document_revision_api.key_name]( document_revision_record,\n\t\t\t\t{\n\t\t\t\t\tonResult: function( document_revision_result ) {\n\t\t\t\t\t\tif ( document_revision_result.isValid() ) {\n\t\t\t\t\t\t\tvar url = 'object_type=document_revision&object_id=' + document_revision_result.getResult();\n\t\t\t\t\t\t\tif ( Global.isSet( $this.document_object_type_id ) ) {\n\t\t\t\t\t\t\t\turl = url + '&parent_object_type_id=' + $this.document_object_type_id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$this.api.uploadFile( file_data, url, {\n\t\t\t\t\t\t\t\tonResult: function( upload_file_result ) {\n\t\t\t\t\t\t\t\t\t$this.setAttachmentBinding( document_result, super_fun_name );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$this.api['delete' + $this.api.key_name]( [document_id], {\n\t\t\t\t\t\t\t\tonResult: function() {\n\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tTAlertManager.showErrorAlert( document_revision_result );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t} else {\n\t\t\t$this.setAttachmentBinding( document_result, super_fun_name );\n\t\t}\n\t}\n\n\t// Dev note: this is not the ideal refactor, as would like to remove the use of 'super_fun_name'\n\t// but its the best quickest most reliable way to refactor this for now.\n\tonSaveResult( result ) {\n\t\treturn this.handleSaveResult( result, 'onSaveResult' );\n\t}\n\n\tonSaveAndContinueResult( result ) {\n\t\treturn this.handleSaveResult( result, 'onSaveAndContinueResult' );\n\t}\n\n\tonSaveAndNewResult( result ) {\n\t\treturn this.handleSaveResult( result, 'onSaveAndNewResult' );\n\t}\n\n\tonSaveAndCopyResult( result ) {\n\t\treturn this.handleSaveResult( result, 'onSaveAndCopyResult' );\n\t}\n\n\tsetCustomEditMenuIcon( id, context_btn ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'download':\n\t\t\tcase 'view_file':\n\t\t\t\tthis.setEditMenuDownloadIcon( context_btn );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetEditMenuDownloadIcon( context_btn, pId ) {\n\t\tif ( !this.current_edit_record || !this.current_edit_record.id ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tgetGridSetup() {\n\t\tvar $this = this;\n\t\tvar retval = {\n\t\t\tcontainer_selector: this.sub_view_mode ? '.edit-view-tab-bar' : '.view',\n\t\t\tsub_grid_mode: false,\n\t\t\tonGridResize: true,\n\t\t\tonSelectRow: function() {\n\t\t\t\t$this.onGridSelectRow();\n\t\t\t},\n\t\t\tonCellSelect: function() {\n\t\t\t\t$this.onGridSelectRow();\n\t\t\t},\n\t\t\tonSelectAll: function() {\n\t\t\t\t$this.onGridSelectAll();\n\t\t\t},\n\t\t\tondblClickRow: function( e ) {\n\t\t\t\t$this.onGridDblClickRow( e );\n\t\t\t},\n\t\t\tonRightClickRow: function( rowId ) {\n\t\t\t\tvar id_array = $this.getGridSelectIdArray();\n\t\t\t\tif ( id_array.indexOf( rowId ) < 0 ) {\n\t\t\t\t\t$this.grid.grid.resetSelection();\n\t\t\t\t\t$this.grid.grid.setSelection( rowId );\n\t\t\t\t\t$this.onGridSelectRow();\n\t\t\t\t}\n\t\t\t},\n\t\t\theight: 200\n\t\t};\n\n\t\tif ( this.sub_view_mode ) {\n\t\t\tretval.setGridSize = function() {\n\t\t\t\t$this.baseViewSubTabGridResize( 'tab_attachment' );\n\t\t\t};\n\t\t}\n\n\t\treturn retval;\n\t}\n\n\tremoveEditView() {\n\t\tsuper.removeEditView();\n\n\t\tthis.sub_revision_view_controller = null;\n\t}\n\n\tinitSubDocumentRevisionView() {\n\t\tvar $this = this;\n\n\t\tif ( !this.current_edit_record.id ) {\n\t\t\tTTPromise.resolve( 'BaseViewController', 'onTabShow' ); //Since search() isn't called in this case, and we just display the \"Please Save This Record ...\" message, resolve the promise.\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.sub_revision_view_controller ) {\n\t\t\tthis.sub_revision_view_controller.buildContextMenu( true );\n\t\t\tthis.sub_revision_view_controller.setDefaultMenu();\n\t\t\t$this.sub_revision_view_controller.parent_key = 'document_id';\n\t\t\t$this.sub_revision_view_controller.parent_value = $this.current_edit_record.id;\n\t\t\t$this.sub_revision_view_controller.parent_edit_record = $this.current_edit_record;\n\t\t\t$this.sub_revision_view_controller.parent_view_controller = $this;\n\t\t\t$this.sub_revision_view_controller.initData();\n\t\t\treturn;\n\t\t}\n\n\t\tGlobal.loadScript( 'views/document/DocumentRevisionViewController.js', function() {\n\t\t\tvar tab_revision = $this.edit_view_tab.find( '#tab_revision' );\n\t\t\tvar firstColumn = tab_revision.find( '.first-column-sub-view' );\n\n\t\t\tGlobal.trackView( 'Sub' + 'DocumentRevision' + 'View' );\n\t\t\tTTPromise.wait( 'BaseViewController', 'initialize', function() {\n\t\t\t\tDocumentRevisionViewController.loadSubView( firstColumn, beforeLoadView, afterLoadView );\n\t\t\t} );\n\n\t\t} );\n\n\t\tfunction beforeLoadView() {\n\n\t\t}\n\n\t\tfunction afterLoadView( subViewController ) {\n\t\t\t$this.sub_revision_view_controller = subViewController;\n\t\t\t$this.sub_revision_view_controller.parent_key = 'document_id';\n\t\t\t$this.sub_revision_view_controller.parent_value = $this.current_edit_record.id;\n\t\t\t$this.sub_revision_view_controller.parent_edit_record = $this.current_edit_record;\n\t\t\t$this.sub_revision_view_controller.parent_view_controller = $this;\n\t\t\t$this.sub_revision_view_controller.initData();\n\t\t}\n\t}\n\n\tsearchDone() {\n\t\tTTPromise.resolve( 'initSubDocumentView', 'init' );\n\t\tsuper.searchDone();\n\t}\n}\n\nDocumentViewController.loadSubView = function( container, beforeViewLoadedFun, afterViewLoadedFun ) {\n\n\tGlobal.loadViewSource( 'Document', 'SubDocumentView.html', function( result ) {\n\t\tvar args = {};\n\t\tvar template = _.template( result );\n\n\t\tif ( Global.isSet( beforeViewLoadedFun ) ) {\n\t\t\tbeforeViewLoadedFun();\n\t\t}\n\n\t\tif ( Global.isSet( container ) ) {\n\t\t\tcontainer.html( template( args ) ); //This populates the grid outer div below 'first-column-sub-view'\n\t\t\tif ( Global.isSet( afterViewLoadedFun ) ) {\n\t\t\t\tTTPromise.wait( 'BaseViewController', 'initialize', function() {\n\t\t\t\t\tafterViewLoadedFun( sub_document_view_controller );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUwsSUFBSTs7QUFFSjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLENBQUM7O0FBRWxCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS92aWV3cy9kb2N1bWVudC9Eb2N1bWVudFZpZXdDb250cm9sbGVyLmpzP2UyOWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAL2dsb2JhbC93aWRnZXRzL2ZpbGVicm93c2VyL1RJbWFnZSc7XG5pbXBvcnQgJ0AvZ2xvYmFsL3dpZGdldHMvZmlsZWJyb3dzZXIvVEltYWdlQnJvd3Nlcic7XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudFZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNkb2N1bWVudF92aWV3X2NvbnRhaW5lcicsXG5cblx0XHRcdC8vIF9yZXF1aXJlZF9maWxlczogWydUSW1hZ2VCcm93c2VyJywgJ1RJbWFnZSddLFxuXG5cdFx0XHRzdGF0dXNfYXJyYXk6IG51bGwsXG5cdFx0XHRkb2N1bWVudF9ncm91cF9hcnJheTogbnVsbCxcblxuXHRcdFx0ZG9jdW1lbnRfZ3JvdXBfYXBpOiBudWxsLFxuXHRcdFx0ZG9jdW1lbnRfcmV2aXNpb25fYXBpOiBudWxsLFxuXHRcdFx0ZG9jdW1lbnRfYXR0YWNoX2FwaTogbnVsbCxcblx0XHRcdHN1Yl9kb2N1bWVudF9yZXZpc2lvbl92aWV3X2NvbnRyb2xsZXI6IG51bGwsXG5cdFx0XHRzdWJfcmV2aXNpb25fdmlld19jb250cm9sbGVyOiBudWxsLFxuXG5cdFx0XHRkb2N1bWVudF9vYmplY3RfdHlwZV9pZDogbnVsbFxuXHRcdH0gKTtcblxuXHRcdHN1cGVyKCBvcHRpb25zICk7XG5cdH1cblxuXHRpbml0KCBvcHRpb25zICkge1xuXHRcdC8vdGhpcy5fc3VwZXIoJ2luaXRpYWxpemUnLCBvcHRpb25zICk7XG5cdFx0dGhpcy5lZGl0X3ZpZXdfdHBsID0gJ0RvY3VtZW50RWRpdFZpZXcuaHRtbCc7XG5cdFx0dGhpcy5wZXJtaXNzaW9uX2lkID0gJ2RvY3VtZW50Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdEb2N1bWVudCc7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdEb2N1bWVudFZpZXcnO1xuXHRcdHRoaXMudGFibGVfbmFtZV9rZXkgPSAnZG9jdW1lbnQnO1xuXHRcdHRoaXMuY29udGV4dF9tZW51X25hbWUgPSAkLmkxOG4uXyggJ0RvY3VtZW50cycgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ0RvY3VtZW50JyApO1xuXHRcdHRoaXMuYXBpID0gVFRBUEkuQVBJRG9jdW1lbnQ7XG5cdFx0dGhpcy5kb2N1bWVudF9ncm91cF9hcGkgPSBUVEFQSS5BUElEb2N1bWVudEdyb3VwO1xuXHRcdHRoaXMuZG9jdW1lbnRfcmV2aXNpb25fYXBpID0gVFRBUEkuQVBJRG9jdW1lbnRSZXZpc2lvbjtcblx0XHR0aGlzLmRvY3VtZW50X2F0dGFjaF9hcGkgPSBUVEFQSS5BUElEb2N1bWVudEF0dGFjaG1lbnQ7XG5cblx0XHR0aGlzLnJlbmRlcigpO1xuXG5cdFx0aWYgKCB0aGlzLnN1Yl92aWV3X21vZGUgKSB7XG5cdFx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5idWlsZENvbnRleHRNZW51KCk7XG5cdFx0fVxuXG5cdFx0Ly9jYWxsIGluaXQgZGF0YSBpbiBwYXJlbnQgdmlld1xuXHRcdGlmICggIXRoaXMuc3ViX3ZpZXdfbW9kZSApIHtcblx0XHRcdHRoaXMuaW5pdERhdGEoKTtcblx0XHR9XG5cdH1cblxuXHRnZXRDdXN0b21Db250ZXh0TWVudU1vZGVsKCkge1xuXHRcdHZhciBjb250ZXh0X21lbnVfbW9kZWwgPSB7XG5cdFx0XHRleGNsdWRlOiBbJ2NvcHknXSxcblx0XHRcdGluY2x1ZGU6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0Rvd25sb2FkJyApLFxuXHRcdFx0XHRcdGlkOiAnZG93bmxvYWQnLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwOiAnZG93bmxvYWQnLFxuXHRcdFx0XHRcdHNvcnRfb3JkZXI6IDEwMFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVmlldycgKSxcblx0XHRcdFx0XHRpZDogJ3ZpZXdfZmlsZScsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICdkb3dubG9hZCcsXG5cdFx0XHRcdFx0c29ydF9vcmRlcjogMjAwXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9O1xuXG5cdFx0cmV0dXJuIGNvbnRleHRfbWVudV9tb2RlbDtcblx0fVxuXG5cdHNldEN1c3RvbURlZmF1bHRNZW51SWNvbiggaWQsIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCApIHtcblx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdGNhc2UgJ2Rvd25sb2FkJzpcblx0XHRcdGNhc2UgJ3ZpZXdfZmlsZSc6XG5cdFx0XHRcdHRoaXMuc2V0RGVmYXVsdE1lbnVEb3duSWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHNldERlZmF1bHRNZW51RG93bkljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCwgcElkICkge1xuXG5cdFx0aWYgKCBncmlkX3NlbGVjdGVkX2xlbmd0aCA9PT0gMSApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRpbml0T3B0aW9ucygpIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9uKCAnc3RhdHVzJyApO1xuXG5cdFx0dGhpcy5kb2N1bWVudF9ncm91cF9hcGkuZ2V0RG9jdW1lbnRHcm91cCggJycsIGZhbHNlLCBmYWxzZSwge1xuXHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cblx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHRyZXMgPSBHbG9iYWwuYnVpbGRUcmVlUmVjb3JkKCByZXMgKTtcblxuXHRcdFx0XHRpZiAoICEkdGhpcy5zdWJfdmlld19tb2RlICkge1xuXHRcdFx0XHRcdGlmICggISR0aGlzLnN1Yl92aWV3X21vZGUgJiYgJHRoaXMuYmFzaWNfc2VhcmNoX2ZpZWxkX3VpX2RpY1snZ3JvdXBfaWQnXSApIHtcblx0XHRcdFx0XHRcdCR0aGlzLmJhc2ljX3NlYXJjaF9maWVsZF91aV9kaWNbJ2dyb3VwX2lkJ10uc2V0U291cmNlRGF0YSggcmVzICk7XG5cdFx0XHRcdFx0XHQkdGhpcy5hZHZfc2VhcmNoX2ZpZWxkX3VpX2RpY1snZ3JvdXBfaWQnXS5zZXRTb3VyY2VEYXRhKCByZXMgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQkdGhpcy5kb2N1bWVudF9ncm91cF9hcnJheSA9IHJlcztcblxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxuXG5cdGdldFN1YlZpZXdGaWx0ZXIoIGZpbHRlciApIHtcblxuXHRcdGlmICggZmlsdGVyLmxlbmd0aCA9PT0gMCApIHtcblx0XHRcdGZpbHRlciA9IHt9O1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5zdWJfdmlld19tb2RlICYmIEdsb2JhbC5pc1NldCggdGhpcy5kb2N1bWVudF9vYmplY3RfdHlwZV9pZCApICkge1xuXHRcdFx0ZmlsdGVyWydvYmplY3RfdHlwZV9pZCddID0gdGhpcy5kb2N1bWVudF9vYmplY3RfdHlwZV9pZDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmlsdGVyO1xuXHR9XG5cblx0YnVpbGRTZWFyY2hGaWVsZHMoKSB7XG5cblx0XHRzdXBlci5idWlsZFNlYXJjaEZpZWxkcygpO1xuXHRcdHRoaXMuc2VhcmNoX2ZpZWxkcyA9IFtcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdTdGF0dXMnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICdzdGF0dXNfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9vcHRpb25fY29sdW1uJyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnTmFtZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ25hbWUnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVRcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0Rlc2NyaXB0aW9uJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZpZWxkOiAnZGVzY3JpcHRpb24nLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdGaWxlIE5hbWUnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICdyZW1vdGVfZmlsZV9uYW1lJyxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVGFncycgKSxcblx0XHRcdFx0ZmllbGQ6ICd0YWcnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0b2JqZWN0X3R5cGVfaWQ6IDcwMCxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5UQUdfSU5QVVRcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0dyb3VwJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ2dyb3VwX2lkJyxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdHJlZV9jb2x1bW4nLFxuXHRcdFx0XHR0cmVlX21vZGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVGVtcGxhdGUnICksXG5cdFx0XHRcdGZpZWxkOiAndGVtcGxhdGUnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5DSEVDS0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnUHJpdmF0ZScgKSxcblx0XHRcdFx0ZmllbGQ6ICdwcml2YXRlJyxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiAoIFBlcm1pc3Npb25NYW5hZ2VyLnZhbGlkYXRlKCAnZG9jdW1lbnQnLCAndmlldycgKSAmJiBQZXJtaXNzaW9uTWFuYWdlci52YWxpZGF0ZSggJ2RvY3VtZW50JywgJ3ZpZXdfcHJpdmF0ZScgKSApID8gdHJ1ZSA6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiAoIFBlcm1pc3Npb25NYW5hZ2VyLnZhbGlkYXRlKCAnZG9jdW1lbnQnLCAndmlldycgKSAmJiBQZXJtaXNzaW9uTWFuYWdlci52YWxpZGF0ZSggJ2RvY3VtZW50JywgJ3ZpZXdfcHJpdmF0ZScgKSApID8gdHJ1ZSA6IGZhbHNlLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0F0dGFjaG1lbnRzJyApLFxuXHRcdFx0XHRmaWVsZDogJ2lzX2F0dGFjaG1lbnQnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiAoIFBlcm1pc3Npb25NYW5hZ2VyLnZhbGlkYXRlKCAnZG9jdW1lbnQnLCAndmlldycgKSAmJiBQZXJtaXNzaW9uTWFuYWdlci52YWxpZGF0ZSggJ2RvY3VtZW50JywgJ3ZpZXdfcHJpdmF0ZScgKSAmJiBQZXJtaXNzaW9uTWFuYWdlci52YWxpZGF0ZSggJ2RvY3VtZW50JywgJ2VkaXQnICkgJiYgUGVybWlzc2lvbk1hbmFnZXIudmFsaWRhdGUoICd1c2VyJywgJ2VkaXQnICkgKSA/IHRydWUgOiBmYWxzZSwgLy9SZXF1aXJlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgb3RoZXIgdGhhbiBqdXN0IGRvY3VtZW50IG9uZXMgdG8gc2hvdyBkb2N1bWVudCBhdHRhY2htZW50cy5cblx0XHRcdFx0aW5fY29sdW1uOiAyLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkNIRUNLQk9YXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdDcmVhdGVkIEJ5JyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZpZWxkOiAnY3JlYXRlZF9ieScsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXInLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdVcGRhdGVkIEJ5JyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZpZWxkOiAndXBkYXRlZF9ieScsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXInLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9IClcblx0XHRdO1xuXHR9XG5cblx0YnVpbGRFZGl0Vmlld1VJKCkge1xuXG5cdFx0c3VwZXIuYnVpbGRFZGl0Vmlld1VJKCk7XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dmFyIHRhYl9tb2RlbCA9IHtcblx0XHRcdCd0YWJfZG9jdW1lbnQnOiB7ICdsYWJlbCc6ICQuaTE4bi5fKCAnRG9jdW1lbnQnICkgfSxcblx0XHRcdCd0YWJfcmV2aXNpb24nOiB7XG5cdFx0XHRcdCdsYWJlbCc6ICQuaTE4bi5fKCAnUmV2aXNpb24nICksXG5cdFx0XHRcdCdpbml0X2NhbGxiYWNrJzogJ2luaXRTdWJEb2N1bWVudFJldmlzaW9uVmlldycsXG5cdFx0XHRcdCdkaXNwbGF5X29uX21hc3NfZWRpdCc6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0J3RhYl9hdWRpdCc6IHRydWUsXG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdHRoaXMubmF2aWdhdGlvbi5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJRG9jdW1lbnQsXG5cdFx0XHRpZDogdGhpcy5zY3JpcHRfbmFtZSArICdfbmF2aWdhdGlvbicsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfZG9jdW1lbnQnLFxuXHRcdFx0bmF2aWdhdGlvbl9tb2RlOiB0cnVlLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlXG5cdFx0fSApO1xuXG5cdFx0dGhpcy5zZXROYXZpZ2F0aW9uKCk7XG5cblx0XHQvL1RhYiAwIHN0YXJ0XG5cblx0XHR2YXIgdGFiX2RvY3VtZW50ID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX2RvY3VtZW50JyApO1xuXG5cdFx0dmFyIHRhYl9kb2N1bWVudF9jb2x1bW4xID0gdGFiX2RvY3VtZW50LmZpbmQoICcuZmlyc3QtY29sdW1uJyApO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXSA9IFtdO1xuXG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXS5wdXNoKCB0YWJfZG9jdW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gU3RhdHVzXG5cdFx0dmFyIGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnc3RhdHVzX2lkJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnN0YXR1c19hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU3RhdHVzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kb2N1bWVudF9jb2x1bW4xLCAnJyApO1xuXG5cdFx0Ly8gTmFtZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICduYW1lJywgd2lkdGg6ICcxMDAlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdOYW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kb2N1bWVudF9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvLyBSZXZpc2lvblxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3JldmlzaW9uJywgd2lkdGg6IDExNCB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdSZXZpc2lvbicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZG9jdW1lbnRfY29sdW1uMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIEZpbGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkZJTEVfQlJPV1NFUiApO1xuXG5cdFx0dGhpcy5maWxlX2Jyb3dzZXIgPSBmb3JtX2l0ZW1faW5wdXQuVEltYWdlQnJvd3NlciggeyBmaWVsZDogJ2ZpbGUnLCBuYW1lOiAnZmlsZWRhdGEnLCBhY2NlcHRfZmlsdGVyOiAnKicgfSApO1xuXG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdGaWxlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kb2N1bWVudF9jb2x1bW4xLCAnJywgbnVsbCwgdHJ1ZSwgdHJ1ZSApO1xuXG5cdFx0Ly8gR3JvdXBcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHR0cmVlX21vZGU6IHRydWUsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdHJlZV9jb2x1bW4nLFxuXHRcdFx0ZmllbGQ6ICdncm91cF9pZCcsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWVcblx0XHR9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLmRvY3VtZW50X2dyb3VwX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdHcm91cCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZG9jdW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gVGVtcGxhdGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDaGVja2JveCggeyBmaWVsZDogJ3RlbXBsYXRlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUZW1wbGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZG9jdW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gUHJpdmF0ZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENoZWNrYm94KCB7IGZpZWxkOiAncHJpdmF0ZScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUHJpdmF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZG9jdW1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly8gRGVzY3JpcHRpb25cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfQVJFQSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dEFyZWEoIHsgZmllbGQ6ICdkZXNjcmlwdGlvbicgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRGVzY3JpcHRpb24nICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RvY3VtZW50X2NvbHVtbjEsICcnLCBudWxsLCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0Ly9UYWdzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5UQUdfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGFnSW5wdXQoIHsgZmllbGQ6ICd0YWcnLCBvYmplY3RfdHlwZV9pZDogNzAwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1RhZ3MnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RvY3VtZW50X2NvbHVtbjEsICcnLCBudWxsLCBudWxsLCB0cnVlICk7XG5cdH1cblxuXHRpc0VkaXRDaGFuZ2UoKSB7XG5cblx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApIHtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ3JldmlzaW9uJyApO1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnZmlsZScgKTtcblx0XHR9IGVsc2UgaWYgKCB0aGlzLmlzX21hc3NfZWRpdGluZyApIHtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ3JldmlzaW9uJyApO1xuXHRcdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnZmlsZScgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAncmV2aXNpb24nICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdmaWxlJyApO1xuXHRcdH1cblxuXHRcdHRoaXMuZWRpdEZpZWxkUmVzaXplKCk7XG5cdH1cblxuXHRzZXRFZGl0Vmlld0RhdGFEb25lKCkge1xuXHRcdHN1cGVyLnNldEVkaXRWaWV3RGF0YURvbmUoKTtcblx0XHR0aGlzLmlzRWRpdENoYW5nZSgpO1xuXHR9XG5cblx0b25DdXN0b21Db250ZXh0Q2xpY2soIGlkICkge1xuXHRcdHN3aXRjaCAoIGlkICkge1xuXHRcdFx0Y2FzZSAndmlld19maWxlJzpcblx0XHRcdFx0dGhpcy5vbkRvd25sb2FkQ2xpY2soKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0ZG9Gb3JtSUZyYW1lQ2FsbCgpIHtcblx0XHR2YXIgdXJsID0gU2VydmljZUNhbGxlci5nZXRVUkxCeU9iamVjdFR5cGUoICdmaWxlX2Rvd25sb2FkJyApICsgJyZvYmplY3RfdHlwZT1kb2N1bWVudCZwYXJlbnRfaWQ9JyArIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZDtcblx0XHRpZiAoIEdsb2JhbC5pc1NldCggdGhpcy5kb2N1bWVudF9vYmplY3RfdHlwZV9pZCApICkge1xuXHRcdFx0dXJsID0gdXJsICsgJyZwYXJlbnRfb2JqZWN0X3R5cGVfaWQ9JyArIHRoaXMuZG9jdW1lbnRfb2JqZWN0X3R5cGVfaWQ7XG5cdFx0fVxuXHRcdHVybCA9IHVybCArICcmb2JqZWN0X2lkPScgKyB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuZG9jdW1lbnRfcmV2aXNpb25faWQ7XG5cblx0XHRHbG9iYWwuQVBJRmlsZURvd25sb2FkKCBudWxsLCBudWxsLCBudWxsLCB1cmwgKTtcblx0fVxuXG5cdG9uRG93bmxvYWRDbGljaygpIHtcblxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIHVybDtcblx0XHRpZiAoIHRoaXMuZWRpdF92aWV3ICYmIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApIHtcblx0XHRcdHRoaXMuZG9Gb3JtSUZyYW1lQ2FsbCgpO1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhciBmaWx0ZXIgPSB7fTtcblx0XHRcdHZhciBzZWxlY3RlZElkO1xuXHRcdFx0dmFyIGdyaWRfc2VsZWN0ZWRfaWRfYXJyYXkgPSB0aGlzLmdldEdyaWRTZWxlY3RJZEFycmF5KCk7XG5cdFx0XHR2YXIgZ3JpZF9zZWxlY3RlZF9sZW5ndGggPSBncmlkX3NlbGVjdGVkX2lkX2FycmF5Lmxlbmd0aDtcblx0XHRcdGlmICggZ3JpZF9zZWxlY3RlZF9sZW5ndGggPiAwICkge1xuXHRcdFx0XHRzZWxlY3RlZElkID0gZ3JpZF9zZWxlY3RlZF9pZF9hcnJheVswXTtcblx0XHRcdH1cblx0XHRcdGZpbHRlci5maWx0ZXJfZGF0YSA9IHt9O1xuXHRcdFx0ZmlsdGVyLmZpbHRlcl9kYXRhLmlkID0gW3NlbGVjdGVkSWRdO1xuXHRcdFx0ZmlsdGVyLmZpbHRlcl9kYXRhLm9iamVjdF90eXBlX2lkID0gdGhpcy5kb2N1bWVudF9vYmplY3RfdHlwZV9pZDtcblxuXHRcdFx0dmFyIHJlc3VsdCA9IHRoaXMuYXBpWydnZXQnICsgdGhpcy5hcGkua2V5X25hbWVdKCBmaWx0ZXIsIHsgYXN5bmM6IGZhbHNlIH0gKTtcblxuXHRcdFx0dmFyIHJlc3VsdF9kYXRhID0gcmVzdWx0LmdldFJlc3VsdCgpO1xuXG5cdFx0XHRpZiAoICFyZXN1bHRfZGF0YSApIHtcblx0XHRcdFx0cmVzdWx0X2RhdGEgPSBbXTtcblx0XHRcdH1cblxuXHRcdFx0cmVzdWx0X2RhdGEgPSByZXN1bHRfZGF0YVswXTtcblxuXHRcdFx0JHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCA9IHJlc3VsdF9kYXRhO1xuXG5cdFx0XHQkdGhpcy5kb0Zvcm1JRnJhbWVDYWxsKCk7XG5cblx0XHR9XG5cdH1cblxuXHRnZXRBUElGaWx0ZXJzKCkge1xuXHRcdHZhciBmaWx0ZXIgPSBzdXBlci5nZXRBUElGaWx0ZXJzKCk7XG5cdFx0ZmlsdGVyLmZpbHRlcl9kYXRhLm9iamVjdF90eXBlX2lkID0gdGhpcy5kb2N1bWVudF9vYmplY3RfdHlwZV9pZDsgLy8gTm90ZTogT24gTXkgQWNjb3VudC0+RG9jdW1lbnRzIGRhdGEub2JqZWN0X3R5cGVfaWQgaXMgTlVMTCwgYnV0IHRoaXMgaXMgZGVmaW5hdGVseSB1c2VkIGluIG90aGVyIGFyZWFzLCBsaWtlIEVkaXQgRW1wbG95ZWUtPkF0dGFjaG1lbnRzLlxuXG5cdFx0cmV0dXJuIGZpbHRlcjtcblx0fVxuXG5cdG9uQWRkUmVzdWx0KCByZXN1bHQgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgcmVzdWx0X2RhdGEgPSByZXN1bHQuZ2V0UmVzdWx0KCk7XG5cblx0XHRpZiAoICFyZXN1bHRfZGF0YSApIHtcblx0XHRcdHJlc3VsdF9kYXRhID0gW107XG5cdFx0fVxuXG5cdFx0cmVzdWx0X2RhdGEuY29tcGFueSA9IExvY2FsQ2FjaGVEYXRhLmN1cnJlbnRfY29tcGFueS5uYW1lO1xuXHRcdHJlc3VsdF9kYXRhLnJldmlzaW9uID0gJzEuMCc7XG5cblx0XHRpZiAoICR0aGlzLnN1Yl92aWV3X21vZGUgJiYgJHRoaXMucGFyZW50X2tleSApIHtcblx0XHRcdHJlc3VsdF9kYXRhWyR0aGlzLnBhcmVudF9rZXldID0gJHRoaXMucGFyZW50X3ZhbHVlO1xuXHRcdH1cblxuXHRcdCR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgPSByZXN1bHRfZGF0YTtcblx0XHQkdGhpcy5pbml0RWRpdFZpZXcoKTtcblx0fVxuXG5cdG9uQ3VzdG9tQ29udGV4dENsaWNrKCBpZCApIHtcblx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdGNhc2UgJ2Rvd25sb2FkJzpcblx0XHRcdGNhc2UgJ3ZpZXdfZmlsZSc6XG5cdFx0XHRcdHRoaXMub25Eb3dubG9hZENsaWNrKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHNldEF0dGFjaG1lbnRCaW5kaW5nKCBkb2N1bWVudF9yZXN1bHQsIHN1cGVyX2Z1bl9uYW1lICkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIGRvY3VtZW50X2lkID0gZG9jdW1lbnRfcmVzdWx0LmdldFJlc3VsdCgpO1xuXG5cdFx0LyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuXHRcdGlmICggVFRVVUlELmlzVVVJRCggZG9jdW1lbnRfaWQgKSA9PSBmYWxzZSApIHtcblx0XHRcdHN1cGVyW3N1cGVyX2Z1bl9uYW1lXSggZG9jdW1lbnRfcmVzdWx0ICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cblx0XHRpZiAoICR0aGlzLnN1Yl92aWV3X21vZGUgKSB7XG5cdFx0XHR2YXIgYXJncyA9IHt9O1xuXHRcdFx0YXJncy5vYmplY3RfdHlwZV9pZCA9ICR0aGlzLmRvY3VtZW50X29iamVjdF90eXBlX2lkO1xuXHRcdFx0YXJncy5vYmplY3RfaWQgPSAkdGhpcy5wYXJlbnRfdmFsdWU7XG5cdFx0XHRhcmdzLmRvY3VtZW50X2lkID0gZG9jdW1lbnRfaWQ7XG5cdFx0XHQkdGhpcy5kb2N1bWVudF9hdHRhY2hfYXBpLnNldERvY3VtZW50QXR0YWNobWVudCggYXJncywge1xuXHRcdFx0XHRvblJlc3VsdDogKCkgPT4ge1xuXHRcdFx0XHRcdHN1cGVyW3N1cGVyX2Z1bl9uYW1lXSggZG9jdW1lbnRfcmVzdWx0ICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXJbc3VwZXJfZnVuX25hbWVdKCBkb2N1bWVudF9yZXN1bHQgKTtcblx0XHR9XG5cdH1cblxuXHRoYW5kbGVTYXZlUmVzdWx0KCBkb2N1bWVudF9yZXN1bHQsIHN1cGVyX2Z1bl9uYW1lICkge1xuXHRcdHZhciBkb2N1bWVudF9pZCA9IGRvY3VtZW50X3Jlc3VsdC5nZXRSZXN1bHQoKTtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dmFyIGZpbGVfZGF0YTtcblxuXHRcdGlmICggISR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQgJiYgIXRoaXMuaXNfbWFzc19lZGl0aW5nICkge1xuXHRcdFx0ZmlsZV9kYXRhID0gJHRoaXMuZmlsZV9icm93c2VyLmdldFZhbHVlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbGVfZGF0YSA9IG51bGw7XG5cdFx0fVxuXG5cdFx0Ly9TYXZlIGEgZG9jdW1lbnQgcmV2aXNpb24gZGF0YSBpZiBoYXMgdXBsb2FkIGZpbGUsIG90aGVyd2lzZSBkb24ndFxuXHRcdGlmICggZG9jdW1lbnRfcmVzdWx0LmlzVmFsaWQoKSA9PSB0cnVlICYmIGZpbGVfZGF0YSApIHtcblx0XHRcdHZhciBkb2N1bWVudF9yZXZpc2lvbl9yZWNvcmQgPSB7fTtcblx0XHRcdGRvY3VtZW50X3JldmlzaW9uX3JlY29yZFsnZG9jdW1lbnRfaWQnXSA9IGRvY3VtZW50X2lkO1xuXHRcdFx0ZG9jdW1lbnRfcmV2aXNpb25fcmVjb3JkWydyZXZpc2lvbiddID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnJldmlzaW9uO1xuXG5cdFx0XHQkdGhpcy5kb2N1bWVudF9yZXZpc2lvbl9hcGlbJ3NldCcgKyAkdGhpcy5kb2N1bWVudF9yZXZpc2lvbl9hcGkua2V5X25hbWVdKCBkb2N1bWVudF9yZXZpc2lvbl9yZWNvcmQsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIGRvY3VtZW50X3JldmlzaW9uX3Jlc3VsdCApIHtcblx0XHRcdFx0XHRcdGlmICggZG9jdW1lbnRfcmV2aXNpb25fcmVzdWx0LmlzVmFsaWQoKSApIHtcblx0XHRcdFx0XHRcdFx0dmFyIHVybCA9ICdvYmplY3RfdHlwZT1kb2N1bWVudF9yZXZpc2lvbiZvYmplY3RfaWQ9JyArIGRvY3VtZW50X3JldmlzaW9uX3Jlc3VsdC5nZXRSZXN1bHQoKTtcblx0XHRcdFx0XHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoICR0aGlzLmRvY3VtZW50X29iamVjdF90eXBlX2lkICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0dXJsID0gdXJsICsgJyZwYXJlbnRfb2JqZWN0X3R5cGVfaWQ9JyArICR0aGlzLmRvY3VtZW50X29iamVjdF90eXBlX2lkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCR0aGlzLmFwaS51cGxvYWRGaWxlKCBmaWxlX2RhdGEsIHVybCwge1xuXHRcdFx0XHRcdFx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggdXBsb2FkX2ZpbGVfcmVzdWx0ICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuc2V0QXR0YWNobWVudEJpbmRpbmcoIGRvY3VtZW50X3Jlc3VsdCwgc3VwZXJfZnVuX25hbWUgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLmFwaVsnZGVsZXRlJyArICR0aGlzLmFwaS5rZXlfbmFtZV0oIFtkb2N1bWVudF9pZF0sIHtcblx0XHRcdFx0XHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdFx0VEFsZXJ0TWFuYWdlci5zaG93RXJyb3JBbGVydCggZG9jdW1lbnRfcmV2aXNpb25fcmVzdWx0ICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0JHRoaXMuc2V0QXR0YWNobWVudEJpbmRpbmcoIGRvY3VtZW50X3Jlc3VsdCwgc3VwZXJfZnVuX25hbWUgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBEZXYgbm90ZTogdGhpcyBpcyBub3QgdGhlIGlkZWFsIHJlZmFjdG9yLCBhcyB3b3VsZCBsaWtlIHRvIHJlbW92ZSB0aGUgdXNlIG9mICdzdXBlcl9mdW5fbmFtZSdcblx0Ly8gYnV0IGl0cyB0aGUgYmVzdCBxdWlja2VzdCBtb3N0IHJlbGlhYmxlIHdheSB0byByZWZhY3RvciB0aGlzIGZvciBub3cuXG5cdG9uU2F2ZVJlc3VsdCggcmVzdWx0ICkge1xuXHRcdHJldHVybiB0aGlzLmhhbmRsZVNhdmVSZXN1bHQoIHJlc3VsdCwgJ29uU2F2ZVJlc3VsdCcgKTtcblx0fVxuXG5cdG9uU2F2ZUFuZENvbnRpbnVlUmVzdWx0KCByZXN1bHQgKSB7XG5cdFx0cmV0dXJuIHRoaXMuaGFuZGxlU2F2ZVJlc3VsdCggcmVzdWx0LCAnb25TYXZlQW5kQ29udGludWVSZXN1bHQnICk7XG5cdH1cblxuXHRvblNhdmVBbmROZXdSZXN1bHQoIHJlc3VsdCApIHtcblx0XHRyZXR1cm4gdGhpcy5oYW5kbGVTYXZlUmVzdWx0KCByZXN1bHQsICdvblNhdmVBbmROZXdSZXN1bHQnICk7XG5cdH1cblxuXHRvblNhdmVBbmRDb3B5UmVzdWx0KCByZXN1bHQgKSB7XG5cdFx0cmV0dXJuIHRoaXMuaGFuZGxlU2F2ZVJlc3VsdCggcmVzdWx0LCAnb25TYXZlQW5kQ29weVJlc3VsdCcgKTtcblx0fVxuXG5cdHNldEN1c3RvbUVkaXRNZW51SWNvbiggaWQsIGNvbnRleHRfYnRuICkge1xuXHRcdHN3aXRjaCAoIGlkICkge1xuXHRcdFx0Y2FzZSAnZG93bmxvYWQnOlxuXHRcdFx0Y2FzZSAndmlld19maWxlJzpcblx0XHRcdFx0dGhpcy5zZXRFZGl0TWVudURvd25sb2FkSWNvbiggY29udGV4dF9idG4gKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0c2V0RWRpdE1lbnVEb3dubG9hZEljb24oIGNvbnRleHRfYnRuLCBwSWQgKSB7XG5cdFx0aWYgKCAhdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkIHx8ICF0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdGdldEdyaWRTZXR1cCgpIHtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHZhciByZXR2YWwgPSB7XG5cdFx0XHRjb250YWluZXJfc2VsZWN0b3I6IHRoaXMuc3ViX3ZpZXdfbW9kZSA/ICcuZWRpdC12aWV3LXRhYi1iYXInIDogJy52aWV3Jyxcblx0XHRcdHN1Yl9ncmlkX21vZGU6IGZhbHNlLFxuXHRcdFx0b25HcmlkUmVzaXplOiB0cnVlLFxuXHRcdFx0b25TZWxlY3RSb3c6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkdGhpcy5vbkdyaWRTZWxlY3RSb3coKTtcblx0XHRcdH0sXG5cdFx0XHRvbkNlbGxTZWxlY3Q6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkdGhpcy5vbkdyaWRTZWxlY3RSb3coKTtcblx0XHRcdH0sXG5cdFx0XHRvblNlbGVjdEFsbDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdCR0aGlzLm9uR3JpZFNlbGVjdEFsbCgpO1xuXHRcdFx0fSxcblx0XHRcdG9uZGJsQ2xpY2tSb3c6IGZ1bmN0aW9uKCBlICkge1xuXHRcdFx0XHQkdGhpcy5vbkdyaWREYmxDbGlja1JvdyggZSApO1xuXHRcdFx0fSxcblx0XHRcdG9uUmlnaHRDbGlja1JvdzogZnVuY3Rpb24oIHJvd0lkICkge1xuXHRcdFx0XHR2YXIgaWRfYXJyYXkgPSAkdGhpcy5nZXRHcmlkU2VsZWN0SWRBcnJheSgpO1xuXHRcdFx0XHRpZiAoIGlkX2FycmF5LmluZGV4T2YoIHJvd0lkICkgPCAwICkge1xuXHRcdFx0XHRcdCR0aGlzLmdyaWQuZ3JpZC5yZXNldFNlbGVjdGlvbigpO1xuXHRcdFx0XHRcdCR0aGlzLmdyaWQuZ3JpZC5zZXRTZWxlY3Rpb24oIHJvd0lkICk7XG5cdFx0XHRcdFx0JHRoaXMub25HcmlkU2VsZWN0Um93KCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRoZWlnaHQ6IDIwMFxuXHRcdH07XG5cblx0XHRpZiAoIHRoaXMuc3ViX3ZpZXdfbW9kZSApIHtcblx0XHRcdHJldHZhbC5zZXRHcmlkU2l6ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQkdGhpcy5iYXNlVmlld1N1YlRhYkdyaWRSZXNpemUoICd0YWJfYXR0YWNobWVudCcgKTtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldHZhbDtcblx0fVxuXG5cdHJlbW92ZUVkaXRWaWV3KCkge1xuXHRcdHN1cGVyLnJlbW92ZUVkaXRWaWV3KCk7XG5cblx0XHR0aGlzLnN1Yl9yZXZpc2lvbl92aWV3X2NvbnRyb2xsZXIgPSBudWxsO1xuXHR9XG5cblx0aW5pdFN1YkRvY3VtZW50UmV2aXNpb25WaWV3KCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHRpZiAoICF0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQgKSB7XG5cdFx0XHRUVFByb21pc2UucmVzb2x2ZSggJ0Jhc2VWaWV3Q29udHJvbGxlcicsICdvblRhYlNob3cnICk7IC8vU2luY2Ugc2VhcmNoKCkgaXNuJ3QgY2FsbGVkIGluIHRoaXMgY2FzZSwgYW5kIHdlIGp1c3QgZGlzcGxheSB0aGUgXCJQbGVhc2UgU2F2ZSBUaGlzIFJlY29yZCAuLi5cIiBtZXNzYWdlLCByZXNvbHZlIHRoZSBwcm9taXNlLlxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5zdWJfcmV2aXNpb25fdmlld19jb250cm9sbGVyICkge1xuXHRcdFx0dGhpcy5zdWJfcmV2aXNpb25fdmlld19jb250cm9sbGVyLmJ1aWxkQ29udGV4dE1lbnUoIHRydWUgKTtcblx0XHRcdHRoaXMuc3ViX3JldmlzaW9uX3ZpZXdfY29udHJvbGxlci5zZXREZWZhdWx0TWVudSgpO1xuXHRcdFx0JHRoaXMuc3ViX3JldmlzaW9uX3ZpZXdfY29udHJvbGxlci5wYXJlbnRfa2V5ID0gJ2RvY3VtZW50X2lkJztcblx0XHRcdCR0aGlzLnN1Yl9yZXZpc2lvbl92aWV3X2NvbnRyb2xsZXIucGFyZW50X3ZhbHVlID0gJHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZDtcblx0XHRcdCR0aGlzLnN1Yl9yZXZpc2lvbl92aWV3X2NvbnRyb2xsZXIucGFyZW50X2VkaXRfcmVjb3JkID0gJHRoaXMuY3VycmVudF9lZGl0X3JlY29yZDtcblx0XHRcdCR0aGlzLnN1Yl9yZXZpc2lvbl92aWV3X2NvbnRyb2xsZXIucGFyZW50X3ZpZXdfY29udHJvbGxlciA9ICR0aGlzO1xuXHRcdFx0JHRoaXMuc3ViX3JldmlzaW9uX3ZpZXdfY29udHJvbGxlci5pbml0RGF0YSgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdEdsb2JhbC5sb2FkU2NyaXB0KCAndmlld3MvZG9jdW1lbnQvRG9jdW1lbnRSZXZpc2lvblZpZXdDb250cm9sbGVyLmpzJywgZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgdGFiX3JldmlzaW9uID0gJHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9yZXZpc2lvbicgKTtcblx0XHRcdHZhciBmaXJzdENvbHVtbiA9IHRhYl9yZXZpc2lvbi5maW5kKCAnLmZpcnN0LWNvbHVtbi1zdWItdmlldycgKTtcblxuXHRcdFx0R2xvYmFsLnRyYWNrVmlldyggJ1N1YicgKyAnRG9jdW1lbnRSZXZpc2lvbicgKyAnVmlldycgKTtcblx0XHRcdFRUUHJvbWlzZS53YWl0KCAnQmFzZVZpZXdDb250cm9sbGVyJywgJ2luaXRpYWxpemUnLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0RG9jdW1lbnRSZXZpc2lvblZpZXdDb250cm9sbGVyLmxvYWRTdWJWaWV3KCBmaXJzdENvbHVtbiwgYmVmb3JlTG9hZFZpZXcsIGFmdGVyTG9hZFZpZXcgKTtcblx0XHRcdH0gKTtcblxuXHRcdH0gKTtcblxuXHRcdGZ1bmN0aW9uIGJlZm9yZUxvYWRWaWV3KCkge1xuXG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gYWZ0ZXJMb2FkVmlldyggc3ViVmlld0NvbnRyb2xsZXIgKSB7XG5cdFx0XHQkdGhpcy5zdWJfcmV2aXNpb25fdmlld19jb250cm9sbGVyID0gc3ViVmlld0NvbnRyb2xsZXI7XG5cdFx0XHQkdGhpcy5zdWJfcmV2aXNpb25fdmlld19jb250cm9sbGVyLnBhcmVudF9rZXkgPSAnZG9jdW1lbnRfaWQnO1xuXHRcdFx0JHRoaXMuc3ViX3JldmlzaW9uX3ZpZXdfY29udHJvbGxlci5wYXJlbnRfdmFsdWUgPSAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkO1xuXHRcdFx0JHRoaXMuc3ViX3JldmlzaW9uX3ZpZXdfY29udHJvbGxlci5wYXJlbnRfZWRpdF9yZWNvcmQgPSAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkO1xuXHRcdFx0JHRoaXMuc3ViX3JldmlzaW9uX3ZpZXdfY29udHJvbGxlci5wYXJlbnRfdmlld19jb250cm9sbGVyID0gJHRoaXM7XG5cdFx0XHQkdGhpcy5zdWJfcmV2aXNpb25fdmlld19jb250cm9sbGVyLmluaXREYXRhKCk7XG5cdFx0fVxuXHR9XG5cblx0c2VhcmNoRG9uZSgpIHtcblx0XHRUVFByb21pc2UucmVzb2x2ZSggJ2luaXRTdWJEb2N1bWVudFZpZXcnLCAnaW5pdCcgKTtcblx0XHRzdXBlci5zZWFyY2hEb25lKCk7XG5cdH1cbn1cblxuRG9jdW1lbnRWaWV3Q29udHJvbGxlci5sb2FkU3ViVmlldyA9IGZ1bmN0aW9uKCBjb250YWluZXIsIGJlZm9yZVZpZXdMb2FkZWRGdW4sIGFmdGVyVmlld0xvYWRlZEZ1biApIHtcblxuXHRHbG9iYWwubG9hZFZpZXdTb3VyY2UoICdEb2N1bWVudCcsICdTdWJEb2N1bWVudFZpZXcuaHRtbCcsIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0dmFyIGFyZ3MgPSB7fTtcblx0XHR2YXIgdGVtcGxhdGUgPSBfLnRlbXBsYXRlKCByZXN1bHQgKTtcblxuXHRcdGlmICggR2xvYmFsLmlzU2V0KCBiZWZvcmVWaWV3TG9hZGVkRnVuICkgKSB7XG5cdFx0XHRiZWZvcmVWaWV3TG9hZGVkRnVuKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCBHbG9iYWwuaXNTZXQoIGNvbnRhaW5lciApICkge1xuXHRcdFx0Y29udGFpbmVyLmh0bWwoIHRlbXBsYXRlKCBhcmdzICkgKTsgLy9UaGlzIHBvcHVsYXRlcyB0aGUgZ3JpZCBvdXRlciBkaXYgYmVsb3cgJ2ZpcnN0LWNvbHVtbi1zdWItdmlldydcblx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCBhZnRlclZpZXdMb2FkZWRGdW4gKSApIHtcblx0XHRcdFx0VFRQcm9taXNlLndhaXQoICdCYXNlVmlld0NvbnRyb2xsZXInLCAnaW5pdGlhbGl6ZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGFmdGVyVmlld0xvYWRlZEZ1biggc3ViX2RvY3VtZW50X3ZpZXdfY29udHJvbGxlciApO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1214\n")}}]);