From 3c083c94799607faa748c454597767d399521764 Mon Sep 17 00:00:00 2001 From: jose Date: Fri, 15 May 2020 14:59:17 +0800 Subject: [PATCH] update 6.6.7 [Add OpenLiteSpeed compatibility, optimize online editor] --- .idea/.gitignore | 2 + .idea/aaPanel_github.iml | 11 + .idea/deployment.xml | 21 + .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + BT-Panel | 48 +- BT-Task | 14 + BTPanel/__init__.py | 655 +- BTPanel/static/ace/ace.editor.config.json | 1 + BTPanel/static/ace/ace.js | 2 +- BTPanel/static/ace/editor.config.json | 2 +- BTPanel/static/ace/styles/icons.css | 43 +- .../315302-20170205164840214-221836365.png | Bin 18551 -> 0 bytes BTPanel/static/css/site.css | 708 +- .../img/dep_ico/Centcount_Analytics.png | Bin 2533 -> 0 bytes BTPanel/static/img/dep_ico/DBShop.png | Bin 21056 -> 0 bytes BTPanel/static/img/dep_ico/JTBC.png | 562 - BTPanel/static/img/dep_ico/Temmoku_MVC.png | Bin 9297 -> 0 bytes BTPanel/static/img/dep_ico/ThinkPHP-5.0.png | Bin 7222 -> 0 bytes BTPanel/static/img/dep_ico/URLshorting.png | Bin 70907 -> 0 bytes BTPanel/static/img/dep_ico/YoungxjTools.png | Bin 165662 -> 0 bytes BTPanel/static/img/dep_ico/ZFAKA.png | 562 - BTPanel/static/img/dep_ico/bfz.png | 561 - BTPanel/static/img/dep_ico/bty.png | Bin 67646 -> 0 bytes BTPanel/static/img/dep_ico/chengxuxia.png | Bin 6047 -> 0 bytes BTPanel/static/img/dep_ico/codeigniter.png | Bin 7760 -> 0 bytes BTPanel/static/img/dep_ico/crmeb.png | Bin 2009 -> 0 bytes BTPanel/static/img/dep_ico/doxcx.png | 563 - BTPanel/static/img/dep_ico/ecshop.png | Bin 3327 -> 0 bytes BTPanel/static/img/dep_ico/emlog.png | Bin 10800 -> 0 bytes BTPanel/static/img/dep_ico/empirecms.png | Bin 12629 -> 0 bytes BTPanel/static/img/dep_ico/jtbc3.png | Bin 1486 -> 0 bytes BTPanel/static/img/dep_ico/lovewall.png | Bin 1609 -> 0 bytes BTPanel/static/img/dep_ico/phpcms.png | Bin 15091 -> 0 bytes BTPanel/static/img/dep_ico/qrpay.png | Bin 1935 -> 0 bytes BTPanel/static/img/dep_ico/sentcms.png | Bin 14500 -> 0 bytes BTPanel/static/img/dep_ico/skm.png | 563 - BTPanel/static/img/dep_ico/test.png | 562 - BTPanel/static/img/dep_ico/test2.png | 562 - BTPanel/static/img/dep_ico/tipask.png | Bin 1186 -> 0 bytes BTPanel/static/img/dep_ico/ttttt.png | 562 - BTPanel/static/img/dep_ico/wdja.png | 563 - BTPanel/static/img/dep_ico/wee7.png | Bin 555 -> 0 bytes BTPanel/static/img/dep_ico/wordpress.png | Bin 23042 -> 0 bytes BTPanel/static/img/dep_ico/wp.png | 562 - BTPanel/static/img/dep_ico/z-blog.png | 561 - BTPanel/static/img/dep_ico/zfaka-zlkb.png | Bin 1578 -> 0 bytes BTPanel/static/img/dep_ico/帝国CMS.png | Bin 12629 -> 0 bytes BTPanel/static/img/dep_ico/微擎.png | Bin 555 -> 0 bytes BTPanel/static/img/file_menu_icon.png | Bin 0 -> 7972 bytes BTPanel/static/img/ico-history.png | Bin 0 -> 861 bytes BTPanel/static/img/soft_ico/ico-apache.png | Bin 1854 -> 1790 bytes BTPanel/static/img/soft_ico/ico-app.png | Bin 2149 -> 1917 bytes BTPanel/static/img/soft_ico/ico-backup.png | Bin 1820 -> 1761 bytes BTPanel/static/img/soft_ico/ico-btwaf.png | Bin 2501 -> 2004 bytes .../static/img/soft_ico/ico-btwaf_httpd.png | Bin 2501 -> 2004 bytes BTPanel/static/img/soft_ico/ico-clear.png | Bin 2303 -> 1896 bytes .../static/img/soft_ico/ico-deployment.png | Bin 553 -> 1947 bytes BTPanel/static/img/soft_ico/ico-docker.png | Bin 1499 -> 2294 bytes BTPanel/static/img/soft_ico/ico-ftp.png | Bin 515 -> 1646 bytes BTPanel/static/img/soft_ico/ico-gitlab.png | Bin 1235 -> 2038 bytes BTPanel/static/img/soft_ico/ico-linuxsys.png | Bin 597 -> 1887 bytes .../static/img/soft_ico/ico-load_leveling.png | Bin 621 -> 1137 bytes .../static/img/soft_ico/ico-masterslave.png | Bin 1095 -> 2061 bytes BTPanel/static/img/soft_ico/ico-memcached.png | Bin 801 -> 1678 bytes BTPanel/static/img/soft_ico/ico-mongodb.png | Bin 1240 -> 2067 bytes BTPanel/static/img/soft_ico/ico-msg_push.png | Bin 1819 -> 1384 bytes BTPanel/static/img/soft_ico/ico-mysql.png | Bin 515 -> 1453 bytes BTPanel/static/img/soft_ico/ico-nginx.png | Bin 501 -> 1749 bytes .../static/img/soft_ico/ico-openlitespeed.png | Bin 0 -> 3200 bytes .../static/img/soft_ico/ico-pgsql_manager.png | Bin 3350 -> 3294 bytes BTPanel/static/img/soft_ico/ico-php.png | Bin 987 -> 1537 bytes BTPanel/static/img/soft_ico/ico-phpguard.png | Bin 1438 -> 2241 bytes .../static/img/soft_ico/ico-phpmyadmin.png | Bin 2329 -> 2691 bytes BTPanel/static/img/soft_ico/ico-pm2.png | Bin 1017 -> 2259 bytes BTPanel/static/img/soft_ico/ico-pureftpd.png | Bin 45433 -> 1210 bytes .../static/img/soft_ico/ico-pythonmamager.png | Bin 1612 -> 1660 bytes BTPanel/static/img/soft_ico/ico-redis.png | Bin 1686 -> 2877 bytes BTPanel/static/img/soft_ico/ico-rsync.png | Bin 996 -> 1133 bytes BTPanel/static/img/soft_ico/ico-score.png | Bin 608 -> 2017 bytes BTPanel/static/img/soft_ico/ico-syssafe.png | Bin 1007 -> 1721 bytes .../static/img/soft_ico/ico-tamper_proof.png | Bin 556 -> 1245 bytes .../static/img/soft_ico/ico-task_manager.png | Bin 455 -> 1031 bytes BTPanel/static/img/soft_ico/ico-tomcat.png | Bin 2437 -> 2436 bytes BTPanel/static/img/soft_ico/ico-tomcat2.png | Bin 2788 -> 2733 bytes BTPanel/static/img/soft_ico/ico-total.png | Bin 1490 -> 1503 bytes BTPanel/static/img/soft_ico/ico-txcos.png | Bin 6738 -> 2013 bytes BTPanel/static/img/soft_ico/ico-upyun.png | Bin 1413 -> 2126 bytes BTPanel/static/img/soft_ico/ico-webhook.png | Bin 805 -> 2018 bytes BTPanel/static/img/soft_ico/ico-webssh.png | Bin 659 -> 1459 bytes BTPanel/static/js/bt_upload.js | 3 +- BTPanel/static/js/config.js | 285 +- BTPanel/static/js/crontab.js | 211 +- BTPanel/static/js/database.js | 9 +- BTPanel/static/js/files.js | 1981 +++- BTPanel/static/js/index.js | 12 +- BTPanel/static/js/public.js | 5767 ++++++---- BTPanel/static/js/public_backup.js | 9852 +++++++++-------- BTPanel/static/js/site - 副本.js | 2702 ----- BTPanel/static/js/site.js | 2653 +++-- BTPanel/static/js/soft.js | 4113 ++++--- BTPanel/static/language/English/public.json | 2 +- BTPanel/static/language/English/template.json | 12 +- BTPanel/static/layer/layer.js | 3 +- BTPanel/templates/default/autherr.html | 2 +- BTPanel/templates/default/config.html | 32 +- BTPanel/templates/default/control.html | 8 +- BTPanel/templates/default/crontab.html | 11 +- BTPanel/templates/default/database.html | 1 + BTPanel/templates/default/down.html | 80 + BTPanel/templates/default/files.html | 133 +- BTPanel/templates/default/firewall.html | 387 +- BTPanel/templates/default/index.html | 9 +- BTPanel/templates/default/layout.html | 364 +- BTPanel/templates/default/license.html | 251 + BTPanel/templates/default/login.html | 3 +- BTPanel/templates/default/site.html | 5 +- BTPanel/templates/default/soft.html | 4 +- BTPanel/templates/default/tips.html | 132 + class/acme_v2.py | 1668 ++- class/ajax.py | 724 +- class/backup_bak.py | 616 ++ class/common.py | 214 +- class/config.py | 885 +- class/crontab.py | 88 +- class/data.py | 86 +- class/database.py | 384 +- class/db.py | 13 +- class/fastcgi_client.py | 196 + class/files.py | 2318 ++-- class/firewalls.py | 137 +- class/flask_compress.py | 119 + class/http_requests.py | 447 + class/jobs.py | 120 +- class/monitor.py | 256 + class/ols.py | 277 + class/panelAes.py | 93 + class/panelApi.py | 292 +- class/panelAuth.py | 208 +- class/panelBackup.py | 460 + class/panelDnsapi.py | 333 +- class/panelLets.py | 147 +- class/panelMysql.py | 27 +- class/panelPHP.py | 98 + class/panelPlugin.py | 951 +- class/panelRedirect.py | 2 + class/panelSSL.py | 314 +- class/panelSite.py | 2819 +++-- class/panelTask.py | 631 +- class/php_info.php | 80 + class/public.py | 933 +- class/san_baseline.py | 2 +- class/send_mail.py | 289 + class/setPanelLets.py | 91 +- class/sewer_Usage.py | 44 +- class/site_dir_auth.py | 2 + class/ssh_security.py | 434 + class/system.py | 353 +- class/tools.py | 5 - class/userlogin.py | 128 +- class/webshell_check.py | 319 + class/wxapp.py | 3 + config/api.json | 2 +- config/config.json | 2 +- config/dns_api.json | 17 +- config/hosts.json | 2 +- data/file_permissions.db | Bin 0 -> 7168 bytes init.sh | 176 +- logs/panel.pid | 0 script/backup.py | 174 +- task.py | 383 +- tools.py | 152 +- 173 files changed, 30416 insertions(+), 24836 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/aaPanel_github.iml create mode 100644 .idea/deployment.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 BT-Task create mode 100644 BTPanel/static/ace/ace.editor.config.json delete mode 100644 BTPanel/static/css/315302-20170205164840214-221836365.png delete mode 100644 BTPanel/static/img/dep_ico/Centcount_Analytics.png delete mode 100644 BTPanel/static/img/dep_ico/DBShop.png delete mode 100644 BTPanel/static/img/dep_ico/JTBC.png delete mode 100644 BTPanel/static/img/dep_ico/Temmoku_MVC.png delete mode 100644 BTPanel/static/img/dep_ico/ThinkPHP-5.0.png delete mode 100644 BTPanel/static/img/dep_ico/URLshorting.png delete mode 100644 BTPanel/static/img/dep_ico/YoungxjTools.png delete mode 100644 BTPanel/static/img/dep_ico/ZFAKA.png delete mode 100644 BTPanel/static/img/dep_ico/bfz.png delete mode 100644 BTPanel/static/img/dep_ico/bty.png delete mode 100644 BTPanel/static/img/dep_ico/chengxuxia.png delete mode 100644 BTPanel/static/img/dep_ico/codeigniter.png delete mode 100644 BTPanel/static/img/dep_ico/crmeb.png delete mode 100644 BTPanel/static/img/dep_ico/doxcx.png delete mode 100644 BTPanel/static/img/dep_ico/ecshop.png delete mode 100644 BTPanel/static/img/dep_ico/emlog.png delete mode 100644 BTPanel/static/img/dep_ico/empirecms.png delete mode 100644 BTPanel/static/img/dep_ico/jtbc3.png delete mode 100644 BTPanel/static/img/dep_ico/lovewall.png delete mode 100644 BTPanel/static/img/dep_ico/phpcms.png delete mode 100644 BTPanel/static/img/dep_ico/qrpay.png delete mode 100644 BTPanel/static/img/dep_ico/sentcms.png delete mode 100644 BTPanel/static/img/dep_ico/skm.png delete mode 100644 BTPanel/static/img/dep_ico/test.png delete mode 100644 BTPanel/static/img/dep_ico/test2.png delete mode 100644 BTPanel/static/img/dep_ico/tipask.png delete mode 100644 BTPanel/static/img/dep_ico/ttttt.png delete mode 100644 BTPanel/static/img/dep_ico/wdja.png delete mode 100644 BTPanel/static/img/dep_ico/wee7.png delete mode 100644 BTPanel/static/img/dep_ico/wordpress.png delete mode 100644 BTPanel/static/img/dep_ico/wp.png delete mode 100644 BTPanel/static/img/dep_ico/z-blog.png delete mode 100644 BTPanel/static/img/dep_ico/zfaka-zlkb.png delete mode 100644 BTPanel/static/img/dep_ico/帝国CMS.png delete mode 100644 BTPanel/static/img/dep_ico/微擎.png create mode 100644 BTPanel/static/img/file_menu_icon.png create mode 100644 BTPanel/static/img/ico-history.png create mode 100644 BTPanel/static/img/soft_ico/ico-openlitespeed.png delete mode 100644 BTPanel/static/js/site - 副本.js create mode 100644 BTPanel/templates/default/down.html create mode 100644 BTPanel/templates/default/license.html create mode 100644 BTPanel/templates/default/tips.html create mode 100644 class/backup_bak.py create mode 100644 class/fastcgi_client.py create mode 100644 class/flask_compress.py create mode 100644 class/http_requests.py create mode 100644 class/monitor.py create mode 100644 class/ols.py create mode 100644 class/panelAes.py create mode 100644 class/panelBackup.py create mode 100644 class/panelPHP.py create mode 100644 class/php_info.php create mode 100644 class/send_mail.py create mode 100644 class/ssh_security.py create mode 100644 class/webshell_check.py create mode 100644 data/file_permissions.db create mode 100644 logs/panel.pid diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..5c98b428 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/aaPanel_github.iml b/.idea/aaPanel_github.iml new file mode 100644 index 00000000..67116063 --- /dev/null +++ b/.idea/aaPanel_github.iml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/deployment.xml b/.idea/deployment.xml new file mode 100644 index 00000000..8a86ecd2 --- /dev/null +++ b/.idea/deployment.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..77404061 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..73267193 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BT-Panel b/BT-Panel index 7ea74f2d..f58d489d 100644 --- a/BT-Panel +++ b/BT-Panel @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/www/server/panel/pyenv/bin/python #coding: utf-8 # +------------------------------------------------------------------- # | 宝塔Linux面板 @@ -7,13 +7,27 @@ # +------------------------------------------------------------------- # | Author: 黄文良 <287962566@qq.com> # +------------------------------------------------------------------- -from gevent import monkey +from gevent import monkey,__version__ as gevent_version monkey.patch_all() -import os,ssl +import os,sys,ssl os.chdir('/www/server/panel') -from BTPanel import app,sys +from BTPanel import app,sys,public if __name__ == '__main__': + pid = os.fork() + if pid: sys.exit(0) + + #os.umask(0) + os.setsid() + + _pid = os.fork() + if _pid: + public.writeFile('logs/panel.pid',str(_pid)) + sys.exit(0) + + sys.stdout.flush() + sys.stderr.flush() + f = open('data/port.pl') PORT = int(f.read()) HOST = '0.0.0.0' @@ -21,21 +35,33 @@ if __name__ == '__main__': HOST = "0:0:0:0:0:0:0:0" f.close() - #app.threaded=True - #app.jinja_env.auto_reload = True - from gevent.pywsgi import WSGIServer from geventwebsocket.handler import WebSocketHandler + is_debug = os.path.exists('data/debug.pl') keyfile = 'ssl/privateKey.pem' certfile = 'ssl/certificate.pem' - if os.path.exists('data/debug.pl'): + is_ssl = False + if os.path.exists('data/ssl.pl') and os.path.exists(keyfile) and os.path.exists(certfile): + is_ssl = True + + if not is_ssl or is_debug: + err_f = open('logs/error.log','a+') + os.dup2(err_f.fileno(),sys.stderr.fileno()) + err_f.close() + + if is_debug: ssl_context = None - if os.path.exists('data/ssl.pl'): ssl_context=(certfile,keyfile) + if is_ssl: ssl_context=(certfile,keyfile) app.run(host=HOST,port=PORT,threaded=True,debug=True,ssl_context=ssl_context) else: - if os.path.exists('data/ssl.pl'): - http_server = WSGIServer((HOST, PORT), app,handler_class=WebSocketHandler,keyfile=keyfile,certfile=certfile,log=None,error_log = None) + if is_ssl: + ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) + ssl_context.load_cert_chain(certfile=certfile,keyfile=keyfile) + ssl_context.options |= (ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3) + ssl_context.set_ciphers("ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE") + http_server = WSGIServer((HOST, PORT), app,handler_class=WebSocketHandler,ssl_context = ssl_context) else: http_server = WSGIServer((HOST, PORT), app,handler_class=WebSocketHandler) + http_server.serve_forever() \ No newline at end of file diff --git a/BT-Task b/BT-Task new file mode 100644 index 00000000..ff0d2a08 --- /dev/null +++ b/BT-Task @@ -0,0 +1,14 @@ +#!/www/server/panel/pyenv/bin/python +#coding: utf-8 +# +------------------------------------------------------------------- +# | 宝塔Linux面板 +# +------------------------------------------------------------------- +# | Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# +------------------------------------------------------------------- +# | Author: 黄文良 <287962566@qq.com> +# +------------------------------------------------------------------- + +import os,sys +os.chdir('/www/server/panel') +import task +task.main() diff --git a/BTPanel/__init__.py b/BTPanel/__init__.py index 2a4167dc..c3976ebf 100644 --- a/BTPanel/__init__.py +++ b/BTPanel/__init__.py @@ -6,23 +6,38 @@ # +------------------------------------------------------------------- # | Author: 黄文良 <287962566@qq.com> # +------------------------------------------------------------------- -import sys,json,os,time,logging,re -if sys.version_info[0] != 2: - from imp import reload -sys.path.insert(0,'/www/server/panel/class/') -sys.setrecursionlimit(1000000) +import sys +import json +import os +import time +import re +import uuid +import threading +os.chdir('/www/server/panel/') +sys.path.insert(0,'class/') import public -from flask import Flask -app = Flask(__name__,template_folder="templates/" + public.GetConfigValue('template')) from flask import Flask,current_app,session,render_template,send_file,request,redirect,g,url_for,make_response,render_template_string,abort - from flask_session import Session -from werkzeug.contrib.cache import SimpleCache + +try: + from werkzeug.contrib.cache import SimpleCache +except: + from cachelib import SimpleCache + from werkzeug.wrappers import Response -from threading import Lock from flask_sockets import Sockets +sys.setrecursionlimit(1000000) +cache = SimpleCache() +from flask_compress import Compress +app = Flask(__name__,template_folder="templates/" + public.GetConfigValue('template')) +Compress(app) sockets = Sockets(app) + +import common +import db +import jobs + dns_client = None app.config['DEBUG'] = os.path.exists('data/debug.pl') @@ -37,9 +52,7 @@ if os.path.exists(basic_auth_conf): app.config['BASIC_AUTH_OPEN'] = ba_conf['open'] except: pass -cache = SimpleCache() -import common,db,jobs,uuid,threading job = threading.Thread(target=jobs.control_init) job.setDaemon(True) job.start() @@ -47,7 +60,7 @@ job.start() app.secret_key = uuid.UUID(int=uuid.getnode()).hex[-12:] local_ip = None my_terms = {} - +sdb = None try: from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////dev/shm/session.db' @@ -89,7 +102,50 @@ cache.set('p_token','bmac_' + public.Md5(public.get_mac_address())) admin_path_file = 'data/admin_path.pl' admin_path = '/' if os.path.exists(admin_path_file): admin_path = public.readFile(admin_path_file).strip() -admin_path_checks = ['/','/san','/bak','/monitor','/abnormal','/close','/task','/login','/config','/site','/sites','ftp','/public','/database','/data','/download_file','/control','/crontab','/firewall','/files','config','/soft','/ajax','/system','/panel_data','/code','/ssl','/plugin','/wxapp','/hook','/safe','/yield','/downloadApi','/pluginApi','/auth','/download','/cloud','/webssh','/connect_event','/panel'] +admin_path_checks = [ + '/', + '/san', + '/bak', + '/monitor', + '/abnormal', + '/close', + '/task', + '/login', + '/config', + '/site', + '/sites', + '/ftp', + '/public', + '/database', + '/data', + '/download_file', + '/control', + '/crontab', + '/firewall', + '/files', + '/soft', + '/ajax', + '/system', + '/panel_data', + '/code', + '/ssl', + '/plugin', + '/wxapp', + '/hook', + '/safe', + '/yield', + '/downloadApi', + '/pluginApi', + '/auth', + '/download', + '/cloud', + '/webssh', + '/connect_event', + '/panel', + '/acme', + '/down', + '/api' + ] if admin_path in admin_path_checks: admin_path = '/bt' @app.route('/service_status',methods = method_get) @@ -100,7 +156,7 @@ def service_status(): def webssh(ws): if not check_login(): session.clear() - emit('server_response',"Panel session is lost, please re-login panel!") + ws.send('server_response',"Panel session is lost, please re-login panel!") return None if not 'ssh_obj' in session: import ssh_terminal @@ -138,7 +194,7 @@ def term_open(): else: if os.path.exists(s_file): os.remove(s_file) if 'ssh_obj' in session: session['ssh_obj']._ssh_info = session['ssh_info'] - return public.returnJson(True,'Successful setup!'); + return public.returnJson(True,'Successful setup!') @app.route('/reload_mod',methods=method_all) def reload_mod(): @@ -154,9 +210,10 @@ def reload_mod(): @app.before_request def request_check(): + if not public.path_safe_check(request.path): return abort(404) if request.path in ['/service_status']: return - if not request.path in ['/safe','/hook','/public','/mail_sys']: + if not request.path in ['/safe','/hook','/public','/mail_sys','/down']: ip_check = public.check_ip_panel() if ip_check: return ip_check @@ -172,14 +229,14 @@ def request_check(): return public.returnJson(False,'This feature is not available in offline mode!'),json_header if app.config['BASIC_AUTH_OPEN']: - if request.path in ['/public','/download','/mail_sys','/hook']: return; + if request.path in ['/public','/download','/mail_sys','/hook','/down','/check_bind','/get_app_bind_status']: return auth = request.authorization - if not comm.get_sk(): return; + if not comm.get_sk(): return if not auth: return send_authenticated() tips = '_bt.cn' - if public.md5(auth.username.strip() + tips) != app.config['BASIC_AUTH_USERNAME'] or public.md5(auth.password.strip() + tips) != app.config['BASIC_AUTH_PASSWORD']: + if public.md5(auth.username.strip() + tips) != app.config['BASIC_AUTH_USERNAME'] \ + or public.md5(auth.password.strip() + tips) != app.config['BASIC_AUTH_PASSWORD']: return send_authenticated() - @app.teardown_request def request_end(reques = None): @@ -199,7 +256,7 @@ def home(): comReturn = comm.local() if comReturn: return comReturn data = {} - data[public.to_string([112, 100])] = get_pd() + data[public.to_string([112, 100])],data['pro_end'],data['ltd_end'] = get_pd() data['siteCount'] = public.M('sites').count() data['ftpCount'] = public.M('ftps').count() data['databaseCount'] = public.M('databases').count() @@ -212,7 +269,7 @@ def home(): def close(): if not os.path.exists('data/close.pl'): return redirect('/') data = {} - data['lan'] = public.getLan('close'); + data['lan'] = public.getLan('close') return render_template('close.html',data=data) route_path = os.path.join(admin_path,'') @@ -225,7 +282,8 @@ def login(): if os.path.exists('install.pl'): return redirect('/install') global admin_check_auth,admin_path,route_path is_auth_path = False - if admin_path != '/bt' and os.path.exists(admin_path_file) and not 'admin_auth' in session: is_auth_path = True + if admin_path != '/bt' and os.path.exists(admin_path_file) and not 'admin_auth' in session: + is_auth_path = True get = get_input() import userlogin if hasattr(get,'tmp_token'): @@ -237,7 +295,7 @@ def login(): if not 'login' in session: return redirect(login_path) if os.path.exists(admin_path_file): login_path = route_path if session['login'] != False: - session['login'] = False; + session['login'] = False cache.set('dologin',True) session.clear() session_path = r'/dev/shm/session_py' + str(sys.version_info[0]) @@ -247,7 +305,7 @@ def login(): if is_auth_path: if route_path != request.path and route_path + '/' != request.path: data = {} - data['lan'] = public.getLan('close'); + data['lan'] = public.getLan('close') return render_template('autherr.html',data=data) session['admin_auth'] = True comReturn = common.panelSetup().init() @@ -264,6 +322,14 @@ def login(): if result: return result data = {} data['lan'] = public.GetLan('login') + data['hosts'] = '[]' + hosts_file = 'plugin/static_cdn/hosts.json' + if os.path.exists(hosts_file): + data['hosts'] = public.get_cdn_hosts() + if type(data['hosts']) == dict: + data['hosts'] = '[]' + else: + data['hosts'] = json.dumps(data['hosts']) return render_template( 'login.html', data=data @@ -284,15 +350,27 @@ def site(pdata = None): if comReturn: return comReturn if request.method == method_get[0] and not pdata: data = {} - data['isSetup'] = True; - data['lan'] = public.getLan('site'); - if os.path.exists(public.GetConfigValue('setup_path')+'/nginx') == False and os.path.exists(public.GetConfigValue('setup_path')+'/apache') == False: data['isSetup'] = False; + data['isSetup'] = True + data['lan'] = public.getLan('site') + if os.path.exists(public.GetConfigValue('setup_path')+'/nginx') == False \ + and os.path.exists(public.GetConfigValue('setup_path')+'/apache') == False \ + and os.path.exists(public.GetConfigValue('openlitespeed_path')+'/lsws') == False: + data['isSetup'] = False return render_template( 'site.html',data=data) import panelSite siteObject = panelSite.panelSite() - defs = ('modify_dir_auth_pass','get_dir_auth','delete_dir_auth','set_dir_auth','GetRedirectFile','SaveRedirectFile','DeleteRedirect','GetRedirectList','CreateRedirect','ModifyRedirect','GetSiteLogs','GetSiteDomains','GetSecurity','SetSecurity','ProxyCache','CloseToHttps','HttpToHttps','SetEdate','SetRewriteTel','GetCheckSafe','CheckSafe','GetDefaultSite','SetDefaultSite','CloseTomcat','SetTomcat','apacheAddPort','AddSite','GetPHPVersion','SetPHPVersion','DeleteSite','AddDomain','DelDomain','GetDirBinding','AddDirBinding','GetDirRewrite','DelDirBinding','get_site_types','add_site_type','remove_site_type','modify_site_type_name','set_site_type','UpdateRulelist','SetSiteRunPath','GetSiteRunPath','SetPath','SetIndex','GetIndex','GetDirUserINI','SetDirUserINI','GetRewriteList','SetSSL','SetSSLConf','CreateLet','CloseSSLConf','GetSSL','SiteStart','SiteStop','Set301Status','Get301Status','CloseLimitNet','SetLimitNet','GetLimitNet','RemoveProxy','GetProxyList','GetProxyDetals','CreateProxy','ModifyProxy','GetProxyFile','SaveProxyFile','ToBackup','DelBackup','GetSitePHPVersion','logsOpen','GetLogsStatus','CloseHasPwd','SetHasPwd','GetHasPwd','GetDnsApi','SetDnsApi') - return publicObject(siteObject,defs,None,pdata); + defs = ('get_site_domains','GetRedirectFile','SaveRedirectFile','DeleteRedirect','GetRedirectList','CreateRedirect','ModifyRedirect', + 'set_dir_auth','delete_dir_auth','get_dir_auth','modify_dir_auth_pass', + 'GetSiteLogs','GetSiteDomains','GetSecurity','SetSecurity','ProxyCache','CloseToHttps','HttpToHttps','SetEdate', + 'SetRewriteTel','GetCheckSafe','CheckSafe','GetDefaultSite','SetDefaultSite','CloseTomcat','SetTomcat','apacheAddPort', + 'AddSite','GetPHPVersion','SetPHPVersion','DeleteSite','AddDomain','DelDomain','GetDirBinding','AddDirBinding','GetDirRewrite', + 'DelDirBinding','get_site_types','add_site_type','remove_site_type','modify_site_type_name','set_site_type','UpdateRulelist', + 'SetSiteRunPath','GetSiteRunPath','SetPath','SetIndex','GetIndex','GetDirUserINI','SetDirUserINI','GetRewriteList','SetSSL', + 'SetSSLConf','CreateLet','CloseSSLConf','GetSSL','SiteStart','SiteStop','Set301Status','Get301Status','CloseLimitNet','SetLimitNet', + 'GetLimitNet','RemoveProxy','GetProxyList','GetProxyDetals','CreateProxy','ModifyProxy','GetProxyFile','SaveProxyFile','ToBackup', + 'DelBackup','GetSitePHPVersion','logsOpen','GetLogsStatus','CloseHasPwd','SetHasPwd','GetHasPwd','GetDnsApi','SetDnsApi') + return publicObject(siteObject,defs,None,pdata) @app.route('/ftp',methods=method_all) def ftp(pdata = None): @@ -301,14 +379,14 @@ def ftp(pdata = None): if request.method == method_get[0] and not pdata: FtpPort() data = {} - data['isSetup'] = True; - if os.path.exists(public.GetConfigValue('setup_path') + '/pure-ftpd') == False: data['isSetup'] = False; + data['isSetup'] = True + if os.path.exists(public.GetConfigValue('setup_path') + '/pure-ftpd') == False: data['isSetup'] = False data['lan'] = public.GetLan('ftp') return render_template('ftp.html',data=data) import ftp ftpObject = ftp.ftp() defs = ('AddUser','DeleteUser','SetUserPassword','SetStatus','setPort') - return publicObject(ftpObject,defs,None,pdata); + return publicObject(ftpObject,defs,None,pdata) #取端口 def FtpPort(): @@ -325,46 +403,49 @@ def FtpPort(): @app.route('/database',methods=method_all) def database(pdata = None): - import ajax comReturn = comm.local() if comReturn: return comReturn if request.method == method_get[0] and not pdata: - pmd = get_phpmyadmin_dir(); + import ajax + pmd = get_phpmyadmin_dir() session['phpmyadminDir'] = False if pmd: session['phpmyadminDir'] = 'http://' + public.GetHost() + ':'+ pmd[1] + '/' + pmd[0] ajax.ajax().set_phpmyadmin_session() data = {} - data['isSetup'] = os.path.exists(public.GetConfigValue('setup_path') + '/mysql/bin'); - data['mysql_root'] = public.M('config').where('id=?',(1,)).getField('mysql_root'); + data['isSetup'] = os.path.exists(public.GetConfigValue('setup_path') + '/mysql/bin') + data['mysql_root'] = public.M('config').where('id=?',(1,)).getField('mysql_root') data['lan'] = public.GetLan('database') return render_template('database.html',data=data) import database databaseObject = database.database() - defs = ('GetdataInfo','GetInfo','ReTable','OpTable','AlTable','GetSlowLogs','GetRunStatus','SetDbConf','GetDbStatus','BinLog','GetErrorLog','GetMySQLInfo','SetDataDir','SetMySQLPort','AddDatabase','DeleteDatabase','SetupPassword','ResDatabasePassword','ToBackup','DelBackup','InputSql','SyncToDatabases','SyncGetDatabases','GetDatabaseAccess','SetDatabaseAccess') - return publicObject(databaseObject,defs,None,pdata); + defs = ('check_mysql_ssl_status','write_ssl_to_mysql','GetdataInfo','GetInfo','ReTable','OpTable','AlTable','GetSlowLogs','GetRunStatus', + 'SetDbConf','GetDbStatus','BinLog','GetErrorLog','GetMySQLInfo','SetDataDir','SetMySQLPort', + 'AddDatabase','DeleteDatabase','SetupPassword','ResDatabasePassword','ToBackup','DelBackup', + 'InputSql','SyncToDatabases','SyncGetDatabases','GetDatabaseAccess','SetDatabaseAccess') + return publicObject(databaseObject,defs,None,pdata) def get_phpmyadmin_dir(): path = public.GetConfigValue('setup_path') + '/phpmyadmin' if not os.path.exists(path): return None - phpport = '888'; + phpport = '888' try: import re; if session['webserver'] == 'nginx': - filename =public.GetConfigValue('setup_path') + '/nginx/conf/nginx.conf'; - conf = public.readFile(filename); - rep = "listen\s+([0-9]+)\s*;"; - rtmp = re.search(rep,conf); + filename =public.GetConfigValue('setup_path') + '/nginx/conf/nginx.conf' + conf = public.readFile(filename) + rep = "listen\s+([0-9]+)\s*;" + rtmp = re.search(rep,conf) if rtmp: - phpport = rtmp.groups()[0]; + phpport = rtmp.groups()[0] else: - filename = public.GetConfigValue('setup_path') + '/apache/conf/extra/httpd-vhosts.conf'; - conf = public.readFile(filename); - rep = "Listen\s+([0-9]+)\s*\n"; - rtmp = re.search(rep,conf); + filename = public.GetConfigValue('setup_path') + '/apache/conf/extra/httpd-vhosts.conf' + conf = public.readFile(filename) + rep = "Listen\s+([0-9]+)\s*\n" + rtmp = re.search(rep,conf) if rtmp: - phpport = rtmp.groups()[0]; + phpport = rtmp.groups()[0] except: pass @@ -375,6 +456,37 @@ def get_phpmyadmin_dir(): return str(filename),phpport return None +@app.route('/acme',methods=method_all) +def acme(pdata = None): + comReturn = comm.local() + if comReturn: return comReturn + import acme_v2 + acme_v2_object = acme_v2.acme_v2() + defs = ('get_orders','remove_order','get_order_find','revoke_order','create_order','get_account_info','set_account_info','update_zip','get_cert_init_api', + 'get_auths','auth_domain','check_auth_status','download_cert','apply_cert','renew_cert','apply_cert_api','apply_dns_auth') + return publicObject(acme_v2_object,defs,None,pdata) + +@app.route('/api',methods=method_all) +def api(pdata = None): + comReturn = comm.local() + if comReturn: return comReturn + import panelApi + api_object = panelApi.panelApi() + defs = ('get_token','check_bind','get_bind_status','get_apps','add_bind_app','remove_bind_app','set_token','get_tmp_token','get_app_bind_status') + return publicObject(api_object,defs,None,pdata) + +@app.route('/get_app_bind_status',methods=method_all) +def get_app_bind_status(pdata = None): + import panelApi + api_object = panelApi.panelApi() + return json.dumps(api_object.get_app_bind_status(get_input())),json_header + +@app.route('/check_bind',methods=method_all) +def check_bind(pdata = None): + import panelApi + api_object = panelApi.panelApi() + return json.dumps(api_object.check_bind(get_input())),json_header + @app.route('/control',methods=method_all) def control(pdata = None): comReturn = comm.local() @@ -394,8 +506,24 @@ def firewall(pdata = None): return render_template( 'firewall.html',data=data) import firewalls firewallObject = firewalls.firewalls() - defs = ('GetList','AddDropAddress','DelDropAddress','FirewallReload','SetFirewallStatus','AddAcceptPort','DelAcceptPort','SetSshStatus','SetPing','SetSshPort','GetSshInfo') - return publicObject(firewallObject,defs,None,pdata); + defs = ('GetList','AddDropAddress','DelDropAddress','FirewallReload','SetFirewallStatus', + 'AddAcceptPort','DelAcceptPort','SetSshStatus','SetPing','SetSshPort','GetSshInfo') + return publicObject(firewallObject,defs,None,pdata) + +@app.route('/ssh_security',methods=method_all) +def ssh_security(pdata = None): + comReturn = comm.local() + if comReturn: return comReturn + if request.method == method_get[0] and not pdata: + data = {} + data['lan'] = public.GetLan('firewall') + return render_template( 'firewall.html',data=data) + import ssh_security + firewallObject = ssh_security.ssh_security() + defs = ('get_logs','san_ssh_security','set_password','set_sshkey','stop_key','get_config', + 'stop_password','get_key','return_ip','add_return_ip','del_return_ip','start_jian','stop_jian','get_jian') + return publicObject(firewallObject,defs,None,pdata) + @app.route('/firewall_new',methods=method_all) def firewall_new(pdata = None): @@ -407,8 +535,11 @@ def firewall_new(pdata = None): return render_template( 'firewall_new.html',data=data) import firewall_new firewallObject = firewall_new.firewalls() - defs = ('GetList','AddDropAddress','DelDropAddress','FirewallReload','SetFirewallStatus','AddAcceptPort','DelAcceptPort','SetSshStatus','SetPing','SetSshPort','GetSshInfo','AddSpecifiesIp','DelSpecifiesIp') - return publicObject(firewallObject,defs,None,pdata); + defs = ('GetList','AddDropAddress','DelDropAddress','FirewallReload','SetFirewallStatus', + 'AddAcceptPort','DelAcceptPort','SetSshStatus','SetPing','SetSshPort','GetSshInfo', + 'AddSpecifiesIp','DelSpecifiesIp' + ) + return publicObject(firewallObject,defs,None,pdata) @app.route('/monitor', methods=method_all) @@ -436,7 +567,10 @@ def panel_password(pdata=None): if comReturn: return comReturn import password dataObject = password.password() - defs = ('set_root_password', 'get_mysql_root', 'set_mysql_password', 'set_panel_password', 'SetPassword', 'SetSshKey','StopKey','GetConfig','StopPassword','GetKey','get_databses','rem_mysql_pass','set_mysql_access',"get_panel_username") + defs = ('set_root_password', 'get_mysql_root', 'set_mysql_password', 'set_panel_password', + 'SetPassword', 'SetSshKey','StopKey','GetConfig','StopPassword','GetKey', + 'get_databses','rem_mysql_pass','set_mysql_access',"get_panel_username" + ) return publicObject(dataObject, defs, None, pdata) @@ -447,7 +581,9 @@ def backup_bak(pdata=None): import backup_bak dataObject = backup_bak.backup_bak() defs = ('get_sites', 'get_databases', 'backup_database', 'backup_site', 'backup_path', 'get_database_progress', - 'get_site_progress', 'down','get_down_progress','download_path','backup_site_all','get_all_site_progress','backup_date_all','get_all_date_progress') + 'get_site_progress', 'down','get_down_progress','download_path','backup_site_all','get_all_site_progress', + 'backup_date_all','get_all_date_progress' + ) return publicObject(dataObject, defs, None, pdata) @@ -457,7 +593,9 @@ def abnormal(pdata=None): if comReturn: return comReturn import abnormal dataObject = abnormal.abnormal() - defs = ('mysql_server', 'mysql_cpu', 'mysql_count', 'php_server', 'php_conn_max', 'php_cpu', 'CPU', 'Memory', 'disk', 'not_root_user', 'start') + defs = ('mysql_server', 'mysql_cpu', 'mysql_count', 'php_server', 'php_conn_max', + 'php_cpu', 'CPU', 'Memory', 'disk', 'not_root_user', 'start' + ) return publicObject(dataObject, defs, None, pdata) @app.route('/files',methods=method_all) @@ -470,12 +608,17 @@ def files(pdata = None): return render_template('files.html',data=data) import files filesObject = files.files() - defs = ('CheckExistsFiles','GetExecLog','GetSearch','ExecShell','GetExecShellMsg','UploadFile','GetDir','CreateFile','CreateDir','DeleteDir','DeleteFile', - 'CopyFile','CopyDir','MvFile','GetFileBody','SaveFileBody','Zip','UnZip','SearchFiles','upload','read_history', + defs = ('fix_permissions','get_all_back','restore_path_permissions','del_path_premissions','get_path_premissions','back_path_permissions', + 'CheckExistsFiles','GetExecLog','GetSearch','ExecShell','GetExecShellMsg','exec_git','exec_composer','create_download_url', + 'UploadFile','GetDir','CreateFile','CreateDir','DeleteDir','DeleteFile','get_download_url_list','remove_download_url','modify_download_url', + 'CopyFile','CopyDir','MvFile','GetFileBody','SaveFileBody','Zip','UnZip','get_download_url_find', + 'SearchFiles','upload','read_history','re_history','auto_save_temp','get_auto_save_body', 'GetFileAccess','SetFileAccess','GetDirSize','SetBatchData','BatchPaste','install_rar','get_path_size', - 'DownloadFile','GetTaskSpeed','CloseLogs','InstallSoft','UninstallSoft','SaveTmpFile','GetTmpFile','del_files_store','add_files_store','get_files_store','del_files_store_types','add_files_store_types', - 'RemoveTask','ActionTask','Re_Recycle_bin','Get_Recycle_bin','Del_Recycle_bin','Close_Recycle_bin','Recycle_bin') - return publicObject(filesObject,defs,None,pdata); + 'DownloadFile','GetTaskSpeed','CloseLogs','InstallSoft','UninstallSoft','SaveTmpFile','get_composer_version','exec_composer','update_composer', + 'GetTmpFile','del_files_store','add_files_store','get_files_store','del_files_store_types','add_files_store_types','exec_git', + 'RemoveTask','ActionTask','Re_Recycle_bin','Get_Recycle_bin','Del_Recycle_bin','Close_Recycle_bin','Recycle_bin','file_webshell_check','dir_webshell_check' + ) + return publicObject(filesObject,defs,None,pdata) @app.route('/crontab',methods=method_all) @@ -488,8 +631,10 @@ def crontab(pdata = None): return render_template( 'crontab.html',data=data) import crontab crontabObject = crontab.crontab() - defs = ('GetCrontab','AddCrontab','GetDataList','GetLogs','DelLogs','DelCrontab','StartTask','set_cron_status','get_crond_find','modify_crond') - return publicObject(crontabObject,defs,None,pdata); + defs = ('GetCrontab','AddCrontab','GetDataList','GetLogs','DelLogs','DelCrontab', + 'StartTask','set_cron_status','get_crond_find','modify_crond' + ) + return publicObject(crontabObject,defs,None,pdata) @app.route('/soft',methods=method_all) def soft(pdata = None): @@ -512,9 +657,9 @@ def config(pdata = None): try: data['wx'] = wxapp.wxapp().get_user_info(None)['msg'] except: - data['wx'] = '当前未绑定微信号' + data['wx'] = 'INIT_WX_NOT_BIND' data['api'] = '' - data['ipv6'] = ''; + data['ipv6'] = '' sess_out_path = 'data/session_timeout.pl' if not os.path.exists(sess_out_path): public.writeFile(sess_out_path,'86400') workers_p = 'data/workers.pl' @@ -534,8 +679,21 @@ def config(pdata = None): if public.is_local(): data['is_local'] = 'checked' return render_template( 'config.html',data=data) import config - defs = ('set_coll_open','get_qrcode_data','check_two_step','set_two_step_auth','get_key','get_php_session_path','set_php_session_path','get_cert_source','set_local','set_debug','get_panel_error_logs','clean_panel_error_logs','get_basic_auth_stat','set_basic_auth','get_cli_php_version','get_tmp_token','set_cli_php_version','DelOldSession', 'GetSessionCount', 'SetSessionConf', 'GetSessionConf','get_ipv6_listen','set_ipv6_status','GetApacheValue','SetApacheValue','GetNginxValue','SetNginxValue','get_token','set_token','set_admin_path','is_pro','get_php_config','get_config','SavePanelSSL','GetPanelSSL','GetPHPConf','SetPHPConf','GetPanelList','AddPanelInfo','SetPanelInfo','DelPanelInfo','ClickPanelInfo','SetPanelSSL','SetTemplates','Set502','setPassword','setUsername','setPanel','setPathInfo','setPHPMaxSize','getFpmConfig','setFpmConfig','setPHPMaxTime','syncDate','setPHPDisable','SetControl','ClosePanel','AutoUpdatePanel','SetPanelLock') - return publicObject(config.config(),defs,None,pdata); + defs = ('get_ols_private_cache_status','get_ols_value','set_ols_value','get_ols_private_cache','get_ols_static_cache','set_ols_static_cache','switch_ols_private_cache','set_ols_private_cache', + 'set_coll_open','get_qrcode_data','check_two_step','set_two_step_auth','create_user','remove_user','modify_user', + 'get_key','get_php_session_path','set_php_session_path','get_cert_source','get_users', + 'set_local','set_debug','get_panel_error_logs','clean_panel_error_logs', + 'get_basic_auth_stat','set_basic_auth','get_cli_php_version','get_tmp_token', + 'set_cli_php_version','DelOldSession', 'GetSessionCount', 'SetSessionConf', + 'GetSessionConf','get_ipv6_listen','set_ipv6_status','GetApacheValue','SetApacheValue', + 'GetNginxValue','SetNginxValue','get_token','set_token','set_admin_path','is_pro', + 'get_php_config','get_config','SavePanelSSL','GetPanelSSL','GetPHPConf','SetPHPConf', + 'GetPanelList','AddPanelInfo','SetPanelInfo','DelPanelInfo','ClickPanelInfo','SetPanelSSL', + 'SetTemplates','Set502','setPassword','setUsername','setPanel','setPathInfo','setPHPMaxSize', + 'getFpmConfig','setFpmConfig','setPHPMaxTime','syncDate','setPHPDisable','SetControl', + 'ClosePanel','AutoUpdatePanel','SetPanelLock','return_mail_list','del_mail_list','add_mail_address','user_mail_send','get_user_mail','set_dingding','get_dingding','get_settings','user_stmp_mail_send','user_dingding_send' + ) + return publicObject(config.config(),defs,None,pdata) @app.route('/ajax',methods=method_all) def ajax(pdata = None): @@ -543,8 +701,16 @@ def ajax(pdata = None): if comReturn: return comReturn import ajax ajaxObject = ajax.ajax() - defs = ('change_phpmyadmin_ssl_port','set_phpmyadmin_ssl','get_phpmyadmin_ssl','check_user_auth','to_not_beta','get_beta_logs','apple_beta','GetApacheStatus','GetCloudHtml','get_load_average','GetOpeLogs','GetFpmLogs','GetFpmSlowLogs','SetMemcachedCache','GetMemcachedStatus','GetRedisStatus','GetWarning','SetWarning','CheckLogin','GetSpeed','GetAd','phpSort','ToPunycode','GetBetaStatus','SetBeta','setPHPMyAdmin','delClose','KillProcess','GetPHPInfo','GetQiniuFileList','UninstallLib','InstallLib','SetQiniuAS','GetQiniuAS','GetLibList','GetProcessList','GetNetWorkList','GetNginxStatus','GetPHPStatus','GetTaskCount','GetSoftList','GetNetWorkIo','GetDiskIo','GetCpuIo','CheckInstalled','UpdatePanel','GetInstalled','GetPHPConfig','SetPHPConfig') - return publicObject(ajaxObject,defs,None,pdata); + defs = ('get_lines','php_info','change_phpmyadmin_ssl_port','set_phpmyadmin_ssl','get_phpmyadmin_ssl', + 'check_user_auth','to_not_beta','get_beta_logs','apple_beta','GetApacheStatus','GetCloudHtml', + 'get_load_average','GetOpeLogs','GetFpmLogs','GetFpmSlowLogs','SetMemcachedCache','GetMemcachedStatus', + 'GetRedisStatus','GetWarning','SetWarning','CheckLogin','GetSpeed','GetAd','phpSort','ToPunycode', + 'GetBetaStatus','SetBeta','setPHPMyAdmin','delClose','KillProcess','GetPHPInfo','GetQiniuFileList', + 'UninstallLib','InstallLib','SetQiniuAS','GetQiniuAS','GetLibList','GetProcessList','GetNetWorkList', + 'GetNginxStatus','GetPHPStatus','GetTaskCount','GetSoftList','GetNetWorkIo','GetDiskIo','GetCpuIo', + 'CheckInstalled','UpdatePanel','GetInstalled','GetPHPConfig','SetPHPConfig') + + return publicObject(ajaxObject,defs,None,pdata) @app.route('/system',methods=method_all) def system(pdata = None): @@ -552,8 +718,10 @@ def system(pdata = None): if comReturn: return comReturn import system sysObject = system.system() - defs = ('get_io_info','UpdatePro','GetAllInfo','GetNetWorkApi','GetLoadAverage','ClearSystem','GetNetWorkOld','GetNetWork','GetDiskInfo','GetCpuInfo','GetBootTime','GetSystemVersion','GetMemInfo','GetSystemTotal','GetConcifInfo','ServiceAdmin','ReWeb','RestartServer','ReMemory','RepPanel') - return publicObject(sysObject,defs,None,pdata); + defs = ('get_io_info','UpdatePro','GetAllInfo','GetNetWorkApi','GetLoadAverage','ClearSystem', + 'GetNetWorkOld','GetNetWork','GetDiskInfo','GetCpuInfo','GetBootTime','GetSystemVersion', + 'GetMemInfo','GetSystemTotal','GetConcifInfo','ServiceAdmin','ReWeb','RestartServer','ReMemory','RepPanel') + return publicObject(sysObject,defs,None,pdata) @app.route('/deployment',methods=method_all) def deployment(pdata = None): @@ -562,7 +730,7 @@ def deployment(pdata = None): import plugin_deployment sysObject = plugin_deployment.plugin_deployment() defs = ('GetList','AddPackage','DelPackage','SetupPackage','GetSpeed','GetPackageOther') - return publicObject(sysObject,defs,None,pdata); + return publicObject(sysObject,defs,None,pdata) @app.route('/data',methods=method_all) @app.route('/panel_data',methods=method_all) @@ -572,7 +740,7 @@ def panel_data(pdata = None): import data dataObject = data.data() defs = ('setPs','getData','getFind','getKey') - return publicObject(dataObject,defs,None,pdata); + return publicObject(dataObject,defs,None,pdata) @app.route('/code') @@ -583,21 +751,21 @@ def code(): public.ExecShell("pip install Pillow==5.4.1 -I") return "Pillow not install!" code_time = cache.get('codeOut') - if code_time: return u'Error: Don\'t request validation codes frequently'; - vie = vilidate.vieCode(); - codeImage = vie.GetCodeImage(80,4); + if code_time: return u'Error: Don\'t request validation codes frequently' + vie = vilidate.vieCode() + codeImage = vie.GetCodeImage(80,4) if sys.version_info[0] == 2: try: from cStringIO import StringIO except: from StringIO import StringIO - out = StringIO(); + out = StringIO() else: from io import BytesIO - out = BytesIO(); + out = BytesIO() codeImage[0].save(out, "png") cache.set("codeStr",public.md5("".join(codeImage[1]).lower()),180) - cache.set("codeOut",1,0.1); + cache.set("codeOut",1,0.1) out.seek(0) return send_file(out, mimetype='image/png', cache_timeout=0) @@ -608,9 +776,11 @@ def ssl(pdata = None): if comReturn: return comReturn import panelSSL toObject = panelSSL.panelSSL() - defs = ('RemoveCert','renew_lets_ssl','SetCertToSite','GetCertList','SaveCert','GetCert','GetCertName','DelToken','GetToken','GetUserInfo','GetOrderList','GetDVSSL','Completed','SyncOrder','GetSSLInfo','downloadCRT','GetSSLProduct','Renew_SSL','Get_Renew_SSL') - result = publicObject(toObject,defs,None,pdata); - return result; + defs = ('RemoveCert','renew_lets_ssl','SetCertToSite','GetCertList','SaveCert','GetCert','GetCertName', + 'DelToken','GetToken','GetUserInfo','GetOrderList','GetDVSSL','Completed','SyncOrder', + 'GetSSLInfo','downloadCRT','GetSSLProduct','Renew_SSL','Get_Renew_SSL') + result = publicObject(toObject,defs,None,pdata) + return result @app.route('/task',methods=method_all) def task(pdata = None): @@ -619,8 +789,8 @@ def task(pdata = None): import panelTask toObject = panelTask.bt_task() defs = ('get_task_lists','remove_task','get_task_find') - result = publicObject(toObject,defs,None,pdata); - return result; + result = publicObject(toObject,defs,None,pdata) + return result @app.route('/plugin',methods=method_all) def plugin(pdata = None): @@ -628,15 +798,16 @@ def plugin(pdata = None): if comReturn: return comReturn import panelPlugin pluginObject = panelPlugin.panelPlugin() - defs = ('set_score','get_score','update_zip','input_zip','export_zip','add_index','remove_index','sort_index','install_plugin','uninstall_plugin','get_soft_find','get_index_list','get_soft_list','get_cloud_list','check_deps','flush_cache','GetCloudWarning','install','unInstall','getPluginList','getPluginInfo','getPluginStatus','setPluginStatus','a','getCloudPlugin','getConfigHtml','savePluginSort') - return publicObject(pluginObject,defs,None,pdata); - - + defs = ('check_install_limit','set_score','get_score','update_zip','input_zip','export_zip','add_index','remove_index','sort_index', + 'install_plugin','uninstall_plugin','get_soft_find','get_index_list','get_soft_list','get_cloud_list', + 'check_deps','flush_cache','GetCloudWarning','install','unInstall','getPluginList','getPluginInfo','get_make_args','add_make_args', + 'getPluginStatus','setPluginStatus','a','getCloudPlugin','getConfigHtml','savePluginSort','del_make_args','set_make_args') + return publicObject(pluginObject,defs,None,pdata) @app.route('/public',methods=method_all) def panel_public(): - get = get_input(); - get.client_ip = public.GetClientIp(); + get = get_input() + get.client_ip = public.GetClientIp() if not hasattr(get,'name'): get.name = '' if not hasattr(get,'fun'): return abort(404) if not public.path_safe_check("%s/%s" % (get.name,get.fun)): return abort(404) @@ -652,7 +823,8 @@ def panel_public(): #检查是否验证过安全入口 if get.fun in ['login_qrcode','is_scan_ok']: global admin_check_auth,admin_path,route_path,admin_path_file - if admin_path != '/bt' and os.path.exists(admin_path_file) and not 'admin_auth' in session: return 'False' + if admin_path != '/bt' and os.path.exists(admin_path_file) and not 'admin_auth' in session: + return 'False' import wxapp pluwx = wxapp.wxapp() checks = pluwx._check(get) @@ -663,7 +835,7 @@ def panel_public(): if get.name != 'app': return abort(404) import panelPlugin plu = panelPlugin.panelPlugin() - get.s = '_check'; + get.s = '_check' checks = plu.a(get) if type(checks) != bool or not checks: return public.getJson(checks),json_header get.s = get.fun @@ -672,7 +844,7 @@ def panel_public(): comm.checkWebType() comm.GetOS() result = plu.a(get) - session.clear() + #session.clear() return public.getJson(result),json_header @app.route('/favicon.ico',methods=method_get) @@ -687,6 +859,10 @@ def send_favicon(): @app.route('//',methods=method_all) @app.route('///',methods=method_all) def panel_other(name=None,fun = None,stype=None): + if name != "mail_sys" or fun != "send_mail_http.json": + comReturn = comm.local() + if comReturn: return comReturn + is_accept = False if not fun: fun = 'index.html' if not stype: @@ -695,11 +871,7 @@ def panel_other(name=None,fun = None,stype=None): if len(tmp) == 1: tmp.append('') stype = tmp[1] - if not name in ['mail_sys'] or not fun in ['send_mail_http']: - comReturn = comm.local() - if comReturn: return comReturn - else: - is_accept = True + if not name: name = 'coll' if not public.path_safe_check("%s/%s/%s" % (name,fun,stype)): return abort(404) if name.find('./') != -1 or not re.match("^[\w-]+$",name): return abort(404) @@ -718,15 +890,15 @@ def panel_other(name=None,fun = None,stype=None): return send_file(s_file,conditional=True,add_etags=True) #准备参数 - args = get_input(); - args.client_ip = public.GetClientIp(); + args = get_input() + args.client_ip = public.GetClientIp() args.fun = fun #初始化插件对象 try: is_php = os.path.exists(p_path + '/index.php') if not is_php: - sys.path.append(p_path); + sys.path.append(p_path) plugin_main = __import__(name+'_main') try: if sys.version_info[0] == 2: @@ -736,14 +908,15 @@ def panel_other(name=None,fun = None,stype=None): reload(plugin_main) except:pass plu = eval('plugin_main.' + name + '_main()') - if not hasattr(plu,fun): return public.returnJson(False,'SPECIFY_METHOD'),json_header - + if not hasattr(plu,fun): + return public.returnJson(False,'PLUGIN_NOT_FUN'),json_header #执行插件方法 if not is_php: if is_accept: checks = plu._check(args) - if type(checks) != bool or not checks: return public.getJson(checks),json_header + if type(checks) != bool or not checks: + return public.getJson(checks),json_header data = eval('plu.'+fun+'(args)') else: import panelPHP @@ -760,7 +933,8 @@ def panel_other(name=None,fun = None,stype=None): elif stype == 'html': #使用模板 t_path_root = p_path + '/templates/' t_path = t_path_root + fun + '.html' - if not os.path.exists(t_path): return public.returnJson(False,public.GetMsg("SPECIFY_TEMPLATE")), json_header + if not os.path.exists(t_path): + return public.returnJson(False,'PLUGIN_NOT_TEMPLATE'),json_header t_body = public.readFile(t_path) #处理模板包含 @@ -776,7 +950,8 @@ def panel_other(name=None,fun = None,stype=None): return render_template_string(t_body,data = data) else: #直接响应插件返回值,可以是任意flask支持的响应类型 r_type = type(data) - if r_type == dict: return public.returnJson(False,public.GetMsg("RETURN_TYPE_ERR") + '[%s]' % r_type), json_header + if r_type == dict: + return public.returnJson(False,public.getMsg('PUBLIC_ERR_RETURN').format(r_type)),json_header return data except: error_info = public.get_error_info() @@ -792,56 +967,33 @@ def panel_wxapp(pdata = None): import wxapp toObject = wxapp.wxapp() defs = ('blind','get_safe_log','blind_result','get_user_info','blind_del','blind_qrcode') - result = publicObject(toObject,defs,None,pdata); - return result; + result = publicObject(toObject,defs,None,pdata) + return result @app.route('/hook',methods=method_all) def panel_hook(): get = get_input() - if not os.path.exists('plugin/webhook'): return public.getJson(public.returnMsg(False,'INIT_WEBHOOK_ERR')); - sys.path.append('plugin/webhook'); + if not os.path.exists('plugin/webhook'): + return public.getJson(public.returnMsg(False,'INIT_WEBHOOK_ERR')) + sys.path.append('plugin/webhook') import webhook_main session.clear() - return public.getJson(webhook_main.webhook_main().RunHook(get)); - -@app.route('/safe',methods=method_all) -def panel_safe(): - get = get_input() - pluginPath = 'plugin/safelogin'; - if hasattr(get,'check'): - if os.path.exists(pluginPath + '/safelogin_main.py'): return 'True'; - return 'False'; - get.data = check_token(get.data); - if not get.data: return public.returnJson(False,'INIT_CHECK_ERR'); - comm.setSession() - comm.init() - comm.checkWebType() - comm.GetOS() - sys.path.append(pluginPath); - import safelogin_main; - reload(safelogin_main); - s = safelogin_main.safelogin_main(); - if not hasattr(s,get.data['action']): return public.returnJson(False,'INIT_FUN_NOT_EXISTS'); - defs = ('GetServerInfo','add_ssh_limit','remove_ssh_limit','get_ssh_limit','get_login_log','get_panel_limit','add_panel_limit','remove_panel_limit','close_ssh_limit','close_panel_limit','get_system_info','get_service_info','get_ssh_errorlogin') - if not get.data['action'] in defs: return 'False'; - result = public.getJson(eval('s.' + get.data['action'] + '(get)')); - session.clear() - return result - + return public.getJson(webhook_main.webhook_main().RunHook(get)) @app.route('/install',methods=method_all) def install(): if public.M('config').where("id=?",('1',)).getField('status') == 1: - if os.path.exists('install.pl'): os.remove('install.pl'); + if os.path.exists('install.pl'): os.remove('install.pl') session.clear() return redirect('/login') ret_login = os.path.join('/',admin_path) if admin_path == '/' or admin_path == '/bt': ret_login = '/login' - + session['admin_path'] = False + session['login'] = False if request.method == method_get[0]: if not os.path.exists('install.pl'): return redirect(ret_login) data = {} - data['status'] = os.path.exists('install.pl'); + data['status'] = os.path.exists('install.pl') data['username'] = public.GetRandomString(8).lower() return render_template( 'install.html',data = data) @@ -854,29 +1006,29 @@ def install(): if not get.bt_password1: return public.GetMsg("LOGIN_USER_EMPTY") if get.bt_password1 != get.bt_password2: return public.GetMsg("USER_PASSWORD_CHECK") public.M('users').where("id=?",(1,)).save('username,password',(get.bt_username,public.md5(get.bt_password1.strip()))) - os.remove('install.pl'); - public.M('config').where("id=?",('1',)).setField('status',1); + os.remove('install.pl') + public.M('config').where("id=?",('1',)).setField('status',1) data = {} - data['status'] = os.path.exists('install.pl'); - data['username'] = get.bt_username; + data['status'] = os.path.exists('install.pl') + data['username'] = get.bt_username return render_template( 'install.html',data = data) #检查Token def check_token(data): - pluginPath = 'plugin/safelogin/token.pl'; - if not os.path.exists(pluginPath): return False; - from urllib import unquote; - from binascii import unhexlify; - from json import loads; + pluginPath = 'plugin/safelogin/token.pl' + if not os.path.exists(pluginPath): return False + from urllib import unquote + from binascii import unhexlify + from json import loads - result = unquote(unhexlify(data)); - token = public.readFile(pluginPath).strip(); + result = unquote(unhexlify(data)) + token = public.readFile(pluginPath).strip() - result = loads(result); - if not result: return False; - if result['token'] != token: return False; - return result; + result = loads(result) + if not result: return False + if result['token'] != token: return False + return result @app.route('/auth',methods=method_all) @@ -885,9 +1037,15 @@ def auth(pdata = None): if comReturn: return comReturn import panelAuth toObject = panelAuth.panelAuth() - defs = ('get_re_order_status_plugin','create_plugin_other_order','get_order_stat','get_voucher_plugin','create_order_voucher_plugin','get_product_discount_by','get_re_order_status','create_order_voucher','create_order','get_order_status','get_voucher','flush_pay_status','create_serverid','check_serverid','get_plugin_list','check_plugin','get_buy_code','check_pay_status','get_renew_code','check_renew_code','get_business_plugin','get_ad_list','check_plugin_end','get_plugin_price') - result = publicObject(toObject,defs,None,pdata); - return result; + defs = ('get_re_order_status_plugin','create_plugin_other_order','get_order_stat', + 'get_voucher_plugin','create_order_voucher_plugin','get_product_discount_by', + 'get_re_order_status','create_order_voucher','create_order','get_order_status', + 'get_voucher','flush_pay_status','create_serverid','check_serverid', + 'get_plugin_list','check_plugin','get_buy_code','check_pay_status', + 'get_renew_code','check_renew_code','get_business_plugin', + 'get_ad_list','check_plugin_end','get_plugin_price') + result = publicObject(toObject,defs,None,pdata) + return result @app.route('/robots.txt',methods=method_all) @@ -909,15 +1067,56 @@ def download(): mimetype = "application/octet-stream" extName = filename.split('.')[-1] if extName in ['png','gif','jpeg','jpg']: mimetype = None - #if extName in ['mp4','avi']: mimetype = 'multipart/x-mixed-replace' - return send_file(filename,mimetype=mimetype, as_attachment=True,attachment_filename=os.path.basename(filename),cache_timeout=0) + return send_file(filename,mimetype=mimetype, + as_attachment=True, + attachment_filename=os.path.basename(filename), + cache_timeout=0) + +@app.route('/down/',methods=method_all) +def down(token=None,mdown=None): + try: + if not token: return abort(404) + if len(token) != 12: return abort(404) + if not re.match(r"^\w+$",token): return abort(404) + find = public.M('download_token').where('token=?',(token,)).find() + if not find: return abort(404) + if time.time() > int(find['expire']): return abort(404) + if not os.path.exists(find['filename']): return abort(404) + if find['password']: + args = get_input() + if 'file_password' in args: + if not re.match(r"^\w+$",args.file_password): + return public.ReturnJson(False,'wrong password!'),json_header + if not args.file_password == find['password']: + return public.ReturnJson(False,'wrong password!'),json_header + else: + pdata = { + "password":True, + "filename":find['filename'].split('/')[-1], + "total":find['total'], + "token":find['token'], + "expire":find['expire'] + } + return render_template('down.html',data = pdata) + + filename = find['filename'] + mimetype = "application/octet-stream" + extName = filename.split('.')[-1] + if extName in ['png','gif','jpeg','jpg']: mimetype = None + return send_file(filename,mimetype=mimetype, + as_attachment=True, + attachment_filename=os.path.basename(filename), + cache_timeout=0) + except: return abort(404) + @app.route('/cloud',methods=method_get) def panel_cloud(): comReturn = comm.local() if comReturn: return comReturn get = get_input() - if not os.path.exists('plugin/' + get.filename + '/' + get.filename+'_main.py'): return public.returnJson(False,'INIT_PLUGIN_NOT_EXISTS'),json_header + if not os.path.exists('plugin/' + get.filename + '/' + get.filename+'_main.py'): + return public.returnJson(False,'INIT_PLUGIN_NOT_EXISTS'),json_header sys.path.append('plugin/' + get.filename) plugin_main = __import__(get.filename+'_main') reload(plugin_main) @@ -949,19 +1148,22 @@ def publicObject(toObject,defs,action=None,get = None): if action: get.action = action if hasattr(get,'path'): - get.path = get.path.replace('//','/').replace('\\','/'); - if get.path.find('./') != -1: return public.ReturnJson(False,public.GetMsg("UNSAFE_PATH")),json_header + get.path = get.path.replace('//','/').replace('\\','/') + if get.path.find('./') != -1: return public.ReturnJson(False,'INIT_PATH_NOT_SAFE'),json_header if get.path.find('->') != -1: - get.path = get.path.split('->')[0].strip(); + get.path = get.path.split('->')[0].strip() if hasattr(get,'sfile'): - get.sfile = get.sfile.replace('//','/').replace('\\','/'); + get.sfile = get.sfile.replace('//','/').replace('\\','/') if hasattr(get,'dfile'): - get.dfile = get.dfile.replace('//','/').replace('\\','/'); + get.dfile = get.dfile.replace('//','/').replace('\\','/') if hasattr(toObject,'site_path_check'): if not toObject.site_path_check(get): return public.ReturnJson(False,'Excessive operation!'),json_header - return run_exec().run(toObject,defs,get) + p = run_exec() + result = p.run(toObject,defs,get) + del p + return result def check_login(http_token=None): @@ -982,46 +1184,90 @@ def get_pd(): tmp1 = None if tmp1: tmp = tmp1[public.to_string([112,114,111])] + ltd = tmp1.get('ltd',-1) else: + ltd = -1 tmp4 = cache.get(public.to_string([112, 95, 116, 111, 107, 101, 110])) if tmp4: tmp_f = public.to_string([47, 116, 109, 112, 47]) + tmp4 if not os.path.exists(tmp_f): public.writeFile(tmp_f,'-1') tmp = public.readFile(tmp_f) if tmp: tmp = int(tmp) - if tmp == -1: - tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 112, 114, 111, 45, 103, 114, 97, 121, 34, 32, 111, 110, 99, 108, 105, 99, 107, 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, 95, 112, 114, 111, 40, 41, 34, 32, 116, 105, 116, 108, 101, 61, 34, 28857, 20987, 21319, 32423, 21040, 19987, 19994, 29256, 34, 62, 20813, 36153, 29256, 60, 47, 115, 112, 97, 110, 62]) - elif tmp == -2: - tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 112, 114, 111, 45, 103, 114, 97, 121, 34, 62, 60, 115, 112, 97, 110, 32, - 115, 116, 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, 102, 99, 54, 100, 50, 54, 59, 102, 111, 110, 116, 45, 119, 101, 105, 103, - 104, 116, 58, 32, 98, 111, 108, 100, 59, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 53, 112, 120, 34, 62, 24050, 36807, 26399, - 60, 47, 115, 112, 97, 110, 62, 60, 97, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 108, 105, 110, 107, 34, 32, 111, 110, 99, 108, 105, 99, 107, 61, - 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, 95, 112, 114, 111, 40, 41, 34, 62, 32493, 36153, 60, 47, 97, 62, 60, 47, 115, 112, 97, 110, 62]) - elif tmp >= 0: - if tmp == 0: - tmp2 = public.to_string([27704,20037,25480,26435]) - tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 112, 114, 111, 34, 62, 123, 48, 125, 60, 115, 112, 97, 110, 32, 115, 116, - 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, 102, 99, 54, 100, 50, 54, 59, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, - 58, 32, 98, 111, 108, 100, 59, 34, 62, 123, 49, 125, 60, 47, 115, 112, 97, 110, 62, 60, 47, 115, 112, 97, 110, 62]).format(public.to_string([21040,26399,26102,38388,65306]),tmp2) + + if ltd < 1: + if tmp == -1: + tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, + 116, 112, 114, 111, 45, 102, 114, 101, 101, 34, 32, 111, 110, 99, 108, 105, 99, 107, + 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, 95, 99, + 111, 109, 109, 101, 114, 99, 105, 97, 108, 95, 118, 105, 101, 119, 40, 41, 34, + 32, 116, 105, 116, 108, 101, 61, 34, 28857, 20987, 21319, 32423, 21040, + 21830, 19994, 29256, 34, 62, 20813, 36153, 29256, 60, 47, 115, 112, 97, 110, 62]) + elif tmp == -2: + tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, + 112, 114, 111, 45, 103, 114, 97, 121, 34, 62, 60, 115, 112, 97, 110, 32, + 115, 116, 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, + 102, 99, 54, 100, 50, 54, 59, 102, 111, 110, 116, 45, 119, 101, 105, 103, + 104, 116, 58, 32, 98, 111, 108, 100, 59, 109, 97, 114, 103, 105, 110, 45, + 114, 105, 103, 104, 116, 58, 53, 112, 120, 34, 62, 24050, 36807, 26399, + 60, 47, 115, 112, 97, 110, 62, 60, 97, 32, 99, 108, 97, 115, 115, 61, 34, + 98, 116, 108, 105, 110, 107, 34, 32, 111, 110, 99, 108, 105, 99, 107, 61, + 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, 95, + 112, 114, 111, 40, 41, 34, 62, 32493, 36153, 60, 47, 97, 62, 60, + 47, 115, 112, 97, 110, 62]) + elif tmp >= 0: + if tmp == 0: + tmp2 = public.to_string([27704,20037,25480,26435]) + tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, + 112, 114, 111, 34, 62, 123, 48, 125, 60, 115, 112, 97, 110, 32, 115, 116, + 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, 102, 99, 54, 100, + 50, 54, 59, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, + 58, 32, 98, 111, 108, 100, 59, 34, 62, 123, 49, 125, 60, 47, 115, + 112, 97, 110, 62, 60, 47, 115, 112, 97, 110, 62]).format( + public.to_string([21040,26399,26102,38388,65306]),tmp2) + else: + tmp2 = time.strftime(public.to_string([37, 89, 45, 37, 109, 45, 37, 100]),time.localtime(tmp)) + tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, + 112, 114, 111, 34, 62, 21040, 26399, 26102, 38388, 65306, 60, 115, 112, + 97, 110, 32, 115, 116, 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, + 58, 32, 35, 102, 99, 54, 100, 50, 54, 59, 102, 111, 110, 116, 45, 119, + 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 59, 109, 97, 114, + 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 53, 112, 120, 34, 62, 123, + 48, 125, 60, 47, 115, 112, 97, 110, 62, 60, 97, 32, 99, 108, 97, 115, + 115, 61, 34, 98, 116, 108, 105, 110, 107, 34, 32, 111, 110, 99, 108, 105, 99, + 107, 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, + 116, 97, 95, 112, 114, 111, 40, 41, 34, 62, 32493, 36153, 60, 47, 97, 62, 60, + 47, 115, 112, 97, 110, 62]).format(tmp2) else: - tmp2 = time.strftime(public.to_string([37, 89, 45, 37, 109, 45, 37, 100]),time.localtime(tmp)) - tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 112, 114, 111, 34, 62, 21040, 26399, 26102, 38388, 65306, 60, 115, 112, - 97, 110, 32, 115, 116, 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, 102, 99, 54, 100, 50, 54, 59, 102, 111, 110, 116, 45, 119, - 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 59, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 53, 112, 120, 34, 62, 123, - 48, 125, 60, 47, 115, 112, 97, 110, 62, 60, 97, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 108, 105, 110, 107, 34, 32, 111, 110, 99, 108, 105, 99, - 107, 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, 95, 112, 114, 111, 40, 41, 34, 62, 32493, 36153, 60, 47, 97, 62, 60, - 47, 115, 112, 97, 110, 62]).format(tmp2) + tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 112, + 114, 111, 45, 103, 114, 97, 121, 34, 32, 111, 110, 99, 108, 105, 99, 107, + 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, + 95, 112, 114, 111, 40, 41, 34, 32, 116, 105, 116, 108, 101, 61, 34, 28857, + 20987, 21319, 32423, 21040, 19987, 19994, 29256, 34, 62, 20813, 36153, + 29256, 60, 47, 115, 112, 97, 110, 62]) else: - tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 112, 114, 111, 45, 103, 114, 97, 121, 34, 32, 111, 110, 99, 108, 105, 99, 107, 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, 95, 112, 114, 111, 40, 41, 34, 32, 116, 105, 116, 108, 101, 61, 34, 28857, 20987, 21319, 32423, 21040, 19987, 19994, 29256, 34, 62, 20813, 36153, 29256, 60, 47, 115, 112, 97, 110, 62]) - - return tmp3 + tmp3 = public.to_string([60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, 98, 116, 108, 116, + 100, 34, 62, 21040, 26399, 26102, 38388, 65306, 60, 115, 112, 97, 110, 32, 115, 116, + 121, 108, 101, 61, 34, 99, 111, 108, 111, 114, 58, 32, 35, 102, 99, 54, 100, 50, + 54, 59, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, + 108, 100, 59, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 53, + 112, 120, 34, 62, 123, 125, 60, 47, 115, 112, 97, 110, 62, 60, 97, 32, 99, 108, + 97, 115, 115, 61, 34, 98, 116, 108, 105, 110, 107, 34, 32, 111, 110, 99, 108, 105, + 99, 107, 61, 34, 98, 116, 46, 115, 111, 102, 116, 46, 117, 112, 100, 97, 116, 97, + 95, 108, 116, 100, 40, 41, 34, 62, 32493, 36153, 60, 47, 97, 62, 60, 47, 115, + 112, 97, 110, 62]).format(time.strftime(public.to_string([37, 89, 45, 37, 109, 45, 37, 100]),time.localtime(ltd))) + + return tmp3,tmp,ltd @app.errorhandler(404) def notfound(e): errorStr = public.ReadFile('./BTPanel/templates/' + public.GetConfigValue('template') + '/error.html') try: - errorStr = errorStr.format(public.getMsg('PAGE_ERR_404_TITLE'),public.getMsg('PAGE_ERR_404_H1'),public.getMsg('PAGE_ERR_404_P1'),public.getMsg('NAME'),public.getMsg('PAGE_ERR_HELP')) + errorStr = errorStr.format(public.getMsg('PAGE_ERR_404_TITLE'), + public.getMsg('PAGE_ERR_404_H1'), + public.getMsg('PAGE_ERR_404_P1'), + public.getMsg('NAME'), + public.getMsg('PAGE_ERR_HELP')) except IndexError: pass return errorStr,404 @@ -1031,7 +1277,11 @@ def internalerror(e): errorStr = public.ReadFile('./BTPanel/templates/' + public.GetConfigValue('template') + '/error.html') try: if not app.config['DEBUG']: - errorStr = errorStr.format(public.getMsg('PAGE_ERR_500_TITLE'),public.getMsg('PAGE_ERR_500_H1'),public.getMsg('PAGE_ERR_500_P1'),public.getMsg('NAME'),public.getMsg('PAGE_ERR_HELP')) + errorStr = errorStr.format(public.getMsg('PAGE_ERR_500_TITLE'), + public.getMsg('PAGE_ERR_500_H1'), + public.getMsg('PAGE_ERR_500_P1'), + public.getMsg('NAME'), + public.getMsg('PAGE_ERR_HELP')) else: errorStr = errorStr.format(public.getMsg('PAGE_ERR_500_TITLE'),str(e),'
'+public.get_error_info() + '
','The above debugging information is only displayed in developer mode','Version: ' + public.version()) except IndexError:pass @@ -1057,6 +1307,10 @@ def get_input(): except: pass + if 'form_data' in g: + for k in g.form_data.keys(): + data[k] = str(g.form_data[k]) + if not hasattr(data,'data'): data.data = [] return data @@ -1069,14 +1323,17 @@ def get_input_data(data): class run_exec: - def run(self,toObject,defs,get): + result = None for key in defs: if key == get.action: fun = 'toObject.'+key+'(get)' if hasattr(get,'html') or hasattr(get,'s_module'): - return eval(fun) + result = eval(fun) else: - return public.GetJson(eval(fun)),json_header - - return public.ReturnJson(False,'ARGS_ERR'),json_header \ No newline at end of file + result = public.GetJson(eval(fun)),json_header + if not result: + result = public.ReturnJson(False,'ARGS_ERR'),json_header + if g.is_aes: + result = public.aes_encrypt(result[0],g.aes_key),json_header + return result \ No newline at end of file diff --git a/BTPanel/static/ace/ace.editor.config.json b/BTPanel/static/ace/ace.editor.config.json new file mode 100644 index 00000000..3bd23379 --- /dev/null +++ b/BTPanel/static/ace/ace.editor.config.json @@ -0,0 +1 @@ +{"supportedModes":{"Apache_Conf":["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],"BatchFile":["bat|cmd"],"C_Cpp":["cpp|c|cc|cxx|h|hh|hpp|ino"],"CSharp":["cs"],"CSS":["css"],"Dockerfile":["^Dockerfile"],"golang":["go"],"HTML":["html|htm|xhtml|vue|we|wpy"],"Java":["java"],"JavaScript":["js|jsm|jsx"],"JSON":["json"],"JSP":["jsp"],"LESS":["less"],"Lua":["lua"],"Makefile":["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],"Markdown":["md|markdown"],"MySQL":["mysql"],"Nginx":["nginx|conf"],"INI":["ini|conf|cfg|prefs"],"ObjectiveC":["m|mm"],"Perl":["pl|pm"],"Perl6":["p6|pl6|pm6"],"pgSQL":["pgsql"],"PHP_Laravel_blade":["blade.php"],"PHP":["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"],"Powershell":["ps1"],"Python":["py"],"R":["r"],"Ruby":["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],"Rust":["rs"],"SASS":["sass"],"SCSS":["scss"],"SH":["sh|bash|^.bashrc"],"SQL":["sql"],"SQLServer":["sqlserver"],"Swift":["swift"],"Text":["txt"],"Typescript":["ts|typescript|str"],"VBScript":["vbs|vb"],"Verilog":["v|vh|sv|svh"],"XML":["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],"YAML":["yaml|yml"],"Compress":["tar|zip|7z|rar|gz|arj|z"],"images":["icon|jpg|jpeg|png|bmp|gif|tif|emf"]},"nameOverrides":{"ObjectiveC":"Objective-C","CSharp":"C#","golang":"Go","C_Cpp":"C and C++","PHP_Laravel_blade":"PHP (Blade Template)","Perl6":"Perl 6"},"encodingList":["ASCII","UTF-8","GBK","GB2312","BIG5"],"themeList":["chrome","monokai"],"aceEditor":{"editorTheme":"monokai","fontSize":13,"softLabel":false,"useSoftTabs":false,"tabSize":4,"wrap":true,"enableSnippets":true,"enableLiveAutocompletion":true,"highlightActiveLine":true,"highlightSelectedWord":true,"animatedScroll":false,"showInvisibles":false,"showFoldWidgets":true,"showLineNumbers":true,"showGutter":true,"displayIndentGuides":false},"showUpdate":true} \ No newline at end of file diff --git a/BTPanel/static/ace/ace.js b/BTPanel/static/ace/ace.js index bc021c62..59a9975c 100644 --- a/BTPanel/static/ace/ace.js +++ b/BTPanel/static/ace/ace.js @@ -1,4 +1,4 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=i.match(/ Gecko\/\d+/),t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isEdge=parseFloat(i.split(" Edge/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isAndroid=i.indexOf("Android")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(i)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIPad||t.isAndroid}),define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./useragent"),i="http://www.w3.org/1999/xhtml";t.buildDom=function o(e,t,n){if(typeof e=="string"&&e){var r=document.createTextNode(e);return t&&t.appendChild(r),r}if(!Array.isArray(e))return e;if(typeof e[0]!="string"||!e[0]){var i=[];for(var s=0;s=1.5:!0;if(typeof document!="undefined"){var s=document.createElement("div");t.HI_DPI&&s.style.transform!==undefined&&(t.HAS_CSS_TRANSFORMS=!0),!r.isEdge&&typeof s.style.animationName!="undefined"&&(t.HAS_CSS_ANIMATION=!0),s=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}}),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){var r,i;t.addListener(e,"touchstart",function(e){var t=e.touches,n=t[0];r=n.clientX,i=n.clientY}),t.addListener(e,"touchmove",function(e){var t=e.touches;if(t.length>1)return;var s=t[0];e.wheelX=r-s.clientX,e.wheelY=i-s.clientY,r=s.clientX,i=s.clientY,n(e)})},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l++,i=function(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())};t.addListener(n,"message",i),n.postMessage(r,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout(function r(){t.$idleBlocked?setTimeout(r,100):e()},n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout(function(){t.$idleBlocked=!1},e||100)},t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n63,l=400,c=e("../lib/keys"),h=c.KEY_MODS,p=i.isIOS,d=p?/\s/:/\n/,v=function(e,t){function W(){x=!0,n.blur(),n.focus(),x=!1}function V(e){e.keyCode==27&&n.value.lengthC&&T[s]=="\n")o=c.end;else if(rC&&T.slice(0,s).split("\n").length>2)o=c.down;else if(s>C&&T[s-1]==" ")o=c.right,u=h.option;else if(s>C||s==C&&C!=N&&r==s)o=c.right;r!==s&&(u|=h.shift),o&&(t.onCommandKey(null,u,o),N=r,C=s,A(""))};document.addEventListener("selectionchange",s),t.on("destroy",function(){document.removeEventListener("selectionchange",s)})}var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var v=!1,m=!1,g=!1,y=!1,b="",w=!0,E=!1;i.isMobile||(n.style.fontSize="1px");var S=!1,x=!1,T="",N=0,C=0;try{var k=document.activeElement===n}catch(L){}r.addListener(n,"blur",function(e){if(x)return;t.onBlur(e),k=!1}),r.addListener(n,"focus",function(e){if(x)return;k=!0;if(i.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),i.isEdge?setTimeout(A):A()}),this.$focusScroll=!1,this.focus=function(){if(b||f||this.$focusScroll=="browser")return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var t=n.getBoundingClientRect().top!=0}catch(r){return}var i=[];if(t){var s=n.parentElement;while(s&&s.nodeType==1)i.push(s),s.setAttribute("ace_nocontext",!0),!s.parentElement&&s.getRootNode?s=s.getRootNode().host:s=s.parentElement}n.focus({preventScroll:!0}),t&&i.forEach(function(e){e.removeAttribute("ace_nocontext")}),setTimeout(function(){n.style.position="",n.style.top=="0px"&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return k},t.on("beforeEndOperation",function(){if(t.curOp&&t.curOp.command.name=="insertstring")return;g&&(T=n.value="",z()),A()});var A=p?function(e){if(!k||v&&!e||y)return;e||(e="");var r="\n ab"+e+"cde fg\n";r!=n.value&&(n.value=T=r);var i=4,s=4+(e.length||(t.selection.isEmpty()?0:1));(N!=i||C!=s)&&n.setSelectionRange(i,s),N=i,C=s}:function(){if(g||y)return;if(!k&&!D)return;g=!0;var e=t.selection,r=e.getRange(),i=e.cursor.row,s=r.start.column,o=r.end.column,u=t.session.getLine(i);if(r.start.row!=i){var a=t.session.getLine(i-1);s=r.start.rowi+1?f.length:o,o+=u.length+1,u=u+"\n"+f}u.length>l&&(s=T.length&&e.value===T&&T&&e.selectionEnd!==C},M=function(e){if(g)return;v?v=!1:O(n)&&(t.selectAll(),A())},_=null;this.setInputHandler=function(e){_=e},this.getInputHandler=function(){return _};var D=!1,P=function(e,r){D&&(D=!1);if(m)return A(),e&&t.onPaste(e),m=!1,"";var i=n.selectionStart,s=n.selectionEnd,o=N,u=T.length-C,a=e,f=e.length-i,l=e.length-s,c=0;while(o>0&&T[c]==e[c])c++,o--;a=a.slice(c),c=1;while(u>0&&T.length-c>N-1&&T[T.length-c]==e[e.length-c])c++,u--;return f-=c-1,l-=c-1,a=a.slice(0,a.length-c+1),!r&&f==a.length&&!o&&!u&&!l?"":(y=!0,a&&!o&&!u&&!f&&!l||S?t.onTextInput(a):t.onTextInput(a,{extendLeft:o,extendRight:u,restoreStart:f,restoreEnd:l}),y=!1,T=e,N=i,C=s,a)},H=function(e){if(g)return U();var t=n.value,r=P(t,!0);(t.length>l+100||d.test(r))&&A()},B=function(e,t,n){var r=e.clipboardData||window.clipboardData;if(!r||u)return;var i=a||n?"Text":"text/plain";try{return t?r.setData(i,t)!==!1:r.getData(i)}catch(e){if(!n)return B(e,t,!0)}},j=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);B(e,s)?(p&&(A(s),v=s,setTimeout(function(){v=!1},10)),i?t.onCut():t.onCopy(),r.preventDefault(e)):(v=!0,n.value=s,n.select(),setTimeout(function(){v=!1,A(),i?t.onCut():t.onCopy()}))},F=function(e){j(e,!0)},I=function(e){j(e,!1)},q=function(e){var s=B(e);typeof s=="string"?(s&&t.onPaste(s,e),i.isIE&&setTimeout(A),r.preventDefault(e)):(n.value="",m=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",M),r.addListener(n,"input",H),r.addListener(n,"cut",F),r.addListener(n,"copy",I),r.addListener(n,"paste",q),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:I(e);break;case 86:q(e);break;case 88:F(e)}});var R=function(e){if(g||!t.onCompositionStart||t.$readOnly)return;g={};if(S)return;setTimeout(U,0),t.on("mousedown",W);var r=t.getSelectionRange();r.end.row=r.start.row,r.end.column=r.start.column,g.markerRange=r,g.selectionStart=N,t.onCompositionStart(g),g.useTextareaForIME?(n.value="",T="",N=0,C=0):(n.msGetInputContext&&(g.context=n.msGetInputContext()),n.getInputContext&&(g.context=n.getInputContext()))},U=function(){if(!g||!t.onCompositionUpdate||t.$readOnly)return;if(S)return W();if(g.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;P(e),g.markerRange&&(g.context&&(g.markerRange.start.column=g.selectionStart=g.context.compositionStartOffset),g.markerRange.end.column=g.markerRange.start.column+C-g.selectionStart)}},z=function(e){if(!t.onCompositionEnd||t.$readOnly)return;g=!1,t.onCompositionEnd(),t.off("mousedown",W),e&&H()},X=o.delayedCall(U,50).schedule.bind(null,null);r.addListener(n,"compositionstart",R),r.addListener(n,"compositionupdate",U),r.addListener(n,"keyup",V),r.addListener(n,"keydown",X),r.addListener(n,"compositionend",z),this.getElement=function(){return n},this.setCommandMode=function(e){S=e,n.readOnly=!1},this.setReadOnly=function(e){S||(n.readOnly=e)},this.setCopyWithEmptySelection=function(e){E=e},this.onContextMenu=function(e){D=!0,A(),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){b||(b=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+(i.isIE?"opacity:0.1;":"")+"text-indent: -"+(N+C)*t.renderer.characterWidth*.5+"px;";var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout($),i.isWin&&r.capture(t.container,h,J)},this.onContextMenuClose=J;var $,K=function(e){t.textInput.onContextMenu(e),J()};r.addListener(n,"mouseup",K),r.addListener(n,"mousedown",function(e){e.preventDefault(),J()}),r.addListener(t.renderer.scroller,"contextmenu",K),r.addListener(n,"contextmenu",K),p&&Q(e,t,n)};t.TextInput=v}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";function o(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function u(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function a(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/useragent"),i=0,s=550;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,s=e.getButton();if(s!==0){var o=i.getSelectionRange(),u=o.isEmpty();(u||s==1)&&i.selection.moveToPosition(n),s==2&&(i.textInput.onContextMenu(e.domEvent),r.isMozilla||e.preventDefault());return}this.mousedownEvent.time=Date.now();if(t&&!i.isFocused()){i.focus();if(this.$focusTimeout&&!this.$clickSelection&&!i.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;if(!this.mousedownEvent)return;this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=a(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>i||t-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,r=e.domEvent.timeStamp,i=r-n.t,o=i?e.wheelX/i:n.vx,u=i?e.wheelY/i:n.vy;i=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(f=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(f=!0);if(f)n.allowed=r;else if(r-n.allowedt.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.moveCursorToPosition(e),S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.selection.fromOrientedRange(m),t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a),f()};var f=function(){!a.basePath&&!a.workerPath&&!a.modePath&&!a.themePath&&!Object.keys(a.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),f=function(){})};t.init=l}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor,s=this.editor.renderer;s.$keepTextAreaAtCursor&&(s.$keepTextAreaAtCursor=null);var o=this,a=function(e){if(!e)return;if(i.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new u(e,o.editor),o.$mouseMoved=!0},f=function(e){n.off("beforeEndOperation",c),clearInterval(h),l(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",s.$keepTextAreaAtCursor==null&&(s.$keepTextAreaAtCursor=!0,s.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e),n.endOperation()},l=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){f(e)});var c=function(e){if(!o.releaseMouse)return;n.curOp.command.name&&n.curOp.selectionChanged&&(o[o.state+"End"]&&o[o.state+"End"](),o.state="",o.releaseMouse())};n.on("beforeEndOperation",c),n.startOperation({command:{name:"mouse"}}),o.$onCaptureMouseMove=a,o.releaseMouse=r.capture(this.editor.container,a,f);var h=setInterval(l,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimeout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";function i(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e.session,s=i.getFoldAt(n.row,n.column,1);s&&(t.getAccelKey()?i.removeFold(s):i.expandFold(s),t.stop());var o=t.domEvent&&t.domEvent.target;o&&r.hasCssClass(o,"ace_inline_button")&&r.hasCssClass(o,"ace_toggle_wrap")&&(i.setOption("wrap",!0),e.renderer.scrollCursorIntoView())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}var r=e("../lib/dom");t.FoldHandler=i}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/lib/bidiutil",["require","exports","module"],function(e,t,n){"use strict";function F(e,t,n,r){var i=s?d:p,c=null,h=null,v=null,m=0,g=null,y=null,b=-1,w=null,E=null,T=[];if(!r)for(w=0,r=[];w0)if(g==16){for(w=b;w-1){for(w=b;w=0;C--){if(r[C]!=N)break;t[C]=s}}}function I(e,t,n){if(o=e){u=i+1;while(u=e)u++;for(a=i,l=u-1;a=t.length||(o=n[r-1])!=b&&o!=w||(c=t[r+1])!=b&&c!=w)return E;return u&&(c=w),c==o?c:E;case k:o=r>0?n[r-1]:S;if(o==b&&r+10&&n[r-1]==b)return b;if(u)return E;p=r+1,h=t.length;while(p=1425&&d<=2303||d==64286;o=t[p];if(v&&(o==y||o==T))return y}if(r<1||(o=t[r-1])==S)return E;return n[r-1];case S:return u=!1,f=!0,s;case x:return l=!0,E;case O:case M:case D:case P:case _:u=!1;case H:return E}}function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5?/[\u0591-\u05f4]/.test(e)?y:g:n==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?A:/[\u0660-\u0669\u066b-\u066c]/.test(e)?w:t==1642?L:/[\u06f0-\u06f9]/.test(e)?b:T:n==32&&t<=8287?j[t&255]:n==254?t>=65136?T:E:E}function U(e){return e>="\u064b"&&e<="\u0655"}var r=["\u0621","\u0641"],i=["\u063a","\u064a"],s=0,o=0,u=!1,a=!1,f=!1,l=!1,c=!1,h=!1,p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],d=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v=0,m=1,g=0,y=1,b=2,w=3,E=4,S=5,x=6,T=7,N=8,C=9,k=10,L=11,A=12,O=13,M=14,_=15,D=16,P=17,H=18,B=[H,H,H,H,H,H,H,H,H,x,S,x,N,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,S,S,S,x,N,E,E,L,L,L,E,E,E,E,E,k,C,k,C,C,b,b,b,b,b,b,b,b,b,b,C,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,H,H,H,H,H,H,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,E,L,L,L,L,E,E,E,E,g,E,E,H,E,E,L,L,b,b,E,g,E,E,E,b,g,E,E,E,E,E],j=[N,N,N,N,N,N,N,N,N,N,N,H,H,H,g,y,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N,S,O,M,_,D,P,C,L,L,L,L,L,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,C,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N];t.L=g,t.R=y,t.EN=b,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="\u00b7",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var i=e.split(""),o=new Array(i.length),u=new Array(i.length),a=[];s=r?m:v,F(i,a,i.length,n);for(var f=0;fT&&n[f]0&&i[f-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(i[f])&&(a[f-1]=a[f]=t.R_H,f++);i[i.length-1]===t.DOT&&(a[i.length-1]=t.B),i[0]==="\u202b"&&(a[0]=t.RLE);for(var f=0;f=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,r=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){n=this.session.$getRowCacheIndex(t,this.currentRow-e-1);if(n!==r)break;r=n,e++}}else e=this.currentRow;return e},this.updateRowLine=function(e,t){e===undefined&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1,s=n?this.EOF:this.EOL;this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){var o=this.session.$wrapData[e];o&&(t===undefined&&(t=this.getSplitIndex()),t>0&&o.length?(this.wrapIndent=o.indent,this.wrapOffset=this.wrapIndent*this.charWidths[r.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,i=r.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[i]%2!==0&&i++;for(var u=0;ut&&s[i]%2===0&&(o+=this.charWidths[s[i]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},this.getSelections=function(e,t){var n=this.bidiMap,r=n.bidiLevels,i,s=[],o=0,u=Math.min(e,t)-this.wrapIndent,a=Math.max(e,t)-this.wrapIndent,f=!1,l=!1,c=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var h,p=0;p=u&&hn+s/2){n+=s;if(r===i.length-1){s=0;break}s=this.charWidths[i[++r]]}return r>0&&i[r-1]%2!==0&&i[r]%2===0?(e0&&i[r-1]%2===0&&i[r]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===i.length-1&&s===0&&i[r-1]%2===0||!this.isRtlDir&&r===0&&i[r]%2!==0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&i[r-1]%2!==0&&s!==0&&r--,t=this.bidiMap.logicalFromVisual[r]),t===0&&this.isRtlDir&&t++,t+this.wrapIndent}}).call(o.prototype),t.BidiHandler=o}),define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),!t.$isEmpty&&!t.$silent&&t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,!t.$isEmpty&&!t.$silent&&t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(e,t){var n=t?e.end:e.start,r=t?e.start:e.end;this.$setSelection(n.row,n.column,r.row,r.column)},this.$setSelection=function(e,t,n,r){var i=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,r),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||i!=this.$isEmpty||s)&&this._emit("changeSelection")},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var r=e.column,i=e.column+t;return n<0&&(r=e.column-t,i=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(r,i).split(" ").length-1==t},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var i=this.session.getFoldAt(e,t,1);if(i){this.moveCursorTo(i.end.row,i.end.column);return}this.session.nonTokenRe.exec(r)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t));if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(s)&&(t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t=0,n,r=/\s/,i=this.session.tokenRe;i.lastIndex=0;if(this.session.tokenRe.exec(e))t=this.session.tokenRe.lastIndex;else{while((n=e[t])&&r.test(n))t++;if(t<1){i.lastIndex=0;while((n=e[t])&&!i.test(n)){i.lastIndex=0,t++;if(r.test(n)){if(t>2){t--;break}while((n=e[t])&&r.test(n))t++;if(t>2)break}}}}return i.lastIndex=0,t},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(e!==0&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var i=this.session.screenToDocumentPosition(n.row+e,n.column,r);e!==0&&t===0&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||e>0)&&i.row++,this.moveCursorTo(i.row,i.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0;var i=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(i.charAt(t))&&i.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new r(this.$row,t,this.$row,t+e.value.length)}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c={'"':'"',"'":"'"},h=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},d=function(e){this.add("braces","insertion",function(t,n,r,i,s){var u=r.getCursorPosition(),a=i.doc.getLine(u.row);if(s=="{"){h(r);var l=r.getSelectionRange(),c=i.doc.getTextRange(l);if(c!==""&&c!=="{"&&r.getWrapBehavioursEnabled())return p(l,c,"{","}");if(d.isSaneInsertion(r,i))return/[\]\}\)]/.test(a[u.column])||r.inMultiSelectMode||e&&e.braces?(d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(r,i,"{"),{text:"{",selection:[1,1]})}else if(s=="}"){h(r);var v=a.substring(u.column,u.column+1);if(v=="}"){var m=i.$findOpeningBracket("}",{column:u.column+1,row:u.row});if(m!==null&&d.isAutoInsertedClosing(u,a,s))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(s=="\n"||s=="\r\n"){h(r);var g="";d.isMaybeInsertedClosing(u,a)&&(g=o.stringRepeat("}",f.maybeInsertedBrackets),d.clearMaybeInsertedClosing());var v=a.substring(u.column,u.column+1);if(v==="}"){var y=i.findMatchingBracket({row:u.row,column:u.column+1},"}");if(!y)return null;var b=this.$getIndent(i.getLine(y.row))}else{if(!g){d.clearMaybeInsertedClosing();return}var b=this.$getIndent(a)}var w=b+i.getTabString();return{text:"\n"+w+"\n"+b+g,selection:[1,w.length,1,w.length]}}d.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"(",")");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"[","]");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){var s=r.$mode.$quotes||c;if(i.length==1&&s[i]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;h(n);var o=i,u=n.getSelectionRange(),a=r.doc.getTextRange(u);if(a!==""&&(a.length!=1||!s[a])&&n.getWrapBehavioursEnabled())return p(u,a,o,o);if(!a){var f=n.getCursorPosition(),l=r.doc.getLine(f.row),d=l.substring(f.column-1,f.column),v=l.substring(f.column,f.column+1),m=r.getTokenAt(f.row,f.column),g=r.getTokenAt(f.row,f.column+1);if(d=="\\"&&m&&/escape/.test(m.type))return null;var y=m&&/string|escape/.test(m.type),b=!g||/string|escape/.test(g.type),w;if(v==o)w=y!==b,w&&/string\.end/.test(g.type)&&(w=!1);else{if(y&&!b)return null;if(y&&b)return null;var E=r.$mode.tokenRe;E.lastIndex=0;var S=E.test(d);E.lastIndex=0;var x=E.test(d);if(S||x)return null;if(v&&!/[\s;,.})\]\\]/.test(v))return null;w=!0}return{text:w?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.$mode.$quotes||c,o=r.doc.getTextRange(i);if(!i.isMultiLine()&&s.hasOwnProperty(o)){h(n);var u=r.doc.getLine(i.start.row),a=u.substring(i.start.column+1,i.start.column+2);if(a==o)return i.end.column++,i}})};d.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},d.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},d.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},d.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(d,i),t.CstyleBehaviour=d}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";var r=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],i=0,s=[];for(var o=0;o2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),u==Infinity&&(u=E,s=!1,o=!1),l&&u%f!=0&&(u=Math.floor(u/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new f(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,a=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new l(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new f(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new l(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);a.start.row==c&&(a.start.column+=h),a.end.row==c&&(a.end.column+=h),t.selection.fromOrientedRange(a)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)if(e[t]){var n=e[t],i=n.prototype.$id,s=r.$modes[i];s||(r.$modes[i]=s=new n),r.$modes[t]||(r.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length-t+1,i=e.start.row,s=e.start.column;for(var o=0,u=0;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r==-1&&(r=t),s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=r)break}if(e.action=="insert"){var f=i-r,l=-t.column+n.column;for(;or)break;a.start.row==r&&a.start.column>=t.column&&(a.start.column!=t.column||!this.$insertRight)&&(a.start.column+=l,a.start.row+=f);if(a.end.row==r&&a.end.column>=t.column){if(a.end.column==t.column&&this.$insertRight)continue;a.end.column==t.column&&l>0&&oa.start.column&&a.end.column==s[o+1].start.column&&(a.end.column-=l),a.end.column+=l,a.end.row+=f}}}else{var f=r-i,l=t.column-n.column;for(;oi)break;if(a.end.rowt.column)a.end.column=t.column,a.end.row=t.row}else a.end.column+=l,a.end.row+=f;else a.end.row>i&&(a.end.row+=f);if(a.start.rowt.column)a.start.column=t.column,a.start.row=t.row}else a.start.column+=l,a.start.row+=f;else a.start.row>i&&(a.start.row+=f)}}if(f!=0&&o=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(tl)break}while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return f.end.row=i.getCurrentTokenRow(),f.end.column=i.getCurrentTokenColumn()+s.value.length-2,f}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=e.length-1;n!=-1;n--){var r=e[n];r.action=="insert"||r.action=="remove"?this.doc.revertDelta(r):r.folds&&this.addFolds(r.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,f=s.start,o=f.row-a.row,u=f.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new l(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),o=this.$wrapData,u=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,o){var u;if(e!=null){u=this.$getDisplayTokens(e,a.length),u[0]=n;for(var f=1;fr-b){var w=f+r-b;if(e[w-1]>=c&&e[w]>=c){y(w);continue}if(e[w]==n||e[w]==s){for(w;w!=f-1;w--)if(e[w]==n)break;if(w>f){y(w);continue}w=f+r;for(w;w>2)),f-1);while(w>E&&e[w]E&&e[w]E&&e[w]==a)w--}else while(w>E&&e[w]E){y(++w);continue}w=f+r,e[w]==t&&w--,y(w-b)}return o},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(a):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var u=f[l],i=this.$docRowCache[l],h=e>f[c-1];else var h=!c;var p=this.getLength()-1,d=this.getNextFoldLine(i),v=d?d.start.row:Infinity;while(u<=e){a=this.getRowLength(i);if(u+a>e||i>=p)break;u+=a,i++,i>v&&(i=d.end.row+1,d=this.getNextFoldLine(i,d),v=d?d.start.row:Infinity),h&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(d&&d.start.row<=i)r=this.getFoldDisplayLine(d),i=d.start.row;else{if(u+a<=e||i>p)return{row:p,column:this.getLine(p).length};r=this.getLine(i),d=null}var m=0,g=Math.floor(e-u);if(this.$useWrapMode){var y=this.$wrapData[i];y&&(o=y[g],g>0&&y.length&&(m=y.indent,s=y[g-1]||y[y.length-1],r=r.substring(s)))}return n!==undefined&&this.$bidiHandler.isBidiRow(u+g,i,g)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(r,t-m)[1],this.$useWrapMode&&s>=o&&(s=o-1),d?d.idxToPosition(s):{row:i,column:s}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=m}.call(d.prototype),e("./edit_session/folding").Folding.call(d.prototype),e("./edit_session/bracket_match").BracketMatch.call(d.prototype),o.defineOptions(d.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){e=parseInt(e);if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=d}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i,o){return r=new s(e,n,i,o),n==o&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start)?(r=null,!1):!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=u;n--)if(c(n,Number.MAX_VALUE,e))return;if(t.wrap==0)return;for(n=a,u=o.row;n>=u;n--)if(c(n,Number.MAX_VALUE,e))return};else var f=function(e){var n=o.row;if(c(n,o.column,e))return;for(n+=1;n<=a;n++)if(c(n,0,e))return;if(t.wrap==0)return;for(n=u,a=o.row;n<=a;n++)if(c(n,0,e))return};if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var o=r?t-l+1:t;if(o<0)return;var u=e.getLine(o),a=u.search(n[0]);if(!r&&ai)return;if(s(o,a,o+l-1,c))return!0};else if(r)var c=function(t,r,i){var s=e.getLine(t),o=[],u,a=0;n.lastIndex=0;while(u=n.exec(s)){var f=u[0].length;a=u.index;if(!f){if(a>=s.length)break;n.lastIndex=a+=1}if(u.index+f>r)break;o.push(u.index,f)}for(var l=o.length-1;l>=0;l-=2){var c=o[l-1],f=o[l];if(i(t,c,t,c+f))return!0}};else var c=function(t,r,i){var s=e.getLine(t),o,u;n.lastIndex=r;while(u=n.exec(s)){var a=u[0].length;o=u.index;if(i(t,o,t,o+a))return!0;if(!a){n.lastIndex=o+=1;if(o>=s.length)return!1}}};return{forEach:f}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(this.$checkCommandState!=0&&e.isAvailable&&!e.isAvailable(t))return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){typeof t=="number"&&!isNaN(t)&&e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty(),n=t?e.selection.getLineRange():e.selection.getRange();e._emit("cut",n),n.isEmpty()||e.session.remove(n),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var s=this.selection.toJSON();this.curOp.selectionAfter=s,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(s),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"&&e!="ace"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container).fontSize},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column,r=t.end.column,i=e.getLine(t.start.row),s=i.substring(n,r);if(s.length>5e3||!/[\w\d]/.test(s))return;var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),u=i.substring(n-1,r+1);if(!o.test(u))return;return o},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;var r=this.selection.getAllRanges();for(var i=0;is.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var o=s.length;o--;){var u=s[o];u.isEmpty()||r.remove(u),r.insert(u.start,i[o])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.inVirtualSelectionMode||(this.session.mergeUndoDeltas=!1,this.mergeNextCommand=!1)),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()&&e.indexOf("\n")==-1){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(e,t){if(t.extendLeft||t.extendRight){var n=this.selection.getRange();n.start.column-=t.extendLeft,n.end.column+=t.extendRight,this.selection.setRange(n),!e&&!n.isEmpty()&&this.remove()}(e||!this.selection.isEmpty())&&this.insert(e,!0);if(t.restoreStart||t.restoreEnd){var n=this.selection.getRange();n.start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n)}},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var i=new p(0,0,0,0);for(var r=e.first;r<=e.last;r++){var s=t.getLine(r);i.start.row=r,i.end.row=r,i.end.column=s.length,t.replace(i,n[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=u&&o<=a&&(n=t,f.selection.clearSelection(),f.moveCursorTo(e,u+r),f.selection.selectTo(e,a+r)),u=a});var l=this.$toggleWordPairs,c;for(var h=0;hp+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(e)},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))},this.prompt=function(e,t,n){var r=this;g.loadModule("./ext/prompt",function(i){i.prompt(r,e,t,n)})}}.call(w.prototype),g.defineOptions(w.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?E.attach(this):E.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?E.attach(this):E.detach(this)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var E={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=w}),define("ace/undomanager",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){for(var n=t;n--;){var r=e[n];if(r&&!r[0].ignore){while(n0){a.row+=i,a.column+=a.row==r.row?s:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}}function f(e){return{row:e.row,column:e.column}}function l(e){return{start:f(e.start),end:f(e.end),action:e.action,lines:e.lines.slice()}}function c(e){e=e||this;if(Array.isArray(e))return e.map(c).join("\n");var t="";e.action?(t=e.action=="insert"?"+":"-",t+="["+e.lines+"]"):e.value&&(Array.isArray(e.value)?t=e.value.map(h).join("\n"):t=h(e.value)),e.start&&(t+=h(e));if(e.id||e.rev)t+=" ("+(e.id||e.rev)+")";return t}function h(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function p(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}else if(!n&&r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(!n&&!r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}return[t,e]}function d(e,t){for(var n=e.length;n--;)for(var r=0;r=0?m(e,t,-1):o(e.start,t.start)<=0?m(t,e,1):(m(e,s.fromPoints(t.start,e.start),-1),m(t,e,1));else if(!n&&r)o(t.start,e.end)>=0?m(t,e,-1):o(t.start,e.start)<=0?m(e,t,1):(m(t,s.fromPoints(e.start,t.start),-1),m(e,t,1));else if(!n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0)){var i,u;return o(e.start,t.start)<0&&(i=e,e=y(e,t.start)),o(e.end,t.end)>0&&(u=y(e,t.end)),g(t.end,e.start,e.end,-1),u&&!i&&(e.lines=u.lines,e.start=u.start,e.end=u.end,u=e),[t,i,u].filter(Boolean)}m(e,t,-1)}return[t,e]}function m(e,t,n){g(e.start,t.start,t.end,n),g(e.end,t.start,t.end,n)}function g(e,t,n,r){e.row==(r==1?t:n).row&&(e.column+=r*(n.column-t.column)),e.row+=r*(n.row-t.row)}function y(e,t){var n=e.lines,r=e.end;e.end=f(t);var i=e.end.row-e.start.row,s=n.splice(i,n.length),o=i?t.column:t.column-e.start.column;n.push(s[0].substring(0,o)),s[0]=s[0].substr(o);var u={start:f(t),end:r,lines:s,action:e.action};return u}function b(e,t){t=l(t);for(var n=e.length;n--;){var r=e[n];for(var i=0;i0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(e){e==undefined&&(e=this.$rev),this.mark=e},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(e){return e?c(e):c(this.$undoStack)+"\n---\n"+c(this.$redoStack)}}).call(r.prototype);var s=e("./range").Range,o=s.comparePoints,u=s.comparePoints;t.UndoManager=r}),define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0};(function(){this.moveContainer=function(e){r.translate(this.element,0,-(e.firstRowScreen*e.lineHeight%this.canvasHeight)-e.offset*this.$offsetCoefficient)},this.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},this.computeLineTop=function(e,t,n){var r=t.firstRowScreen*t.lineHeight,i=Math.floor(r/this.canvasHeight),s=n.documentToScreenRow(e,0)*t.lineHeight;return s-i*this.canvasHeight},this.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLength(e)},this.getLength=function(){return this.cells.length},this.get=function(e){return this.cells[e]},this.shift=function(){this.$cacheCell(this.cells.shift())},this.pop=function(){this.$cacheCell(this.cells.pop())},this.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);var t=r.createFragment(this.element);for(var n=0;ns&&(a=i.end.row+1,i=t.getNextFoldLine(a,i),s=i?i.start.row:Infinity);if(a>r){while(this.$lines.getLength()>u+1)this.$lines.pop();break}o=this.$lines.get(++u),o?o.row=a:(o=this.$lines.createCell(a,e,this.session,f),this.$lines.push(o)),this.$renderCell(o,e,i,a),a++}this._signal("afterRender"),this.$updateGutterWidth(e)},this.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,r=t.$firstLineNumber,i=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||t.$useWrapMode)i=t.getLength()+r-1;var s=n?n.getWidth(t,i,e):i.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();s+=o.left+o.right,s!==this.gutterWidth&&!isNaN(s)&&(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},this.$updateCursorRow=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.getCursor();if(this.$cursorRow===e.row)return;this.$cursorRow=e.row},this.updateLineHighlight=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.cursor.row;this.$cursorRow=e;if(this.$cursorCell&&this.$cursorCell.row==e)return;this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(r.row>this.$cursorRow){var i=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&i&&i.start.row==t[n-1].row))break;r=t[n-1]}r.element.className="ace_gutter-active-line "+r.element.className,this.$cursorCell=r;break}}},this.scrollLines=function(e){var t=this.config;this.config=e,this.$updateCursorRow();if(this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),r=this.oldLastRow;this.oldLastRow=n;if(!t||r0;i--)this.$lines.shift();if(r>n)for(var i=this.session.getFoldedRowCount(n+1,r);i>0;i--)this.$lines.pop();e.firstRowr&&this.$lines.push(this.$renderLines(e,r+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},this.$renderLines=function(e,t,n){var r=[],i=t,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>n)break;var u=this.$lines.createCell(i,e,this.session,f);this.$renderCell(u,e,s,i),r.push(u),i++}return r},this.$renderCell=function(e,t,n,i){var s=e.element,o=this.session,u=s.childNodes[0],a=s.childNodes[1],f=o.$firstLineNumber,l=o.$breakpoints,c=o.$decorations,h=o.gutterRenderer||this.$renderer,p=this.$showFoldWidgets&&o.foldWidgets,d=n?n.start.row:Number.MAX_VALUE,v="ace_gutter-cell ";this.$highlightGutterLine&&(i==this.$cursorRow||n&&i=d&&this.$cursorRow<=n.end.row)&&(v+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),l[i]&&(v+=l[i]),c[i]&&(v+=c[i]),this.$annotations[i]&&(v+=this.$annotations[i].className),s.className!=v&&(s.className=v);if(p){var m=p[i];m==null&&(m=p[i]=o.getFoldWidget(i))}if(m){var v="ace_fold-widget ace_"+m;m=="start"&&i==d&&in.right-t.right)return"foldWidgets"}}).call(a.prototype),t.Gutter=a}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.elt=function(e,t){var n=this.i!=-1&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},this.update=function(e){if(!e)return;this.config=e,this.i=0;var t;for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}if(this.i!=-1)while(this.ip,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"";if(this.session.$bidiHandler.isBidiRow(t.start.row)){var f=t.clone();f.end.row=f.start.row,f.end.column=this.session.getLine(f.start.row).length,this.drawBidiSingleLineMarker(e,f,n+" ace_br1 ace_start",r,null,i)}else this.elt(n+" ace_br1 ace_start","height:"+o+"px;"+"right:0;"+"top:"+u+"px;left:"+a+"px;"+(i||""));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var f=t.clone();f.start.row=f.end.row,f.start.column=0,this.drawBidiSingleLineMarker(e,f,n+" ace_br12",r,null,i)}else{u=this.$getTop(t.end.row,r);var l=t.end.column*r.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;"+"width:"+l+"px;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))}o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var c=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(c?" ace_br"+c:""),"height:"+o+"px;"+"right:0;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))},this.drawSingleLineMarker=function(e,t,n,r,i,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,r,i,s);var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;this.elt(n,"height:"+o+"px;"+"width:"+u+"px;"+"top:"+a+"px;"+"left:"+f+"px;"+(s||""))},this.drawBidiSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=this.$getTop(t.start.row,r),a=this.$padding,f=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);f.forEach(function(e){this.elt(n,"height:"+o+"px;"+"width:"+e.width+(i||0)+"px;"+"top:"+u+"px;"+"left:"+(a+e.left)+"px;"+(s||""))},this)},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,u=e("../lib/event_emitter").EventEmitter,a=function(e){this.dom=i,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var e=this.session.doc,t=e.getNewLineCharacter()=="\n"&&e.getNewLineMode()!="windows",n=t?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=n)return this.EOL_CHAR=n,!0},this.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;nl&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),l=a?a.start.row:Infinity);if(u>i)break;var c=s[o++];if(c){this.dom.removeChildren(c),this.$renderLine(c,u,u==l?a:!1);var h=e.lineHeight*this.session.getRowLength(u)+"px";c.style.height!=h&&(f=!0,c.style.height=h)}u++}if(f)while(o0;i--)this.$lines.shift();if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow))},this.$renderLinesFragment=function(e,t,n){var r=[],s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=this.$lines.createCell(s,e,this.session),f=a.element;this.dom.removeChildren(f),i.setStyle(f.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),i.setStyle(f.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(f,s,s==u?o:!1),this.$useLineGroups()?f.className="ace_line_group":f.className="ace_line",r.push(a),s++}return r},this.update=function(e){this.$lines.moveContainer(e),this.config=e;var t=e.firstRow,n=e.lastRow,r=this.$lines;while(r.getLength())r.pop();r.push(this.$renderLinesFragment(e,t,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,u=this.dom.createFragment(this.element),a,f=0;while(a=o.exec(r)){var l=a[1],c=a[2],h=a[3],p=a[4],d=a[5];if(!i.showInvisibles&&c)continue;var v=f!=a.index?r.slice(f,a.index):"";f=a.index+a[0].length,v&&u.appendChild(this.dom.createTextNode(v,this.element));if(l){var m=i.session.getScreenTabSize(t+a.index);u.appendChild(i.$tabStrings[m].cloneNode(!0)),t+=m-1}else if(c)if(i.showInvisibles){var g=this.dom.createElement("span");g.className="ace_invisible ace_invisible_space",g.textContent=s.stringRepeat(i.SPACE_CHAR,c.length),u.appendChild(g)}else u.appendChild(this.com.createTextNode(c,this.element));else if(h){var g=this.dom.createElement("span");g.className="ace_invisible ace_invisible_space ace_invalid",g.textContent=s.stringRepeat(i.SPACE_CHAR,h.length),u.appendChild(g)}else if(p){var y=i.showInvisibles?i.SPACE_CHAR:"";t+=1;var g=this.dom.createElement("span");g.style.width=i.config.characterWidth*2+"px",g.className=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",g.textContent=i.showInvisibles?i.SPACE_CHAR:"",u.appendChild(g)}else if(d){t+=1;var g=this.dom.createElement("span");g.style.width=i.config.characterWidth*2+"px",g.className="ace_cjk",g.textContent=d,u.appendChild(g)}}u.appendChild(this.dom.createTextNode(f?r.slice(f):r,this.element));if(!this.$textToken[n.type]){var b="ace_"+n.type.replace(/\./g," ace_"),g=this.dom.createElement("span");n.type=="fold"&&(g.style.width=n.value.length*this.config.characterWidth+"px"),g.className=b,g.appendChild(u),e.appendChild(g)}else e.appendChild(u);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);if(r<=0||r>=n)return t;if(t[0]==" "){r-=r%this.tabSize;var i=r/this.tabSize;for(var s=0;s=o)u=this.$renderToken(a,u,l,c.substring(0,o-r)),c=c.substring(o-r),r=o,a=this.$createLineElement(),e.appendChild(a),a.appendChild(this.dom.createTextNode(s.stringRepeat("\u00a0",n.indent),this.element)),i++,u=0,o=n[i]||Number.MAX_VALUE;c.length!=0&&(r+=c.length,u=this.$renderToken(a,u,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;sthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,r,i);n=this.$renderToken(e,n,r,i)}},this.$renderOverflowMessage=function(e,t,n,r){this.$renderToken(e,t,n,r.slice(0,this.MAX_LINE_LENGTH-t));var i=this.dom.createElement("span");i.className="ace_inline_button ace_keyword ace_toggle_wrap",i.style.position="absolute",i.style.right="0",i.textContent="",e.appendChild(i)},this.$renderLine=function(e,t,n){!n&&n!=0&&(n=this.session.getFoldLine(t));if(n)var r=this.$getFoldLineTokens(t,n);else var r=this.session.getTokens(t);var i=e;if(r.length){var s=this.session.getRowSplitData(t);if(s&&s.length){this.$renderWrappedLine(e,r,s);var i=e.lastChild}else{var i=e;this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i)),this.$renderSimpleLine(i,r)}}else this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i));if(this.showInvisibles&&i){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,i.appendChild(o)}},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)r.setStyle(t[n].style,"opacity",e?"":"0")},this.$startCssAnimation=function(){var e=this.cursors;for(var t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){r.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){r.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));if(r.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)continue;var u=this.cursors[i++]||this.addCursor(),a=u.style;this.drawCursor?this.drawCursor(u,o,e,t[n],this.session):this.isCursorInView(o,e)?(r.setStyle(a,"display","block"),r.translate(u,o.left,o.top),r.setStyle(a,"width",Math.round(e.characterWidth)+"px"),r.setStyle(a,"height",e.lineHeight+"px")):r.setStyle(a,"display","none")}while(this.cursors.length>i)this.removeCursor();var f=this.session.getOverwrite();this.$setOverwrite(f),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;t&&(r.blockIdle(100),n.changes=0,n.onRender(t));if(n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(r.nextFrame(this._flush),this.pending=!0)},this.clear=function(e){var t=this.changes;return this.changes=0,t}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),u=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,f=256,l=typeof ResizeObserver=="function",c=200,h=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.innerHTML=s.stringRepeat("X",f),this.$characterSize={width:0,height:0},l?this.$addObserver():this.checkForSizeChanges()};(function(){r.implement(this,a),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",u.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(e){e===undefined&&(e=this.$measureSizes());if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver(function(t){var n=t[0].contentRect;e.checkForSizeChanges({height:n.height,width:n.width/f})}),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle(function t(){e.checkForSizeChanges(),o.onIdle(t,500)},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/f};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,f);var t=this.$main.getBoundingClientRect();return t.width/f},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function e(t){return t?(window.getComputedStyle(t).zoom||1)*e(t.parentElement):1},this.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=i.buildDom([e(0,0),e(c,0),e(0,c),e(c,c)],this.el)},this.transformCoordinates=function(e,t){function r(e,t,n){var r=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/r,(+e[1]*n[0]-e[0]*n[1])/r]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function s(e,t){return[e[0]+t[0],e[1]+t[1]]}function o(e,t){return[e*t[0],e*t[1]]}function u(e){var t=e.getBoundingClientRect();return[t.left,t.top]}if(e){var n=this.$getZoom(this.el);e=o(1/n,e)}this.els||this.$initTransformMeasureNodes();var a=u(this.els[0]),f=u(this.els[1]),l=u(this.els[2]),h=u(this.els[3]),p=r(i(h,f),i(h,l),i(s(f,l),s(h,a))),d=o(1+p[0],i(f,a)),v=o(1+p[1],i(l,a));if(t){var m=t,g=p[0]*m[0]/c+p[1]*m[1]/c+1,y=s(o(m[0],d),o(m[1],v));return s(o(1/g/c,y),a)}var b=i(e,a),w=r(i(d,o(p[0],b)),i(v,o(p[1],b)),b);return o(c,w)}}).call(h.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./layer/gutter").Gutter,u=e("./layer/marker").Marker,a=e("./layer/text").Text,f=e("./layer/cursor").Cursor,l=e("./scrollbar").HScrollBar,c=e("./scrollbar").VScrollBar,h=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,d=e("./lib/event_emitter").EventEmitter,v='.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;perspective: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}',m=e("./lib/useragent"),g=m.isIE;i.importCssString(v,"ace_editor.css");var y=function(e,t){var n=this;this.container=e||i.createElement("div"),i.addCssClass(this.container,"ace_editor"),i.HI_DPI&&i.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new o(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new u(this.content);var r=this.$textLayer=new a(this.content);this.canvas=r.element,this.$markerFront=new u(this.content),this.$cursorLayer=new f(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new c(this.container,this),this.scrollBarH=new l(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!m.isIOS,this.$loop=new h(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var s=0,o=this.$size,u={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};r&&(e||o.height!=r)&&(o.height=r,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL);if(n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,i.setStyle(this.scrollBarH.element.style,"left",t+"px"),i.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),i.setStyle(this.$gutter.style,"left",this.margin.left+"px");var a=this.scrollBarV.getWidth()+"px";i.setStyle(this.scrollBarH.element.style,"right",a),i.setStyle(this.scroller.style,"right",a),i.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight());if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}return o.$dirty=!n||!r,s&&this._signal("resize",u),s},this.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){var e=this.textarea.style;if(!this.$keepTextAreaAtCursor){i.translate(this.textarea,-100,0);return}var t=this.$cursorLayer.$pixelPos;if(!t)return;var n=this.$composition;n&&n.markerRange&&(t=this.$cursorLayer.getPixelPosition(n.markerRange.start,!0));var r=this.layerConfig,s=t.top,o=t.left;s-=r.offset;var u=n&&n.useTextareaForIME?this.lineHeight:g?0:1;if(s<0||s>r.height-u){i.translate(this.textarea,0,0);return}var a=1;if(!n)s+=this.lineHeight;else if(n.useTextareaForIME){var f=this.textarea.value;a=this.characterWidth*this.session.$getStringScreenWidth(f)[0],u+=2}else s+=this.lineHeight+2;o-=this.scrollLeft,o>this.$size.scrollerWidth-a&&(o=this.$size.scrollerWidth-a),o+=this.gutterWidth+this.margin.left,i.setStyle(e,"height",u+"px"),i.setStyle(e,"width",a+"px"),i.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-a),Math.min(s,this.$size.height-u))},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.setMargin=function(e,t,n,r){var i=this.margin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig()|this.$loop.clear();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),i.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";i.setStyle(this.content.style,"width",s),i.setStyle(this.content.style,"height",o)}e&this.CHANGE_H_SCROLL&&(i.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(n):e&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=n<=2*this.lineHeight,i=!r&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var s=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=t.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l;var c=this.scrollMargin;this.session.setScrollTop(Math.max(-c.top,Math.min(this.scrollTop,i-t.scrollerHeight+c.bottom))),this.session.setScrollLeft(Math.max(-c.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+c.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop>c.top),p=a!==h;p&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var d=this.scrollTop%this.lineHeight,v=Math.ceil(f/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-d)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),f=t.scrollerHeight+e.getRowLength(g)*w+b,d=this.scrollTop-y*w;var S=0;if(this.layerConfig.width!=s||u)S=this.CHANGE_H_SCROLL;if(u||p)S|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:f,maxHeight:i,offset:d,gutterOffset:w?Math.max(0,Math.ceil((d+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(s-this.$padding),S},this.$updateLines=function(){if(!this.$changedLines)return;var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),u=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:u,side:s-u>0?1:-1,offsetX:i}},this.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),u=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(u,Math.max(o,0),i)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,e)?this.session.$bidiHandler.getPosLeft(r.column):Math.round(r.column*this.characterWidth)),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText,e.keepTextAreaAtCursor=this.$keepTextAreaAtCursor),e.useTextareaForIME=this.$useTextareaForIME,this.$useTextareaForIME?(this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null,this.$cursorLayer.element.style.display=""},this.addToken=function(e,t,n,r){var i=this.session;i.bgTokenizer.lines[n]=null;var s={type:t,value:e},o=i.getTokens(n);if(r==null)o.push(s);else{var u=0;for(var a=0;a50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(f.prototype);var l=function(e,t,n){var r=null,i=!1,u=Object.create(s),a=[],l=new f({messageBuffer:a,terminate:function(){},postMessage:function(e){a.push(e);if(!r)return;i?setTimeout(c):c()}});l.setEmitSync=function(e){i=e};var c=function(){var e=a.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};return u.postMessage=function(e){l.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.length)c()}),l};t.UIWorkerClient=l,t.WorkerClient=f,t.createWorker=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)g--;if(g>0){var y=0;while(r[y].isEmpty())y++}for(var b=g;b>=y;b--)r[b].isEmpty()&&r.splice(b,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges(),u.ranges[0]&&u.fromOrientedRange(u.ranges[0]);var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.$id="ace/theme/textmate";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./range").Range,o=e("./editor").Editor,u=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,f=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e,n){if(typeof e=="string"){var s=e;e=document.getElementById(s);if(!e)throw new Error("ace.edit can't find div #"+s)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var u="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;u=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(u=e.textContent,e.innerHTML="");var l=t.createEditSession(u),c=new o(new f(e),l,n),h={document:l,editor:c,onResize:c.resize.bind(c,null)};return a&&(h.textarea=a),i.addListener(window,"resize",h.onResize),c.on("destroy",function(){i.removeListener(window,"resize",h.onResize),h.editor.container.env=null}),c.container.env=c.env=h,c},t.createEditSession=function(e,t){var n=new u(e,t);return n.setUndoManager(new a),n},t.Range=s,t.Editor=o,t.EditSession=u,t.UndoManager=a,t.VirtualRenderer=f,t.version="1.4.4"}); (function() { +(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=i.match(/ Gecko\/\d+/),t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isEdge=parseFloat(i.split(" Edge/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isAndroid=i.indexOf("Android")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(i)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIPad||t.isAndroid}),define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./useragent"),i="http://www.w3.org/1999/xhtml";t.buildDom=function o(e,t,n){if(typeof e=="string"&&e){var r=document.createTextNode(e);return t&&t.appendChild(r),r}if(!Array.isArray(e))return e;if(typeof e[0]!="string"||!e[0]){var i=[];for(var s=0;s=1.5:!0;if(typeof document!="undefined"){var s=document.createElement("div");t.HI_DPI&&s.style.transform!==undefined&&(t.HAS_CSS_TRANSFORMS=!0),!r.isEdge&&typeof s.style.animationName!="undefined"&&(t.HAS_CSS_ANIMATION=!0),s=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}}),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){var r,i;t.addListener(e,"touchstart",function(e){var t=e.touches,n=t[0];r=n.clientX,i=n.clientY}),t.addListener(e,"touchmove",function(e){var t=e.touches;if(t.length>1)return;var s=t[0];e.wheelX=r-s.clientX,e.wheelY=i-s.clientY,r=s.clientX,i=s.clientY,n(e)})},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l++,i=function(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())};t.addListener(n,"message",i),n.postMessage(r,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout(function r(){t.$idleBlocked?setTimeout(r,100):e()},n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout(function(){t.$idleBlocked=!1},e||100)},t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n63,l=400,c=e("../lib/keys"),h=c.KEY_MODS,p=i.isIOS,d=p?/\s/:/\n/,v=function(e,t){function W(){x=!0,n.blur(),n.focus(),x=!1}function V(e){e.keyCode==27&&n.value.lengthC&&T[s]=="\n")o=c.end;else if(rC&&T.slice(0,s).split("\n").length>2)o=c.down;else if(s>C&&T[s-1]==" ")o=c.right,u=h.option;else if(s>C||s==C&&C!=N&&r==s)o=c.right;r!==s&&(u|=h.shift),o&&(t.onCommandKey(null,u,o),N=r,C=s,A(""))};document.addEventListener("selectionchange",s),t.on("destroy",function(){document.removeEventListener("selectionchange",s)})}var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var v=!1,m=!1,g=!1,y=!1,b="",w=!0,E=!1;i.isMobile||(n.style.fontSize="1px");var S=!1,x=!1,T="",N=0,C=0;try{var k=document.activeElement===n}catch(L){}r.addListener(n,"blur",function(e){if(x)return;t.onBlur(e),k=!1}),r.addListener(n,"focus",function(e){if(x)return;k=!0;if(i.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),i.isEdge?setTimeout(A):A()}),this.$focusScroll=!1,this.focus=function(){if(b||f||this.$focusScroll=="browser")return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var t=n.getBoundingClientRect().top!=0}catch(r){return}var i=[];if(t){var s=n.parentElement;while(s&&s.nodeType==1)i.push(s),s.setAttribute("ace_nocontext",!0),!s.parentElement&&s.getRootNode?s=s.getRootNode().host:s=s.parentElement}n.focus({preventScroll:!0}),t&&i.forEach(function(e){e.removeAttribute("ace_nocontext")}),setTimeout(function(){n.style.position="",n.style.top=="0px"&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return k},t.on("beforeEndOperation",function(){if(t.curOp&&t.curOp.command.name=="insertstring")return;g&&(T=n.value="",z()),A()});var A=p?function(e){if(!k||v&&!e||y)return;e||(e="");var r="\n ab"+e+"cde fg\n";r!=n.value&&(n.value=T=r);var i=4,s=4+(e.length||(t.selection.isEmpty()?0:1));(N!=i||C!=s)&&n.setSelectionRange(i,s),N=i,C=s}:function(){if(g||y)return;if(!k&&!D)return;g=!0;var e=t.selection,r=e.getRange(),i=e.cursor.row,s=r.start.column,o=r.end.column,u=t.session.getLine(i);if(r.start.row!=i){var a=t.session.getLine(i-1);s=r.start.rowi+1?f.length:o,o+=u.length+1,u=u+"\n"+f}u.length>l&&(s=T.length&&e.value===T&&T&&e.selectionEnd!==C},M=function(e){if(g)return;v?v=!1:O(n)&&(t.selectAll(),A())},_=null;this.setInputHandler=function(e){_=e},this.getInputHandler=function(){return _};var D=!1,P=function(e,r){D&&(D=!1);if(m)return A(),e&&t.onPaste(e),m=!1,"";var i=n.selectionStart,s=n.selectionEnd,o=N,u=T.length-C,a=e,f=e.length-i,l=e.length-s,c=0;while(o>0&&T[c]==e[c])c++,o--;a=a.slice(c),c=1;while(u>0&&T.length-c>N-1&&T[T.length-c]==e[e.length-c])c++,u--;return f-=c-1,l-=c-1,a=a.slice(0,a.length-c+1),!r&&f==a.length&&!o&&!u&&!l?"":(y=!0,a&&!o&&!u&&!f&&!l||S?t.onTextInput(a):t.onTextInput(a,{extendLeft:o,extendRight:u,restoreStart:f,restoreEnd:l}),y=!1,T=e,N=i,C=s,a)},H=function(e){if(g)return U();var t=n.value,r=P(t,!0);(t.length>l+100||d.test(r))&&A()},B=function(e,t,n){var r=e.clipboardData||window.clipboardData;if(!r||u)return;var i=a||n?"Text":"text/plain";try{return t?r.setData(i,t)!==!1:r.getData(i)}catch(e){if(!n)return B(e,t,!0)}},j=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);B(e,s)?(p&&(A(s),v=s,setTimeout(function(){v=!1},10)),i?t.onCut():t.onCopy(),r.preventDefault(e)):(v=!0,n.value=s,n.select(),setTimeout(function(){v=!1,A(),i?t.onCut():t.onCopy()}))},F=function(e){j(e,!0)},I=function(e){j(e,!1)},q=function(e){var s=B(e);typeof s=="string"?(s&&t.onPaste(s,e),i.isIE&&setTimeout(A),r.preventDefault(e)):(n.value="",m=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",M),r.addListener(n,"input",H),r.addListener(n,"cut",F),r.addListener(n,"copy",I),r.addListener(n,"paste",q),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:I(e);break;case 86:q(e);break;case 88:F(e)}});var R=function(e){if(g||!t.onCompositionStart||t.$readOnly)return;g={};if(S)return;setTimeout(U,0),t.on("mousedown",W);var r=t.getSelectionRange();r.end.row=r.start.row,r.end.column=r.start.column,g.markerRange=r,g.selectionStart=N,t.onCompositionStart(g),g.useTextareaForIME?(n.value="",T="",N=0,C=0):(n.msGetInputContext&&(g.context=n.msGetInputContext()),n.getInputContext&&(g.context=n.getInputContext()))},U=function(){if(!g||!t.onCompositionUpdate||t.$readOnly)return;if(S)return W();if(g.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;P(e),g.markerRange&&(g.context&&(g.markerRange.start.column=g.selectionStart=g.context.compositionStartOffset),g.markerRange.end.column=g.markerRange.start.column+C-g.selectionStart)}},z=function(e){if(!t.onCompositionEnd||t.$readOnly)return;g=!1,t.onCompositionEnd(),t.off("mousedown",W),e&&H()},X=o.delayedCall(U,50).schedule.bind(null,null);r.addListener(n,"compositionstart",R),r.addListener(n,"compositionupdate",U),r.addListener(n,"keyup",V),r.addListener(n,"keydown",X),r.addListener(n,"compositionend",z),this.getElement=function(){return n},this.setCommandMode=function(e){S=e,n.readOnly=!1},this.setReadOnly=function(e){S||(n.readOnly=e)},this.setCopyWithEmptySelection=function(e){E=e},this.onContextMenu=function(e){D=!0,A(),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){b||(b=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+(i.isIE?"opacity:0.1;":"")+"text-indent: -"+(N+C)*t.renderer.characterWidth*.5+"px;";var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout($),i.isWin&&r.capture(t.container,h,J)},this.onContextMenuClose=J;var $,K=function(e){t.textInput.onContextMenu(e),J()};r.addListener(n,"mouseup",K),r.addListener(n,"mousedown",function(e){e.preventDefault(),J()}),r.addListener(t.renderer.scroller,"contextmenu",K),r.addListener(n,"contextmenu",K),p&&Q(e,t,n)};t.TextInput=v}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";function o(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function u(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function a(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/useragent"),i=0,s=550;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,s=e.getButton();if(s!==0){var o=i.getSelectionRange(),u=o.isEmpty();(u||s==1)&&i.selection.moveToPosition(n),s==2&&(i.textInput.onContextMenu(e.domEvent),r.isMozilla||e.preventDefault());return}this.mousedownEvent.time=Date.now();if(t&&!i.isFocused()){i.focus();if(this.$focusTimeout&&!this.$clickSelection&&!i.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;if(!this.mousedownEvent)return;this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=a(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>i||t-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,r=e.domEvent.timeStamp,i=r-n.t,o=i?e.wheelX/i:n.vx,u=i?e.wheelY/i:n.vy;i=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(f=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(f=!0);if(f)n.allowed=r;else if(r-n.allowedt.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.moveCursorToPosition(e),S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.selection.fromOrientedRange(m),t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a),f()};var f=function(){!a.basePath&&!a.workerPath&&!a.modePath&&!a.themePath&&!Object.keys(a.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),f=function(){})};t.init=l}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor,s=this.editor.renderer;s.$keepTextAreaAtCursor&&(s.$keepTextAreaAtCursor=null);var o=this,a=function(e){if(!e)return;if(i.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new u(e,o.editor),o.$mouseMoved=!0},f=function(e){n.off("beforeEndOperation",c),clearInterval(h),l(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",s.$keepTextAreaAtCursor==null&&(s.$keepTextAreaAtCursor=!0,s.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e),n.endOperation()},l=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){f(e)});var c=function(e){if(!o.releaseMouse)return;n.curOp.command.name&&n.curOp.selectionChanged&&(o[o.state+"End"]&&o[o.state+"End"](),o.state="",o.releaseMouse())};n.on("beforeEndOperation",c),n.startOperation({command:{name:"mouse"}}),o.$onCaptureMouseMove=a,o.releaseMouse=r.capture(this.editor.container,a,f);var h=setInterval(l,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimeout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";function i(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e.session,s=i.getFoldAt(n.row,n.column,1);s&&(t.getAccelKey()?i.removeFold(s):i.expandFold(s),t.stop());var o=t.domEvent&&t.domEvent.target;o&&r.hasCssClass(o,"ace_inline_button")&&r.hasCssClass(o,"ace_toggle_wrap")&&(i.setOption("wrap",!0),e.renderer.scrollCursorIntoView())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}var r=e("../lib/dom");t.FoldHandler=i}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/lib/bidiutil",["require","exports","module"],function(e,t,n){"use strict";function F(e,t,n,r){var i=s?d:p,c=null,h=null,v=null,m=0,g=null,y=null,b=-1,w=null,E=null,T=[];if(!r)for(w=0,r=[];w0)if(g==16){for(w=b;w-1){for(w=b;w=0;C--){if(r[C]!=N)break;t[C]=s}}}function I(e,t,n){if(o=e){u=i+1;while(u=e)u++;for(a=i,l=u-1;a=t.length||(o=n[r-1])!=b&&o!=w||(c=t[r+1])!=b&&c!=w)return E;return u&&(c=w),c==o?c:E;case k:o=r>0?n[r-1]:S;if(o==b&&r+10&&n[r-1]==b)return b;if(u)return E;p=r+1,h=t.length;while(p=1425&&d<=2303||d==64286;o=t[p];if(v&&(o==y||o==T))return y}if(r<1||(o=t[r-1])==S)return E;return n[r-1];case S:return u=!1,f=!0,s;case x:return l=!0,E;case O:case M:case D:case P:case _:u=!1;case H:return E}}function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5?/[\u0591-\u05f4]/.test(e)?y:g:n==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?A:/[\u0660-\u0669\u066b-\u066c]/.test(e)?w:t==1642?L:/[\u06f0-\u06f9]/.test(e)?b:T:n==32&&t<=8287?j[t&255]:n==254?t>=65136?T:E:E}function U(e){return e>="\u064b"&&e<="\u0655"}var r=["\u0621","\u0641"],i=["\u063a","\u064a"],s=0,o=0,u=!1,a=!1,f=!1,l=!1,c=!1,h=!1,p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],d=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v=0,m=1,g=0,y=1,b=2,w=3,E=4,S=5,x=6,T=7,N=8,C=9,k=10,L=11,A=12,O=13,M=14,_=15,D=16,P=17,H=18,B=[H,H,H,H,H,H,H,H,H,x,S,x,N,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,S,S,S,x,N,E,E,L,L,L,E,E,E,E,E,k,C,k,C,C,b,b,b,b,b,b,b,b,b,b,C,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,H,H,H,H,H,H,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,E,L,L,L,L,E,E,E,E,g,E,E,H,E,E,L,L,b,b,E,g,E,E,E,b,g,E,E,E,E,E],j=[N,N,N,N,N,N,N,N,N,N,N,H,H,H,g,y,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N,S,O,M,_,D,P,C,L,L,L,L,L,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,C,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N];t.L=g,t.R=y,t.EN=b,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="\u00b7",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var i=e.split(""),o=new Array(i.length),u=new Array(i.length),a=[];s=r?m:v,F(i,a,i.length,n);for(var f=0;fT&&n[f]0&&i[f-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(i[f])&&(a[f-1]=a[f]=t.R_H,f++);i[i.length-1]===t.DOT&&(a[i.length-1]=t.B),i[0]==="\u202b"&&(a[0]=t.RLE);for(var f=0;f=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,r=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){n=this.session.$getRowCacheIndex(t,this.currentRow-e-1);if(n!==r)break;r=n,e++}}else e=this.currentRow;return e},this.updateRowLine=function(e,t){e===undefined&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1,s=n?this.EOF:this.EOL;this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){var o=this.session.$wrapData[e];o&&(t===undefined&&(t=this.getSplitIndex()),t>0&&o.length?(this.wrapIndent=o.indent,this.wrapOffset=this.wrapIndent*this.charWidths[r.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,i=r.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[i]%2!==0&&i++;for(var u=0;ut&&s[i]%2===0&&(o+=this.charWidths[s[i]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},this.getSelections=function(e,t){var n=this.bidiMap,r=n.bidiLevels,i,s=[],o=0,u=Math.min(e,t)-this.wrapIndent,a=Math.max(e,t)-this.wrapIndent,f=!1,l=!1,c=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var h,p=0;p=u&&hn+s/2){n+=s;if(r===i.length-1){s=0;break}s=this.charWidths[i[++r]]}return r>0&&i[r-1]%2!==0&&i[r]%2===0?(e0&&i[r-1]%2===0&&i[r]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===i.length-1&&s===0&&i[r-1]%2===0||!this.isRtlDir&&r===0&&i[r]%2!==0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&i[r-1]%2!==0&&s!==0&&r--,t=this.bidiMap.logicalFromVisual[r]),t===0&&this.isRtlDir&&t++,t+this.wrapIndent}}).call(o.prototype),t.BidiHandler=o}),define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),!t.$isEmpty&&!t.$silent&&t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,!t.$isEmpty&&!t.$silent&&t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(e,t){var n=t?e.end:e.start,r=t?e.start:e.end;this.$setSelection(n.row,n.column,r.row,r.column)},this.$setSelection=function(e,t,n,r){var i=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,r),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||i!=this.$isEmpty||s)&&this._emit("changeSelection")},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var r=e.column,i=e.column+t;return n<0&&(r=e.column-t,i=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(r,i).split(" ").length-1==t},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var i=this.session.getFoldAt(e,t,1);if(i){this.moveCursorTo(i.end.row,i.end.column);return}this.session.nonTokenRe.exec(r)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t));if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(s)&&(t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t=0,n,r=/\s/,i=this.session.tokenRe;i.lastIndex=0;if(this.session.tokenRe.exec(e))t=this.session.tokenRe.lastIndex;else{while((n=e[t])&&r.test(n))t++;if(t<1){i.lastIndex=0;while((n=e[t])&&!i.test(n)){i.lastIndex=0,t++;if(r.test(n)){if(t>2){t--;break}while((n=e[t])&&r.test(n))t++;if(t>2)break}}}}return i.lastIndex=0,t},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(e!==0&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var i=this.session.screenToDocumentPosition(n.row+e,n.column,r);e!==0&&t===0&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||e>0)&&i.row++,this.moveCursorTo(i.row,i.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0;var i=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(i.charAt(t))&&i.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new r(this.$row,t,this.$row,t+e.value.length)}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c={'"':'"',"'":"'"},h=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},d=function(e){this.add("braces","insertion",function(t,n,r,i,s){var u=r.getCursorPosition(),a=i.doc.getLine(u.row);if(s=="{"){h(r);var l=r.getSelectionRange(),c=i.doc.getTextRange(l);if(c!==""&&c!=="{"&&r.getWrapBehavioursEnabled())return p(l,c,"{","}");if(d.isSaneInsertion(r,i))return/[\]\}\)]/.test(a[u.column])||r.inMultiSelectMode||e&&e.braces?(d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(r,i,"{"),{text:"{",selection:[1,1]})}else if(s=="}"){h(r);var v=a.substring(u.column,u.column+1);if(v=="}"){var m=i.$findOpeningBracket("}",{column:u.column+1,row:u.row});if(m!==null&&d.isAutoInsertedClosing(u,a,s))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(s=="\n"||s=="\r\n"){h(r);var g="";d.isMaybeInsertedClosing(u,a)&&(g=o.stringRepeat("}",f.maybeInsertedBrackets),d.clearMaybeInsertedClosing());var v=a.substring(u.column,u.column+1);if(v==="}"){var y=i.findMatchingBracket({row:u.row,column:u.column+1},"}");if(!y)return null;var b=this.$getIndent(i.getLine(y.row))}else{if(!g){d.clearMaybeInsertedClosing();return}var b=this.$getIndent(a)}var w=b+i.getTabString();return{text:"\n"+w+"\n"+b+g,selection:[1,w.length,1,w.length]}}d.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"(",")");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"[","]");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){var s=r.$mode.$quotes||c;if(i.length==1&&s[i]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;h(n);var o=i,u=n.getSelectionRange(),a=r.doc.getTextRange(u);if(a!==""&&(a.length!=1||!s[a])&&n.getWrapBehavioursEnabled())return p(u,a,o,o);if(!a){var f=n.getCursorPosition(),l=r.doc.getLine(f.row),d=l.substring(f.column-1,f.column),v=l.substring(f.column,f.column+1),m=r.getTokenAt(f.row,f.column),g=r.getTokenAt(f.row,f.column+1);if(d=="\\"&&m&&/escape/.test(m.type))return null;var y=m&&/string|escape/.test(m.type),b=!g||/string|escape/.test(g.type),w;if(v==o)w=y!==b,w&&/string\.end/.test(g.type)&&(w=!1);else{if(y&&!b)return null;if(y&&b)return null;var E=r.$mode.tokenRe;E.lastIndex=0;var S=E.test(d);E.lastIndex=0;var x=E.test(d);if(S||x)return null;if(v&&!/[\s;,.})\]\\]/.test(v))return null;w=!0}return{text:w?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.$mode.$quotes||c,o=r.doc.getTextRange(i);if(!i.isMultiLine()&&s.hasOwnProperty(o)){h(n);var u=r.doc.getLine(i.start.row),a=u.substring(i.start.column+1,i.start.column+2);if(a==o)return i.end.column++,i}})};d.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},d.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},d.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},d.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(d,i),t.CstyleBehaviour=d}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";var r=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],i=0,s=[];for(var o=0;o2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),u==Infinity&&(u=E,s=!1,o=!1),l&&u%f!=0&&(u=Math.floor(u/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new f(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,a=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new l(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new f(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new l(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);a.start.row==c&&(a.start.column+=h),a.end.row==c&&(a.end.column+=h),t.selection.fromOrientedRange(a)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)if(e[t]){var n=e[t],i=n.prototype.$id,s=r.$modes[i];s||(r.$modes[i]=s=new n),r.$modes[t]||(r.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length-t+1,i=e.start.row,s=e.start.column;for(var o=0,u=0;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r==-1&&(r=t),s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=r)break}if(e.action=="insert"){var f=i-r,l=-t.column+n.column;for(;or)break;a.start.row==r&&a.start.column>=t.column&&(a.start.column!=t.column||!this.$insertRight)&&(a.start.column+=l,a.start.row+=f);if(a.end.row==r&&a.end.column>=t.column){if(a.end.column==t.column&&this.$insertRight)continue;a.end.column==t.column&&l>0&&oa.start.column&&a.end.column==s[o+1].start.column&&(a.end.column-=l),a.end.column+=l,a.end.row+=f}}}else{var f=r-i,l=t.column-n.column;for(;oi)break;if(a.end.rowt.column)a.end.column=t.column,a.end.row=t.row}else a.end.column+=l,a.end.row+=f;else a.end.row>i&&(a.end.row+=f);if(a.start.rowt.column)a.start.column=t.column,a.start.row=t.row}else a.start.column+=l,a.start.row+=f;else a.start.row>i&&(a.start.row+=f)}}if(f!=0&&o=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(tl)break}while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return f.end.row=i.getCurrentTokenRow(),f.end.column=i.getCurrentTokenColumn()+s.value.length-2,f}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=e.length-1;n!=-1;n--){var r=e[n];r.action=="insert"||r.action=="remove"?this.doc.revertDelta(r):r.folds&&this.addFolds(r.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,f=s.start,o=f.row-a.row,u=f.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new l(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),o=this.$wrapData,u=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,o){var u;if(e!=null){u=this.$getDisplayTokens(e,a.length),u[0]=n;for(var f=1;fr-b){var w=f+r-b;if(e[w-1]>=c&&e[w]>=c){y(w);continue}if(e[w]==n||e[w]==s){for(w;w!=f-1;w--)if(e[w]==n)break;if(w>f){y(w);continue}w=f+r;for(w;w>2)),f-1);while(w>E&&e[w]E&&e[w]E&&e[w]==a)w--}else while(w>E&&e[w]E){y(++w);continue}w=f+r,e[w]==t&&w--,y(w-b)}return o},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(a):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var u=f[l],i=this.$docRowCache[l],h=e>f[c-1];else var h=!c;var p=this.getLength()-1,d=this.getNextFoldLine(i),v=d?d.start.row:Infinity;while(u<=e){a=this.getRowLength(i);if(u+a>e||i>=p)break;u+=a,i++,i>v&&(i=d.end.row+1,d=this.getNextFoldLine(i,d),v=d?d.start.row:Infinity),h&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(d&&d.start.row<=i)r=this.getFoldDisplayLine(d),i=d.start.row;else{if(u+a<=e||i>p)return{row:p,column:this.getLine(p).length};r=this.getLine(i),d=null}var m=0,g=Math.floor(e-u);if(this.$useWrapMode){var y=this.$wrapData[i];y&&(o=y[g],g>0&&y.length&&(m=y.indent,s=y[g-1]||y[y.length-1],r=r.substring(s)))}return n!==undefined&&this.$bidiHandler.isBidiRow(u+g,i,g)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(r,t-m)[1],this.$useWrapMode&&s>=o&&(s=o-1),d?d.idxToPosition(s):{row:i,column:s}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=m}.call(d.prototype),e("./edit_session/folding").Folding.call(d.prototype),e("./edit_session/bracket_match").BracketMatch.call(d.prototype),o.defineOptions(d.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){e=parseInt(e);if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=d}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i,o){return r=new s(e,n,i,o),n==o&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start)?(r=null,!1):!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=u;n--)if(c(n,Number.MAX_VALUE,e))return;if(t.wrap==0)return;for(n=a,u=o.row;n>=u;n--)if(c(n,Number.MAX_VALUE,e))return};else var f=function(e){var n=o.row;if(c(n,o.column,e))return;for(n+=1;n<=a;n++)if(c(n,0,e))return;if(t.wrap==0)return;for(n=u,a=o.row;n<=a;n++)if(c(n,0,e))return};if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var o=r?t-l+1:t;if(o<0)return;var u=e.getLine(o),a=u.search(n[0]);if(!r&&ai)return;if(s(o,a,o+l-1,c))return!0};else if(r)var c=function(t,r,i){var s=e.getLine(t),o=[],u,a=0;n.lastIndex=0;while(u=n.exec(s)){var f=u[0].length;a=u.index;if(!f){if(a>=s.length)break;n.lastIndex=a+=1}if(u.index+f>r)break;o.push(u.index,f)}for(var l=o.length-1;l>=0;l-=2){var c=o[l-1],f=o[l];if(i(t,c,t,c+f))return!0}};else var c=function(t,r,i){var s=e.getLine(t),o,u;n.lastIndex=r;while(u=n.exec(s)){var a=u[0].length;o=u.index;if(i(t,o,t,o+a))return!0;if(!a){n.lastIndex=o+=1;if(o>=s.length)return!1}}};return{forEach:f}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(this.$checkCommandState!=0&&e.isAvailable&&!e.isAvailable(t))return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){typeof t=="number"&&!isNaN(t)&&e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty(),n=t?e.selection.getLineRange():e.selection.getRange();e._emit("cut",n),n.isEmpty()||e.session.remove(n),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var s=this.selection.toJSON();this.curOp.selectionAfter=s,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(s),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"&&e!="ace"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container).fontSize},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column,r=t.end.column,i=e.getLine(t.start.row),s=i.substring(n,r);if(s.length>5e3||!/[\w\d]/.test(s))return;var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),u=i.substring(n-1,r+1);if(!o.test(u))return;return o},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;var r=this.selection.getAllRanges();for(var i=0;is.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var o=s.length;o--;){var u=s[o];u.isEmpty()||r.remove(u),r.insert(u.start,i[o])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.inVirtualSelectionMode||(this.session.mergeUndoDeltas=!1,this.mergeNextCommand=!1)),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()&&e.indexOf("\n")==-1){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(e,t){if(t.extendLeft||t.extendRight){var n=this.selection.getRange();n.start.column-=t.extendLeft,n.end.column+=t.extendRight,this.selection.setRange(n),!e&&!n.isEmpty()&&this.remove()}(e||!this.selection.isEmpty())&&this.insert(e,!0);if(t.restoreStart||t.restoreEnd){var n=this.selection.getRange();n.start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n)}},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var i=new p(0,0,0,0);for(var r=e.first;r<=e.last;r++){var s=t.getLine(r);i.start.row=r,i.end.row=r,i.end.column=s.length,t.replace(i,n[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=u&&o<=a&&(n=t,f.selection.clearSelection(),f.moveCursorTo(e,u+r),f.selection.selectTo(e,a+r)),u=a});var l=this.$toggleWordPairs,c;for(var h=0;hp+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(e)},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))},this.prompt=function(e,t,n){var r=this;g.loadModule("./ext/prompt",function(i){i.prompt(r,e,t,n)})}}.call(w.prototype),g.defineOptions(w.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?E.attach(this):E.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?E.attach(this):E.detach(this)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var E={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=w}),define("ace/undomanager",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){for(var n=t;n--;){var r=e[n];if(r&&!r[0].ignore){while(n0){a.row+=i,a.column+=a.row==r.row?s:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}}function f(e){return{row:e.row,column:e.column}}function l(e){return{start:f(e.start),end:f(e.end),action:e.action,lines:e.lines.slice()}}function c(e){e=e||this;if(Array.isArray(e))return e.map(c).join("\n");var t="";e.action?(t=e.action=="insert"?"+":"-",t+="["+e.lines+"]"):e.value&&(Array.isArray(e.value)?t=e.value.map(h).join("\n"):t=h(e.value)),e.start&&(t+=h(e));if(e.id||e.rev)t+=" ("+(e.id||e.rev)+")";return t}function h(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function p(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}else if(!n&&r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(!n&&!r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}return[t,e]}function d(e,t){for(var n=e.length;n--;)for(var r=0;r=0?m(e,t,-1):o(e.start,t.start)<=0?m(t,e,1):(m(e,s.fromPoints(t.start,e.start),-1),m(t,e,1));else if(!n&&r)o(t.start,e.end)>=0?m(t,e,-1):o(t.start,e.start)<=0?m(e,t,1):(m(t,s.fromPoints(e.start,t.start),-1),m(e,t,1));else if(!n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0)){var i,u;return o(e.start,t.start)<0&&(i=e,e=y(e,t.start)),o(e.end,t.end)>0&&(u=y(e,t.end)),g(t.end,e.start,e.end,-1),u&&!i&&(e.lines=u.lines,e.start=u.start,e.end=u.end,u=e),[t,i,u].filter(Boolean)}m(e,t,-1)}return[t,e]}function m(e,t,n){g(e.start,t.start,t.end,n),g(e.end,t.start,t.end,n)}function g(e,t,n,r){e.row==(r==1?t:n).row&&(e.column+=r*(n.column-t.column)),e.row+=r*(n.row-t.row)}function y(e,t){var n=e.lines,r=e.end;e.end=f(t);var i=e.end.row-e.start.row,s=n.splice(i,n.length),o=i?t.column:t.column-e.start.column;n.push(s[0].substring(0,o)),s[0]=s[0].substr(o);var u={start:f(t),end:r,lines:s,action:e.action};return u}function b(e,t){t=l(t);for(var n=e.length;n--;){var r=e[n];for(var i=0;i0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(e){e==undefined&&(e=this.$rev),this.mark=e},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(e){return e?c(e):c(this.$undoStack)+"\n---\n"+c(this.$redoStack)}}).call(r.prototype);var s=e("./range").Range,o=s.comparePoints,u=s.comparePoints;t.UndoManager=r}),define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0};(function(){this.moveContainer=function(e){r.translate(this.element,0,-(e.firstRowScreen*e.lineHeight%this.canvasHeight)-e.offset*this.$offsetCoefficient)},this.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},this.computeLineTop=function(e,t,n){var r=t.firstRowScreen*t.lineHeight,i=Math.floor(r/this.canvasHeight),s=n.documentToScreenRow(e,0)*t.lineHeight;return s-i*this.canvasHeight},this.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLength(e)},this.getLength=function(){return this.cells.length},this.get=function(e){return this.cells[e]},this.shift=function(){this.$cacheCell(this.cells.shift())},this.pop=function(){this.$cacheCell(this.cells.pop())},this.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);var t=r.createFragment(this.element);for(var n=0;ns&&(a=i.end.row+1,i=t.getNextFoldLine(a,i),s=i?i.start.row:Infinity);if(a>r){while(this.$lines.getLength()>u+1)this.$lines.pop();break}o=this.$lines.get(++u),o?o.row=a:(o=this.$lines.createCell(a,e,this.session,f),this.$lines.push(o)),this.$renderCell(o,e,i,a),a++}this._signal("afterRender"),this.$updateGutterWidth(e)},this.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,r=t.$firstLineNumber,i=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||t.$useWrapMode)i=t.getLength()+r-1;var s=n?n.getWidth(t,i,e):i.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();s+=o.left+o.right,s!==this.gutterWidth&&!isNaN(s)&&(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},this.$updateCursorRow=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.getCursor();if(this.$cursorRow===e.row)return;this.$cursorRow=e.row},this.updateLineHighlight=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.cursor.row;this.$cursorRow=e;if(this.$cursorCell&&this.$cursorCell.row==e)return;this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(r.row>this.$cursorRow){var i=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&i&&i.start.row==t[n-1].row))break;r=t[n-1]}r.element.className="ace_gutter-active-line "+r.element.className,this.$cursorCell=r;break}}},this.scrollLines=function(e){var t=this.config;this.config=e,this.$updateCursorRow();if(this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),r=this.oldLastRow;this.oldLastRow=n;if(!t||r0;i--)this.$lines.shift();if(r>n)for(var i=this.session.getFoldedRowCount(n+1,r);i>0;i--)this.$lines.pop();e.firstRowr&&this.$lines.push(this.$renderLines(e,r+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},this.$renderLines=function(e,t,n){var r=[],i=t,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>n)break;var u=this.$lines.createCell(i,e,this.session,f);this.$renderCell(u,e,s,i),r.push(u),i++}return r},this.$renderCell=function(e,t,n,i){var s=e.element,o=this.session,u=s.childNodes[0],a=s.childNodes[1],f=o.$firstLineNumber,l=o.$breakpoints,c=o.$decorations,h=o.gutterRenderer||this.$renderer,p=this.$showFoldWidgets&&o.foldWidgets,d=n?n.start.row:Number.MAX_VALUE,v="ace_gutter-cell ";this.$highlightGutterLine&&(i==this.$cursorRow||n&&i=d&&this.$cursorRow<=n.end.row)&&(v+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),l[i]&&(v+=l[i]),c[i]&&(v+=c[i]),this.$annotations[i]&&(v+=this.$annotations[i].className),s.className!=v&&(s.className=v);if(p){var m=p[i];m==null&&(m=p[i]=o.getFoldWidget(i))}if(m){var v="ace_fold-widget ace_"+m;m=="start"&&i==d&&in.right-t.right)return"foldWidgets"}}).call(a.prototype),t.Gutter=a}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.elt=function(e,t){var n=this.i!=-1&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},this.update=function(e){if(!e)return;this.config=e,this.i=0;var t;for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}if(this.i!=-1)while(this.ip,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"";if(this.session.$bidiHandler.isBidiRow(t.start.row)){var f=t.clone();f.end.row=f.start.row,f.end.column=this.session.getLine(f.start.row).length,this.drawBidiSingleLineMarker(e,f,n+" ace_br1 ace_start",r,null,i)}else this.elt(n+" ace_br1 ace_start","height:"+o+"px;"+"right:0;"+"top:"+u+"px;left:"+a+"px;"+(i||""));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var f=t.clone();f.start.row=f.end.row,f.start.column=0,this.drawBidiSingleLineMarker(e,f,n+" ace_br12",r,null,i)}else{u=this.$getTop(t.end.row,r);var l=t.end.column*r.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;"+"width:"+l+"px;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))}o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var c=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(c?" ace_br"+c:""),"height:"+o+"px;"+"right:0;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))},this.drawSingleLineMarker=function(e,t,n,r,i,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,r,i,s);var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;this.elt(n,"height:"+o+"px;"+"width:"+u+"px;"+"top:"+a+"px;"+"left:"+f+"px;"+(s||""))},this.drawBidiSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=this.$getTop(t.start.row,r),a=this.$padding,f=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);f.forEach(function(e){this.elt(n,"height:"+o+"px;"+"width:"+e.width+(i||0)+"px;"+"top:"+u+"px;"+"left:"+(a+e.left)+"px;"+(s||""))},this)},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,u=e("../lib/event_emitter").EventEmitter,a=function(e){this.dom=i,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var e=this.session.doc,t=e.getNewLineCharacter()=="\n"&&e.getNewLineMode()!="windows",n=t?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=n)return this.EOL_CHAR=n,!0},this.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;nl&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),l=a?a.start.row:Infinity);if(u>i)break;var c=s[o++];if(c){this.dom.removeChildren(c),this.$renderLine(c,u,u==l?a:!1);var h=e.lineHeight*this.session.getRowLength(u)+"px";c.style.height!=h&&(f=!0,c.style.height=h)}u++}if(f)while(o0;i--)this.$lines.shift();if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow))},this.$renderLinesFragment=function(e,t,n){var r=[],s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=this.$lines.createCell(s,e,this.session),f=a.element;this.dom.removeChildren(f),i.setStyle(f.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),i.setStyle(f.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(f,s,s==u?o:!1),this.$useLineGroups()?f.className="ace_line_group":f.className="ace_line",r.push(a),s++}return r},this.update=function(e){this.$lines.moveContainer(e),this.config=e;var t=e.firstRow,n=e.lastRow,r=this.$lines;while(r.getLength())r.pop();r.push(this.$renderLinesFragment(e,t,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,u=this.dom.createFragment(this.element),a,f=0;while(a=o.exec(r)){var l=a[1],c=a[2],h=a[3],p=a[4],d=a[5];if(!i.showInvisibles&&c)continue;var v=f!=a.index?r.slice(f,a.index):"";f=a.index+a[0].length,v&&u.appendChild(this.dom.createTextNode(v,this.element));if(l){var m=i.session.getScreenTabSize(t+a.index);u.appendChild(i.$tabStrings[m].cloneNode(!0)),t+=m-1}else if(c)if(i.showInvisibles){var g=this.dom.createElement("span");g.className="ace_invisible ace_invisible_space",g.textContent=s.stringRepeat(i.SPACE_CHAR,c.length),u.appendChild(g)}else u.appendChild(this.com.createTextNode(c,this.element));else if(h){var g=this.dom.createElement("span");g.className="ace_invisible ace_invisible_space ace_invalid",g.textContent=s.stringRepeat(i.SPACE_CHAR,h.length),u.appendChild(g)}else if(p){var y=i.showInvisibles?i.SPACE_CHAR:"";t+=1;var g=this.dom.createElement("span");g.style.width=i.config.characterWidth*2+"px",g.className=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",g.textContent=i.showInvisibles?i.SPACE_CHAR:"",u.appendChild(g)}else if(d){t+=1;var g=this.dom.createElement("span");g.style.width=i.config.characterWidth*2+"px",g.className="ace_cjk",g.textContent=d,u.appendChild(g)}}u.appendChild(this.dom.createTextNode(f?r.slice(f):r,this.element));if(!this.$textToken[n.type]){var b="ace_"+n.type.replace(/\./g," ace_"),g=this.dom.createElement("span");n.type=="fold"&&(g.style.width=n.value.length*this.config.characterWidth+"px"),g.className=b,g.appendChild(u),e.appendChild(g)}else e.appendChild(u);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);if(r<=0||r>=n)return t;if(t[0]==" "){r-=r%this.tabSize;var i=r/this.tabSize;for(var s=0;s=o)u=this.$renderToken(a,u,l,c.substring(0,o-r)),c=c.substring(o-r),r=o,a=this.$createLineElement(),e.appendChild(a),a.appendChild(this.dom.createTextNode(s.stringRepeat("\u00a0",n.indent),this.element)),i++,u=0,o=n[i]||Number.MAX_VALUE;c.length!=0&&(r+=c.length,u=this.$renderToken(a,u,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;sthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,r,i);n=this.$renderToken(e,n,r,i)}},this.$renderOverflowMessage=function(e,t,n,r){this.$renderToken(e,t,n,r.slice(0,this.MAX_LINE_LENGTH-t));var i=this.dom.createElement("span");i.className="ace_inline_button ace_keyword ace_toggle_wrap",i.style.position="absolute",i.style.right="0",i.textContent="",e.appendChild(i)},this.$renderLine=function(e,t,n){!n&&n!=0&&(n=this.session.getFoldLine(t));if(n)var r=this.$getFoldLineTokens(t,n);else var r=this.session.getTokens(t);var i=e;if(r.length){var s=this.session.getRowSplitData(t);if(s&&s.length){this.$renderWrappedLine(e,r,s);var i=e.lastChild}else{var i=e;this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i)),this.$renderSimpleLine(i,r)}}else this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i));if(this.showInvisibles&&i){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,i.appendChild(o)}},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)r.setStyle(t[n].style,"opacity",e?"":"0")},this.$startCssAnimation=function(){var e=this.cursors;for(var t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){r.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){r.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));if(r.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)continue;var u=this.cursors[i++]||this.addCursor(),a=u.style;this.drawCursor?this.drawCursor(u,o,e,t[n],this.session):this.isCursorInView(o,e)?(r.setStyle(a,"display","block"),r.translate(u,o.left,o.top),r.setStyle(a,"width",Math.round(e.characterWidth)+"px"),r.setStyle(a,"height",e.lineHeight+"px")):r.setStyle(a,"display","none")}while(this.cursors.length>i)this.removeCursor();var f=this.session.getOverwrite();this.$setOverwrite(f),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;t&&(r.blockIdle(100),n.changes=0,n.onRender(t));if(n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(r.nextFrame(this._flush),this.pending=!0)},this.clear=function(e){var t=this.changes;return this.changes=0,t}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),u=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,f=256,l=typeof ResizeObserver=="function",c=200,h=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.innerHTML=s.stringRepeat("X",f),this.$characterSize={width:0,height:0},l?this.$addObserver():this.checkForSizeChanges()};(function(){r.implement(this,a),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",u.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(e){e===undefined&&(e=this.$measureSizes());if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver(function(t){var n=t[0].contentRect;e.checkForSizeChanges({height:n.height,width:n.width/f})}),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle(function t(){e.checkForSizeChanges(),o.onIdle(t,500)},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/f};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,f);var t=this.$main.getBoundingClientRect();return t.width/f},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function e(t){return t?(window.getComputedStyle(t).zoom||1)*e(t.parentElement):1},this.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=i.buildDom([e(0,0),e(c,0),e(0,c),e(c,c)],this.el)},this.transformCoordinates=function(e,t){function r(e,t,n){var r=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/r,(+e[1]*n[0]-e[0]*n[1])/r]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function s(e,t){return[e[0]+t[0],e[1]+t[1]]}function o(e,t){return[e*t[0],e*t[1]]}function u(e){var t=e.getBoundingClientRect();return[t.left,t.top]}if(e){var n=this.$getZoom(this.el);e=o(1/n,e)}this.els||this.$initTransformMeasureNodes();var a=u(this.els[0]),f=u(this.els[1]),l=u(this.els[2]),h=u(this.els[3]),p=r(i(h,f),i(h,l),i(s(f,l),s(h,a))),d=o(1+p[0],i(f,a)),v=o(1+p[1],i(l,a));if(t){var m=t,g=p[0]*m[0]/c+p[1]*m[1]/c+1,y=s(o(m[0],d),o(m[1],v));return s(o(1/g/c,y),a)}var b=i(e,a),w=r(i(d,o(p[0],b)),i(v,o(p[1],b)),b);return o(c,w)}}).call(h.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./layer/gutter").Gutter,u=e("./layer/marker").Marker,a=e("./layer/text").Text,f=e("./layer/cursor").Cursor,l=e("./scrollbar").HScrollBar,c=e("./scrollbar").VScrollBar,h=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,d=e("./lib/event_emitter").EventEmitter,v='.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;perspective: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}',m=e("./lib/useragent"),g=m.isIE;i.importCssString(v,"ace_editor.css");var y=function(e,t){var n=this;this.container=e||i.createElement("div"),i.addCssClass(this.container,"ace_editor"),i.HI_DPI&&i.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new o(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new u(this.content);var r=this.$textLayer=new a(this.content);this.canvas=r.element,this.$markerFront=new u(this.content),this.$cursorLayer=new f(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new c(this.container,this),this.scrollBarH=new l(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!m.isIOS,this.$loop=new h(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var s=0,o=this.$size,u={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};r&&(e||o.height!=r)&&(o.height=r,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL);if(n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,i.setStyle(this.scrollBarH.element.style,"left",t+"px"),i.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),i.setStyle(this.$gutter.style,"left",this.margin.left+"px");var a=this.scrollBarV.getWidth()+"px";i.setStyle(this.scrollBarH.element.style,"right",a),i.setStyle(this.scroller.style,"right",a),i.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight());if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}return o.$dirty=!n||!r,s&&this._signal("resize",u),s},this.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){var e=this.textarea.style;if(!this.$keepTextAreaAtCursor){i.translate(this.textarea,-100,0);return}var t=this.$cursorLayer.$pixelPos;if(!t)return;var n=this.$composition;n&&n.markerRange&&(t=this.$cursorLayer.getPixelPosition(n.markerRange.start,!0));var r=this.layerConfig,s=t.top,o=t.left;s-=r.offset;var u=n&&n.useTextareaForIME?this.lineHeight:g?0:1;if(s<0||s>r.height-u){i.translate(this.textarea,0,0);return}var a=1;if(!n)s+=this.lineHeight;else if(n.useTextareaForIME){var f=this.textarea.value;a=this.characterWidth*this.session.$getStringScreenWidth(f)[0],u+=2}else s+=this.lineHeight+2;o-=this.scrollLeft,o>this.$size.scrollerWidth-a&&(o=this.$size.scrollerWidth-a),o+=this.gutterWidth+this.margin.left,i.setStyle(e,"height",u+"px"),i.setStyle(e,"width",a+"px"),i.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-a),Math.min(s,this.$size.height-u))},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.setMargin=function(e,t,n,r){var i=this.margin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig()|this.$loop.clear();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),i.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";i.setStyle(this.content.style,"width",s),i.setStyle(this.content.style,"height",o)}e&this.CHANGE_H_SCROLL&&(i.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(n):e&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=n<=2*this.lineHeight,i=!r&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var s=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=t.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l;var c=this.scrollMargin;this.session.setScrollTop(Math.max(-c.top,Math.min(this.scrollTop,i-t.scrollerHeight+c.bottom))),this.session.setScrollLeft(Math.max(-c.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+c.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop>c.top),p=a!==h;p&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var d=this.scrollTop%this.lineHeight,v=Math.ceil(f/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-d)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),f=t.scrollerHeight+e.getRowLength(g)*w+b,d=this.scrollTop-y*w;var S=0;if(this.layerConfig.width!=s||u)S=this.CHANGE_H_SCROLL;if(u||p)S|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:f,maxHeight:i,offset:d,gutterOffset:w?Math.max(0,Math.ceil((d+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(s-this.$padding),S},this.$updateLines=function(){if(!this.$changedLines)return;var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),u=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:u,side:s-u>0?1:-1,offsetX:i}},this.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),u=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(u,Math.max(o,0),i)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,e)?this.session.$bidiHandler.getPosLeft(r.column):Math.round(r.column*this.characterWidth)),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText,e.keepTextAreaAtCursor=this.$keepTextAreaAtCursor),e.useTextareaForIME=this.$useTextareaForIME,this.$useTextareaForIME?(this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null,this.$cursorLayer.element.style.display=""},this.addToken=function(e,t,n,r){var i=this.session;i.bgTokenizer.lines[n]=null;var s={type:t,value:e},o=i.getTokens(n);if(r==null)o.push(s);else{var u=0;for(var a=0;a50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(f.prototype);var l=function(e,t,n){var r=null,i=!1,u=Object.create(s),a=[],l=new f({messageBuffer:a,terminate:function(){},postMessage:function(e){a.push(e);if(!r)return;i?setTimeout(c):c()}});l.setEmitSync=function(e){i=e};var c=function(){var e=a.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};return u.postMessage=function(e){l.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.length)c()}),l};t.UIWorkerClient=l,t.WorkerClient=f,t.createWorker=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)g--;if(g>0){var y=0;while(r[y].isEmpty())y++}for(var b=g;b>=y;b--)r[b].isEmpty()&&r.splice(b,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges(),u.ranges[0]&&u.fromOrientedRange(u.ranges[0]);var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.$id="ace/theme/textmate";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./range").Range,o=e("./editor").Editor,u=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,f=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e,n){if(typeof e=="string"){var s=e;e=document.getElementById(s);if(!e)throw new Error("ace.edit can't find div #"+s)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var u="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;u=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(u=e.textContent,e.innerHTML="");var l=t.createEditSession(u),c=new o(new f(e),l,n),h={document:l,editor:c,onResize:c.resize.bind(c,null)};return a&&(h.textarea=a),i.addListener(window,"resize",h.onResize),c.on("destroy",function(){i.removeListener(window,"resize",h.onResize),h.editor.container.env=null}),c.container.env=c.env=h,c},t.createEditSession=function(e,t){var n=new u(e,t);return n.setUndoManager(new a),n},t.Range=s,t.Editor=o,t.EditSession=u,t.UndoManager=a,t.VirtualRenderer=f,t.version="1.4.4"}); (function() { window.require(["ace/ace"], function(a) { if (a) { a.config.init(true); diff --git a/BTPanel/static/ace/editor.config.json b/BTPanel/static/ace/editor.config.json index af033a68..b3bce8a1 100644 --- a/BTPanel/static/ace/editor.config.json +++ b/BTPanel/static/ace/editor.config.json @@ -1 +1 @@ -{"fontSize":"12px","theme":"monokai"} \ No newline at end of file +{"fontSize":"13px","theme":"monokai"} \ No newline at end of file diff --git a/BTPanel/static/ace/styles/icons.css b/BTPanel/static/ace/styles/icons.css index 4f1246a4..6517f227 100644 --- a/BTPanel/static/ace/styles/icons.css +++ b/BTPanel/static/ace/styles/icons.css @@ -22,6 +22,12 @@ font-weight: normal; font-style: normal; } +@font-face { + font-family: octicons; + src: url("../icons/octicons.woff2"); + font-weight: normal; + font-style: normal; +} .binary-icon:before { font-family: "Octicons Regular"; font-size: 16px; @@ -110,12 +116,6 @@ top: 1px; content: "\f0b0"; } -.markdown-icon:before { - font-family: "Octicons Regular"; - font-size: 16px; - top: 1px; - content: "\f0c9"; -} .package-icon:before { font-family: "Octicons Regular"; font-size: 16px; @@ -698,7 +698,8 @@ top: 3px; content: "\e618"; } -.perl-icon:before { +.perl-icon:before{ + color: #ff9800; font-family: Devicons; font-size: 16px; top: 3px; @@ -4911,3 +4912,31 @@ content: "\1b6"; top: 2px; } +.sh-icon:before{ + color: #aa759f; + content: '\f0c8'; + font-family: file-icons; + font-size: 14px; +} +.text-icon:before{ + color: #cccccc; + content: '\f011'; + font-family: octicons; +} + +.compress-icon:before{ + color: #46788d; + content: '\f013'; + font-family: octicons; +} + +.images-icon:before{ + color: #d28445; + content: '\f012'; + font-family: octicons; +} +.markdown-icon:before { + color: #6a9fb5; + font-family: octicons; + content: "\f0c9"; +} \ No newline at end of file diff --git a/BTPanel/static/css/315302-20170205164840214-221836365.png b/BTPanel/static/css/315302-20170205164840214-221836365.png deleted file mode 100644 index bbe1668624a9344092d4bf4ff7374281aefeed5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18551 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 hVz~QAEvEUf&&XSzw1JM@UDv=953yIKiWxMS98 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 diff --git a/BTPanel/static/css/site.css b/BTPanel/static/css/site.css index 2853f14f..598616ea 100644 --- a/BTPanel/static/css/site.css +++ b/BTPanel/static/css/site.css @@ -279,6 +279,9 @@ html { .ml33{ margin-left: 38px } +.ml35{ + margin-left: 35px; +} .ml45 { margin-left: 50px } @@ -1059,7 +1062,7 @@ html .menu .menu_exit:hover { .pos-box { height: 50px; width: 100%; - /*box-shadow: 0 1px 2px 0 rgba(0,0,0,.1);*/ + box-shadow: 0 1px 2px 0 rgba(0,0,0,.1); } .conter-box{ @@ -1068,9 +1071,9 @@ html .menu .menu_exit:hover { .position { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKwwAACsMBNCkkqwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAFZSURBVDiNpdO9a1VBEAXw3zOioIUQEdFGkQdWVtr6D1ikERtRppLU6awUsUkh2CgoBNwhoPhsLESxERR7wcI2XSBNMAHRNFmLbB6Xa64RXFjYOXvmzMfOjmqt/mcd2I+QmUuZOcgbDWWQmTN4iFms4wGu4jC+RMT7wQwy8xBe4FtE3MBXPMdqE5sfLCEzj+Il3kXEE4iIJTzFFbzB9z0FMvMYJphExLPuXUQs4y1eYfmPHmTmbHN+FBGv92zMDm+ulXAzItZHtVaZeRH3sBgRn4ecOyKXcRt3dkuYwyJOZeaJfZyP42TjX1Nrne5SyqSUMu5ho559tpQy2bUP9gL8wHYnzbtYzczTuB8RHzs8/H0Sz+ETbuEDxg3f7pL6AhW/2vknNiNiCxvY6uDT8e2XMINLmbmC89js3I0z8wLOdP36Aht43KIcwULD1+w82/WGT+dk8DP96/oNlqecb6uu8YEAAAAASUVORK5CYII="); - background-position: 20px 17px; + background-position: 17px 13px; background-repeat: no-repeat; - /*background-size: 20px auto;*/ + background-size: 20px auto; line-height: 50px; padding-left: 30px; } @@ -1709,9 +1712,11 @@ html .menu .menu_exit:hover { float: left; background-color: #f0f0f1; height: 100%; - width: 170px + width: 170px; +} +.mes_channel .bt-w-menu { + width: 110px; } - .bt-w-menu p { cursor: pointer; height: 40px; @@ -1719,7 +1724,9 @@ html .menu .menu_exit:hover { padding-left: 20px; position: relative; text-overflow: ellipsis; - overflow: hidden + overflow: hidden; + white-space: nowrap; + padding-right: 5px; } .bt-w-menu p a { @@ -1734,6 +1741,9 @@ html .menu .menu_exit:hover { margin-left: 170px; position: relative } +.mes_channel .bt-w-con { + margin-left: 110px; +} .label-input-group input { margin-top: 0; @@ -2026,8 +2036,8 @@ html .menu .menu_exit:hover { .fangshi label { font-weight: normal; - margin-right: 44px; - float: right + margin-right: 30px; + margin-left: 10px; } .fangshi label input { @@ -2172,8 +2182,8 @@ html .menu .menu_exit:hover { } .softlist td img { - width: 24px; - height: 20px; + width: 25px; + height: 25px; margin-right: 5px } @@ -2302,11 +2312,10 @@ html .menu .menu_exit:hover { } .setting-con div.mtb15 .modify { - margin-left: -40px; + margin-left: -57px; vertical-align: 0; - position: absolute; - right: 4px; - top: 4px; + /* position: relative; + right: 60px; */ } .setting-con div.mtb15 .set-info { @@ -3582,7 +3591,7 @@ html .menu .menu_exit:hover { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - width: 240px + width: 230px } #up_box li .filesize { @@ -3673,12 +3682,29 @@ html .menu .menu_exit:hover { .setchmod{ padding: 25px 0 75px 0; } +.setchmod .bt_tab_list{ + background-color: #ececec; + font-size: 0; + text-align: center; +} +.setchmod .bt_tab_list .bt_tab_index{ + height: 43px; + line-height: 42px; + display: inline-block; + font-size: 14px; + width: 50%; + text-align: center; + cursor: pointer; +} +.bt_tab_list .active{ + background: #fff; +} .setchmod .setchmodnum{ - padding: 0 15px 0; + padding: 0 23px 0; margin: 0; } .setchmod fieldset { - margin-left: 15px; + margin-left: 23px; margin-bottom: 15px; border: 1px solid #ccc; float: left; @@ -4006,6 +4032,12 @@ html .menu .menu_exit:hover { padding: 0 10px; position: static } +.openlite_set .tname{ + width: 150px; +} +.openlite_set .openlite_button .tname{ + width: 145px; +} .conf_p{ overflow: hidden; } @@ -4833,13 +4865,12 @@ select[disabled]{ } .tab-db-status .line:nth-child(1) .ml0{ margin-bottom: 10px; - padding-left: 95px; padding-bottom: 8px; border-bottom: 1px solid #ccc; } .tab-db-status .bt_mysql_restart{ - margin-left: 355px; - margin-top: 10px; + margin-left: 75px; + margin-top: 30px; } #database_fix table td span{ display:block; @@ -4879,6 +4910,10 @@ select[disabled]{ text-overflow: ellipsis; white-space: nowrap; } +#softList tr td:nth-child(3) >span{ + white-space: inherit; + min-width: 151px; +} #proxy_config_con .line .info-r, #redirect_config_con .line .info-r{ margin-left: 0; @@ -4889,27 +4924,22 @@ select[disabled]{ left: 15px; } -::-webkit-scrollbar -{ - width: 12px; - height: 9px; +::-webkit-scrollbar { + /*滚动条整体样式*/ + width : 10px; /*高宽分别对应横竖滚动条的尺寸*/ + height: 1px; } -::-webkit-scrollbar-track-piece -{ - background-color: #ebebeb; - -webkit-border-radius: 6px; +::-webkit-scrollbar-thumb { + /*滚动条里面小方块*/ + border-radius: 10px; + box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2); + background : #999; } -::-webkit-scrollbar-thumb:vertical -{ - height: 32px; - background-color: #ccc; - -webkit-border-radius: 6px; -} -::-webkit-scrollbar-thumb:horizontal -{ - width: 32px; - background-color: #ccc; - -webkit-border-radius: 6px; +::-webkit-scrollbar-track { + /*滚动条里面轨道*/ + box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2); + border-radius: 10px; + background : #ededed; } @@ -5110,11 +5140,12 @@ select[disabled]{ background: -webkit-linear-gradient(top,rgba(255, 255, 255, 0),rgba(220, 220, 220, .8)); } .newTableShadow{ - /*display: none;*/ - /*width: 100%;*/ - /* height: 8px;*/ - /* position: relative;*/ - /* background: -webkit-linear-gradient(top,rgba(220, 220, 220, .8),rgba(255, 255, 255, 0));*/ + width: auto; + height: 8px; + position: absolute; + left: 15px; + right: 15px; + background: -webkit-linear-gradient(top,rgba(220, 220, 220, .8),rgba(255, 255, 255, 0)); } .disable { @@ -5274,10 +5305,7 @@ select[disabled]{ margin-bottom:0; } -.aceEditors{ - border: 1px solid rgb(208, 207, 207); - overflow: hidden; -} + #ace_conter.chrome{ background: #ececec; } @@ -5287,20 +5315,30 @@ select[disabled]{ overflow: hidden; /*background: url('/static/img/resize_corner.png') no-repeat;*/ } +.aceEditors .layui-layer-content{ + overflow-y: hidden !important; +} .ace_overall { width: 100%; - display: inline-block; - position: relative; - background: #777; + display: inline-block; + position: absolute; + bottom: 0; + background: #777; + transition: top 500ms; +} +.ace_overall.active .ace_editor_main{ + margin-left: 0 !important; } .ace_catalogue{ - display: none; float: left; - width: 250px; + width: 265px; + min-width: 265px; + max-width: 450px; position: absolute; z-index: 99; height: 100%; background: #292929; + transition: all 500ms; } .ace_catalogue_sidebar { display: none; @@ -5321,18 +5359,93 @@ select[disabled]{ .ace_catalogue_title { height: 45px; line-height: 45px; - padding-left: 20px; + padding:0 15px; color: #fff; background: #383838; + position: absolute; + left: 0; + right: 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; } .ace_catalogue_list{ height: auto; position: absolute; - top: 40px; + top: 70px; left: 0; - right: 0; + right: 1px; bottom: 0; background: #222; + padding: 5px; + overflow-x: auto; +} +.ace_catalogue_list::-webkit-scrollbar { + /*滚动条整体样式*/ + width: 9px; /*高宽分别对应横竖滚动条的尺寸*/ + height: 1px; +} +.ace_catalogue_list::-webkit-scrollbar-thumb { + /*滚动条里面小方块*/ + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + background: rgba(78, 86, 102, 0.6); + border-radius: 0; +} +.ace_catalogue_list::-webkit-scrollbar-track { + /*滚动条里面轨道*/ + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + background: #333; + border-radius: 0; +} +.ace_catalogue_drag_icon{ + height: 100%; + width: 1px; + position: absolute; + left: 265px; + bottom: 0; + top: 0; + cursor: col-resize; +} +.ace_catalogue_drag_icon .drag_icon_conter{ + height: 100%; + width: 1px; +} +.ace_catalogue_drag_icon .fold_icon_conter.active::after{ + content: "\e258"; +} +.ace_catalogue_drag_icon .fold_icon_conter::after{ + color: #ececec; + content: "\e257"; + position: absolute; + top: 50%; + margin-top: -6.5px; + left: 0; + z-index: 999; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + cursor: pointer; +} +.ace_catalogue_drag_icon .fold_icon_conter{ + display: inline-block; + content: ''; + height: 50px; + width: 14px; + margin-top: -50px; + position: absolute; + z-index: 999; + top: 48%; + left: -1px; + background: #222; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px; + border: 1px solid #525252; + border-left: none; + cursor: pointer; } .ace_conter_menu { height: 40px; @@ -5352,9 +5465,168 @@ select[disabled]{ font-size: 13px; display: none; } +.ace_scrollbar::-webkit-scrollbar { + /*滚动条整体样式*/ + width : 10px; /*高宽分别对应横竖滚动条的尺寸*/ + height: 1px; +} +.ace_scrollbar::-webkit-scrollbar-thumb { + /*滚动条里面小方块*/ + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + background: #999; + border-radius: 10px; +} +.ace_scrollbar::-webkit-scrollbar-track{ + /*滚动条里面轨道*/ + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); + background: #ededed; + border-radius: 10px; +} .ace_editors.active { display: block; } +.ace_dir_tools{ + height: 30px; + top: 40px; + position: absolute; + left: 0; + right: 0; + z-index: 999; + background: #444; +} +.folder_down_up{ + padding: 5px 0; + width: 150px; + border: 1px solid #ececec; + position: fixed; + z-index: 9999; + background: #fff; + border-radius: 2px; + position: absolute; + left:0; + display: none; +} + +.folder_down_up i.folder-icon:before{ + color: #d6ab34; + content: '\f016'; + font-family: octicons; + display: inline-block; + font-size: 15px; +} +.folder_down_up i{ + font-style: normal; + position: absolute; + left: 10px; +} +.folder_down_up li:hover{ + background: #efefef; + cursor: pointer; +} +.folder_down_up li{ + list-style-type: none; + margin: 0; + padding: 0; + width: 150px; + height: 30px; + font-size: 13px; + line-height: 30px; + padding-left: 35px; + box-sizing: border-box; + position: relative; + color: #555; + left: -1px; + font-style: normal; +} +.ace_dir_tools>div{ + display: inline-block; + height: 30px; + line-height: 30px; + box-sizing: border-box; + color: #ccc; + padding: 0 5px; + cursor: pointer; + position: relative; +} +.ace_dir_tools>span{ + left: 0; + bottom: -5px; +} +.ace_dir_tools .upper_level{ + padding: 0 10px; +} +.ace_dir_tools>div:hover{ + background: #333; +} +.ace_dir_tools .search_file, +.ace_dir_tools .new_folder, +.ace_dir_tools .refresh_dir{ + float: right; +} +.ace_dir_tools>div i{ + margin: 0 3px; +} +.ace_dir_tools .search_input_view{ + width: 100%; + padding: 0 15px; + height: auto; + padding-top: 10px; +} +.ace_dir_tools .search_input_view:hover, +.ace_dir_tools .search_input_title:hover{ + background: #444 !important; +} +.ace_dir_tools .search_input_view form{ + position: relative; + overflow: hidden; +} +.ace_dir_tools .search_input_view input{ + margin-top: 0; + width: 200px; +} +.ace_dir_tools .search_input_view button{ + margin-top: 0; + position: absolute; + right: -2px; + outline: none; +} +.ace_dir_tools .search_input_view button:hover{ + background-color: #138c2b; +} +.ace_dir_tools .search_input_title{ + padding-left: 15px; + cursor: default; +} +.ace_dir_tools .search_input_view .search_boxs{ + margin-top: 5px; + height: 20px; + line-height: 20px; +} +.ace_dir_tools .search_input_view .search_boxs{ + margin-top: 5px; + height: 20px; + line-height: 20px; +} +.ace_dir_tools .search_input_view .search_boxs input{ + display: inline-block; + width: 20px; + height: 20px; + border-radius: 0px; +} +.ace_dir_tools .search_input_view .search_boxs label{ + height: 20px; + margin: 0; +} +.ace_dir_tools .search_input_view .search_boxs span{ + vertical-align: super; + margin-right: 5px; +} +#search_input_val{ + outline: none; + color: #333; + padding-right: 45px; + width: 100%; +} .ace_header { position: relative; height: 35px; @@ -5398,7 +5670,8 @@ select[disabled]{ .ace_editor_main { position: relative; background: #444; - /* margin-left: 250px; */ + margin-left: 265px; + transition: margin 500ms; } .ace_editor_main_storey { @@ -5408,6 +5681,9 @@ select[disabled]{ height: 5px; background: linear-gradient(rgba(0, 0, 0, 0.3), rgba(255, 255, 255, 0)); } +.ace_conter_editor{ + background: #333; +} .ace_conter_menu .item { display: inline-block; float: left; @@ -5420,6 +5696,9 @@ select[disabled]{ color: #ececec; cursor: pointer; border-right: 1px solid #191919; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .ace_conter_menu .item:hover { background: #313131; @@ -5450,6 +5729,14 @@ select[disabled]{ font-weight: 500; min-width: 8px; } +.ace_conter_menu .item .icon_file>img{ + width: 13px; +} +.ace_conter_menu .item .glyphicon-exclamation-sign{ + display: inline !important; + font-size: 15px; + color: rgb(204, 167, 0); +} .ace_conter_menu .item .icon-tool.fa-circle { display: block; } @@ -5521,12 +5808,14 @@ select[disabled]{ text-align: right; margin-right: 15px; position: relative; - z-index: 999; background: #444; font-size: 0; overflow: hidden; } - +.ace_conter_toolbar .pull-left{ + text-align: left; + max-width: 50%; +} .ace_conter_toolbar .pull-left, .ace_conter_toolbar .pull-right{ height: 35px; @@ -5606,6 +5895,9 @@ select[disabled]{ .ace_toolbar_menu .menu-item li.active:hover { background: #666; } +.editor_menu li.active{ + background: #444 !important; +} .ace_toolbar_menu .menu-item li:hover { background: #505050; } @@ -5618,7 +5910,7 @@ select[disabled]{ right: 25px; } .ace_toolbar_menu .menu-title { - padding: 0 0 5px 20px; + padding: 0 0 10px 20px; border-bottom: 1px solid #666666; color: #9e9e9e; } @@ -5662,14 +5954,14 @@ select[disabled]{ .cursor-row,.cursor-line{ margin:5px; } -.set_font_size { +.set_font_size, .set_jump_line { margin-top: 20px; position: relative; } -.set_font_size input{ +.set_font_size input, .set_jump_line input{ width: 250px; } -.set_font_size .btn-save{ +.set_font_size .btn-save, .set_jump_line .btn-save{ margin-left: 15px; height: 35px; width: 80px; @@ -5679,7 +5971,7 @@ select[disabled]{ outline: none; transition: all 500ms; } -.set_font_size .btn-save:hover{ +.set_font_size .btn-save:hover, .set_jump_line .btn-save:hover{ background: #23963a; } .chrome .set_font_size .tips{ @@ -6116,41 +6408,293 @@ select[disabled]{ overflow-y: hidden; } .cd-accordion-menu .has-children{ - height: 30px; + min-height: 30px; line-height: 30px; + position: relative; } .cd-accordion-menu .has-children ul{ display: none; + position: relative; } -.cd-accordion-menu .has-children label:hover{ - background-color: #313131; +.cd-accordion-menu .has-children .file_fold.active{ + color: rgb(204, 167, 0); } -.cd-accordion-menu .has-children label{ +.cd-accordion-menu .has-children .file_fold.bg{ + background: #2f2f2f; +} +.cd-accordion-menu .has-children .file_fold.bg:hover{ + background: #2f2f2f; +} +.cd-accordion-menu .has-children .file_fold:hover{ + background-color: #272727; +} +.cd-accordion-menu .has-children .file_fold{ margin-bottom: 0; - padding: 0 10px; + padding-left: 10px; width: 100%; + font-size: 13px; cursor: pointer; color: #cccccc; + position: relative; + height: 28px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.cd-accordion-menu .has-children input{ - display: none; +.cd-accordion-menu .has-children .file_fold>.glyphicon{ + position: absolute; + left: 10px; + top: 7px; + font-size: 12px; } -.cd-accordion-menu .has-children .glyphicon{ - - margin-right: 10px; +.cd-accordion-menu .has-children .file_title{ + position: relative; + left: 20px; + font-weight: 500; + height: 27px; + display: inline-block; + width: 85%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } -.cd-accordion-menu .has-children .folder_icon{ +.cd-accordion-menu .has-children .file_input{ + position: relative; + left: 20px; + font-weight: 500; + height: 28px; + display: inline-block; + width: 100%; +} +.cd-accordion-menu .has-children .file_input i, +.cd-accordion-menu .has-children .file_title i{ font-style: normal; - font-size: 15px; - margin-right: 2px; + font-size: 16px; + margin-right: 8px; + vertical-align: bottom; + width: 15px; + height: 28px; + display: inline-block; +} +.cd-accordion-menu .has-children .folder-icon{ + font-style: normal; + font-size: 14px; + margin-right: 7px; vertical-align: bottom; } -.cd-accordion-menu .has-children .folder_icon:before{ - color: #cccccc; +.ace_catalogue_menu .folder-icon:before, +.cd-accordion-menu .has-children .folder-icon:before{ + color: #d6ab34; content: '\f016'; font-family:octicons; - width: 16px; - height: 16px; display: inline-block; } -/* 结束 */ \ No newline at end of file + +.upper_level { + border-bottom: 1px solid #333; +} +.upper_level:hover{ + background-color: #313131; +} +.upper_level span{ + display: inline-block; + padding: 0 10px; + width: 100%; + text-align: left; + cursor: pointer; + color:#cccccc; +} +.has_children_separator{ + position: absolute; + top: 29px; + bottom: 0; + width: 1px; + background: #333; + left: 15px; +} +.group_1{padding-left: 10px !important;} +.group_1>.glyphicon{left: 10px !important;} +.children_1 .has_children_separator{left: 15px!important;} + +.group_2{padding-left: 25px !important;} +.group_2>.glyphicon{left: 25px !important;} +.children_2 .has_children_separator{left: 30px!important;} + +.group_3{padding-left: 40px !important;} +.group_3>.glyphicon{left: 40px !important;} +.children_3 .has_children_separator{left: 45px!important;} + +.group_4{padding-left:55px !important;} +.group_4>.glyphicon{left: 55px !important;} +.children_4 .has_children_separator{left: 60px!important;} + +.group_5{padding-left:70px !important;} +.group_5>.glyphicon{left: 70px !important;} +.children_5 .has_children_separator{left: 75px!important;} + +.group_6{padding-left:85px !important;} +.group_6>.glyphicon{left: 85px !important;} +.children_6 .has_children_separator{left: 90px!important;} + +.group_7{padding-left:100px !important;} +.group_7>.glyphicon{left: 100px !important;} +.children_7 .has_children_separator{left: 105px!important;} + +.group_8{padding-left:115px !important;} +.group_8>.glyphicon{left: 115px !important;} +.children_8 .has_children_separator{left: 120px!important;} + +/* 文字省略 */ +.size_ellipsis{ + display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.ace_conter_tips{ + height: 50px; + background: #d29232; + z-index: 99999; + position: absolute; + width: 100%; + display: none; + bottom: -1px; +} +.ace_conter_tips .tips{ + display: inline-block; + padding-left: 15px; + color: #fff; + font-size: 14px; + font-weight: 600; + height: 100%; + line-height: 50px; + vertical-align: top; + transition: all 500ms; +} +.ace_catalogue_menu{ + padding: 5px 0; + width: 150px; + border: 1px solid #ececec; + position: fixed; + z-index: 9999; + background: #fff; + border-radius: 2px; + display: none; +} + +.ace_catalogue_menu li{ + list-style-type: none; + margin: 0; + padding: 0; + width: 150px; + height: 30px; + font-size: 13px; + line-height: 30px; + padding-left: 35px; + box-sizing: border-box; + position: relative; + color: #555; + left: -1px; +} +.ace_catalogue_menu li:hover{ + background: #efefef; + cursor: pointer; +} +.ace_catalogue_menu li i{ + font-style: normal; + position: absolute; + left: 10px; +} +.ace_catalogue_menu li i:before{ + font-size: 17px; +} +.newly_file_input{ + height: 24px; + background: #555; + outline: none; + padding-left:5px; + border: 1px solid #528bff; +} +.file_input .glyphicon-ok{ + position: absolute; + right: 46px; + left: auto; + display: inline-block; + color: #20a53a; + width: 20px; + height: 26px; + line-height: 26px; + text-align: center; +} +.file_input .glyphicon-remove{ + position: absolute; + right: 22px; + left: auto; + display: inline-block; + color: #f34a4a; + width: 20px; + height: 26px; + line-height: 27px; + text-align: center; +} + +.ace_catalogue_menu .rename-icon{ + background-position: 0 -64px; +}.ace_catalogue_menu .del-icon{ + background-position: 0 -80px; +} +.ace_catalogue_menu .img-icon{ + display: inline-block; + background-image: url('../img/file_menu_icon.png'); + width: 16px; + height: 16px; + position: absolute; + top: 50%; + margin-top: -8.5px; + font-style: normal; + background-size: auto !important; + background-repeat: no-repeat; +} +/*外链分享 */ +.checkbox_grourd input { + margin-right: 2px; + height: 16px; + width: 16px; +} +.softlist td img { + max-width: 25px; + max-height: 25px; + margin-right: 5px; + margin-top: -1px; + margin-bottom: -1px; +} + +.checkbox_grourd { + height: 30px; + line-height: 32px; + margin-right: 20px; + font-size: 14px; + font-weight: initial; + color:#666; +} +.external_link button{ + vertical-align: middle; +} + + +/* 结束 */ +.php_info_group{ + margin-top: 15px; +} +.php_info_group p { + height: 35px; + line-height: 35px; + border: 1px solid #ddd; + border-bottom: none; + padding-left: 5px; + font-size: 14px; + background: #f1f1f1; +} +.php_info_group:last-child{ + margin-bottom: 15px; +} \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/Centcount_Analytics.png b/BTPanel/static/img/dep_ico/Centcount_Analytics.png deleted file mode 100644 index 86d89280d924d4b2f0f54ed3b12b2391d2ccd38e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2533 zcmWkw2RxhUA5Yb3s)`GZ(2~fhRYywg8Db>%sC7ooma36djc{!_GsdB4=yBvvsx{9@ z9o2Ja)!qc<&`_I(*7kpV-uHQ*&*%9(@ALk~cf3hf7RHykMYtgl$Ys0<&IZiVX9LOs zp66dEXn=|9p^b$tMD{3hO~?{p7!2 z|B{<gPCS(uWv$pd}MgI+>NKz&hr@=8IzOFR5POzo3PE9xA({8kw_#2 zA_wp8>`b&N8(DrBpmNxrBp@y>&dK3{$4+#?lZzJ?7UJUKT;v(e%`UV-6!hx{)n4CP z92#$K{`S%OWKU0z4Tl4cr)`V9)Nf#55H$VfT+Dw2otmlj(b3VGni_3w?bD3#$Vd%k zWn~QJY}bVBcxR`HnORS+g1fzWx&3Pzjm8LIqI0`zPU|G4r1qmu=KD{L%18adx7*s< zu8N3MpL*KoTFlzwYdKV-T&a ztvK``>yO69#(dQvPsE~JLfy0W)$uB%TJV1hAJWkoU(!RSCnok*MsGkM`uh4&(a}P1 zxRJ5(Zsc)+Hd#?g>G=3~8$mwW3%P&)J`RVAifXR?O;@1XTd|h8#$t8M1s@$9xeRP? zZxk_aeGs*tGJ{1*}0(H{jbR+5H?i&;XD3kj?&ksHeWV`uEJt;!*!>LWv$K81Hud`gH}j=7Hsh z34F*LLdj#TE)e+}mr5Kug1u;NZk~!m3nP*4C+(m-w?tAc=-n(LSL_@Q)l3rHa0-ZA z!R5_AEaD&5oY+V*dA22b>eDAtetuLo;r#jYAH9hoAt8AD#jKAH#fjGg{ruF!w@^>@ zAlQMasVQOqprG`Wl(jEk{gwuJQVB-1Io8~#rm(@m zL2GMkit;+)Xnjgmr;rcwBtJiY)IT&{Lqj86Yo;k|GYzS`0kwz55KK)kaB+QQvzY-6 zB=wD@V znqs|vetuXiwzs$U@cSm;rAt|a68$0!2J<@(4I(KkD@#mFEO~Lj*x`ynxs9HK{5iZV zARxfcscwZt7H-bIqe&;P+DgE#2nyQWzRg-%%FWJh#T;$TwSnVEYS(Ck&oeV&aQGOL z*@&Kxi~GTNJcgkto6XIq9^0yi&Zu;4@>Qf>3tXF!&?(S}G1zwuEx{p71W~8L> z#OdGE)lFxhqjZp`sU8Su48Ssw2%tnAO=+d2r3MMS$4C1DZI~jfP8RX-@G#es3K*-3 z;6cRC+3##^y?phm*h)Grd|-9=jpx?Sarz-)Vc*&8)#c@LkS91aK)zGOn3QF~XBI0o zH1uNJzXJmUtOsVa!4xA}Tk@WJjiVf~F)AwRXqav(EG*3N^iFS{a-aKysfLQGDn17> z2t-TFvdpd}a`#njEnA`SK-E)`+H(ivtw=R3O`%Y_ySg$7CFx??$tfuh(>S0p_ip7C z78dFk{j>XddHG^nu)Y0Qny97=aW)fJ0nX6yija^dGOxoksl$^yP9Me3b>Tub!N^ncbtNPl1dZg2@yig`C`6h1=<_WO+eD z5|N1Dc|Ts|uB52QE2>fVXx({9NRS&8%P=BBy}+}={zeiGl=V@QHXx3)G}NJ`!&5x# zqiWzZ^x{RQW#}-Ix!%-cbTsFb=-LJGXtzgj6G1Rh2@1Z(3p^^wK3Zn|)PO^a`b8 zeSIB=&d@LVvU||b(7p)0ySlpC+uJKE0ThHxtz@&EoSZN`Rgq?f z)^-xG8pratXiPGNB82SrtpyIh4y1V-$59?NS;q`0)QQ#zna2@{Ux8W> zNu*E>QQqC1ovm=K{NDJWrNu>H5ND*y%&c^2RMgP;dxHCQOH`|CSxLzco4i1=zC1km z{MkD?`mG)cNHQRct*vdo%7gjsaNrJYn6&k=_8U$}>fveQN6Z3yhC*A1) diff --git a/BTPanel/static/img/dep_ico/DBShop.png b/BTPanel/static/img/dep_ico/DBShop.png deleted file mode 100644 index 85694017c8cd979e345eba9cd1cac62b5dd1499f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21056 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 diff --git a/BTPanel/static/img/dep_ico/JTBC.png b/BTPanel/static/img/dep_ico/JTBC.png deleted file mode 100644 index 37a9c0a9..00000000 --- a/BTPanel/static/img/dep_ico/JTBC.png +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -

- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/Temmoku_MVC.png b/BTPanel/static/img/dep_ico/Temmoku_MVC.png deleted file mode 100644 index 79c801fc2846ad2a50fa28a54b65ca36c849df85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9297 zcmaKS1yEei_U7OO4^DtEKyY^tGXxLr?t>3AxH|-Q4-!HkxVw9BhoHd|G&sRw$@{t+g10r)cL+X-F>S2^tm@eMM(x5;}r$~0Kk@$l~jAqE&e{}sLyZsW{SphM&=@= zkv9+J6`%A-Hqp2Cp)kTcvS=0X+0u=rqS_kKUPt)^+ad?=*Ik?z4{|@ONK}E&?zbF*? zA8BV7HOT+g_y0-ktlNyaEB`Tjh{Ln3 zJ3SjUZaTFL00112lLTvcEFBuY(9n=+sW7s3BedYjOK4(or2b~T0{Wu58Pt?$!JBcI zWMRb3F*Wq2)?z$UP|lK`C*yEPAvIz%kxM#8zt0efT^5-T?>VW2ICy<-Tt0qUW@co+ zT0KHd8WO2I$P#Yc`}MuNtWP6C9oq?AYwp%mbJZT6^5X42@uploK7Op2#D@;rTiHEq}Kqc(6>@#zf zWs~M^xdHMW#q z0~p^_NJTW3dEWe4ZoL1qJ*1WsfQQb6cs7hnmXP9#2d);%w#@_HI#}rp9YS> zsSas&$J$$os^2>>Zh^{$Q-ZFx^*o?*Vv_*&w)uS*TP%Kk;H(L$PWa*m`iC79A0s`z z&eoQe$bA4sbTHz^Ns%bs?a=Va;OchG;{8-xw#Ztb_?XIa(-1*;G^t3l#fw+3OX-#m ze`Nabo6{Hbzgk1(j2`4wQKWb&jQuq@JRq`+P!Iak z?IN2LB3a-0EVJK|D_0AQ_93CfbgfB7fX8Cy=zHmy3xU?jOUPY_Hkq$5f>N|HDG*#4 zTsAl9W$5_0^zg)S!0|i$COaffPG!kXyvcgkN@hDym~yr-oe({Jt+L8wot@UfV%CQb z&u6ytg@XW# za!(gYp#PbL+H{STOk4vJuoQ-D#d)AO)S}M3z8s(AMCjui+h?$$MguIzClxytw}tq; z;PqT%X6=e2NICj}LH|VqOh7>Ocy*y(Y#&RF$fLetfQ)OKdUU9y& ztFlkQTS1??^9zR@(Sy|NxD&$xKVIS~%9sTOlWzqDXWk*BWd=w<*Rz@rPbi{#KcfVp z^DfzgO(an3g|Y*48TmLJ>$||xwumB4C5g^WZ7T7jCDZU zt|#K%Q_{9j737b5SZojG;Z9_W$TOtFQz^cv#0*kV(>UwTsdpmx(!msRd>BZ{XlY%9 z#o)}ZC{jT&-zrkMyiss1VeXL)JliU5Uc<;Qq;y_&$nLa6=N!4_&QGl?XO&ap4xO@H?@kY$zv~z+q^wtYJUD3>CE;u5}?r? z)g1||PJZKJs+_LuUPJ`4i^|QNloZLI(af}vRN{|y*PW!{$aGJm6`tpLes0$%pEzD& z@vDY+OCwA=1uQgGMZIJCwOwp-{qQw@Qgj`a2QH22gr2^+3)JhvYGe`ou#h�T1W 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 diff --git a/BTPanel/static/img/dep_ico/ThinkPHP-5.0.png b/BTPanel/static/img/dep_ico/ThinkPHP-5.0.png deleted file mode 100644 index a05a9c514da0d7e0fdd757bdbb1655655f1ed094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7222 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 Ef?e9rjQ{`u diff --git a/BTPanel/static/img/dep_ico/URLshorting.png b/BTPanel/static/img/dep_ico/URLshorting.png deleted file mode 100644 index 671865735fd04183c6d92d8618d7a1873afe0419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70907 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 Ds-7c8 diff --git a/BTPanel/static/img/dep_ico/YoungxjTools.png b/BTPanel/static/img/dep_ico/YoungxjTools.png deleted file mode 100644 index 41084e188f73482838f770cc15e58fd8f9a143b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165662 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 YDX`jf->6HEE1AS4W-6a9vGlwD2T|Dcr~m)} diff --git a/BTPanel/static/img/dep_ico/ZFAKA.png b/BTPanel/static/img/dep_ico/ZFAKA.png deleted file mode 100644 index 37a9c0a9..00000000 --- a/BTPanel/static/img/dep_ico/ZFAKA.png +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/bfz.png b/BTPanel/static/img/dep_ico/bfz.png deleted file mode 100644 index 1ed88c89..00000000 --- a/BTPanel/static/img/dep_ico/bfz.png +++ /dev/null @@ -1,561 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
- -
-
-
- -
-
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/bty.png b/BTPanel/static/img/dep_ico/bty.png deleted file mode 100644 index 9a3521045d81d078a4a77bc63650bc1d75a6045e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67646 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 diff --git a/BTPanel/static/img/dep_ico/chengxuxia.png b/BTPanel/static/img/dep_ico/chengxuxia.png deleted file mode 100644 index f8bd87f44e46be5d3dee7381a887804eb547f6b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6047 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 V{0Y%Mmnr%S-NMv{QoPY4=0EGJ#0CHW diff --git a/BTPanel/static/img/dep_ico/codeigniter.png b/BTPanel/static/img/dep_ico/codeigniter.png deleted file mode 100644 index a61f163022b70ae20a247aaebe0ef4aa0cb533f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7760 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 U6 - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/ecshop.png b/BTPanel/static/img/dep_ico/ecshop.png deleted file mode 100644 index 2d7e9a5d5875353f3ffa3be9cef42ff70954cbdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3327 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 diff --git a/BTPanel/static/img/dep_ico/jtbc3.png b/BTPanel/static/img/dep_ico/jtbc3.png deleted file mode 100644 index d872fed9c98be17dfd15d17b4b5a5fd77f4e740b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^20*OA!2~4DpT1KAQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkMjATTyALtl;P{bldG)xGXdO%EgvITPB2|qOtnA(eg$=W|`V*&#Mlar^5V@SoV zq?8Zq6D52aIuj=}2D0~BWn6Jw%qLZPA)#D=Td(uK^sM;3zcuDvVNQH(*krgsEcop8 z_xAetYAh=ME)*4)U$k=ma$;VP&{CD1iz~hc z3duaVxK&E?$(IW*6C6)9*%p-LuP6=N;-0$Yc31aiMJ0jjGP?`33m@%@e!ri|b&iP3 z@6Akp_p6-xO;|o|Y2mPMnVq|sv*hev_4R9{#hhc9S$@myxu!q6S7xnAiGV>c|gwcxqao=d09^dDj9;*95?wFH?be7o#4PUE$e^-Q`cjDm8hkP3)UXE z!@{$Kqnx|r#9Vj%#wA;q>1^zjnxwfQO~8x6T-~~5W6pU=g_#d>d$sKsS#U&n%$Xg= zp`v)FM4VZn^7lnL1b$ta#)q+|HaJWLN)K@q+gZPl@`c vrz~z2%a&eP(d;H`@@fG%k<75>P&mM_{?}XMUGjZ*K_#rGtDnm{r-UW|;xiCF diff --git a/BTPanel/static/img/dep_ico/lovewall.png b/BTPanel/static/img/dep_ico/lovewall.png deleted file mode 100644 index 9a7188b36fe49e65fa1edb2a81ec7d9dc721a473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1609 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 V5ZbO`Cy)RD002ovPDHLkV1muL`d0t| diff --git a/BTPanel/static/img/dep_ico/qrpay.png b/BTPanel/static/img/dep_ico/qrpay.png deleted file mode 100644 index 3df06a42b4b5d312510724871498ce08fbb6e2f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1935 zcmb_d`8(TN6OU?%rD@BpwPLI4y_Cf6T55@{wX}9hDnV=|cDX^hL~K!_wU<6Y-CB!C z?L}<0Rw!4hmR2n{sHI$6@qYWu`v<(wd!Csy&p9*CnK|>!%qRJtrO8EZ5pEC&bkWQd zVGYPfKN-vc?CBVX5kQ;|F)*_Q11k#bkp!H%0!^JlKp;r>PiE`KzVZMr1wxG+Lk)vH zQK3HA00~=z|dNi-(9pwZ&i;I9n6ahqsUZ+z9qYv;^rDb3R#EEV`J9P-^aUl(fqO~wx`C&`W1 zLo@pIv+9OMS5ZD*x=I}dI;oiH`O$TC<@ramZ$&px*)Iqq`DZ~!f80d%+@mK^2v-cb zq=|gSyfP%AJ3{bhF!cYbs51;@uSo9yX8g4G&31&ZPW<85%uWG2@p^g-P2oUH7q=b& zkjl3P_-l)moiD|HaPu|PIN#dMLL{Tgl7vqjn++z&y%LgR+L8KY;m{X^qG*?1fhi~- zU8R!WJ#mymWjgH57bRJJ9zT&Yt@f%oouTRBQ6+PdBwV~|wRGXo!k`P7lGy0$Y^9oE z@A$NrSRfvi&i=3c1gmsxru3KPy4IlYtF+8{8^Fh~Yz}XHvVog53w!H&4ji}ntYN&A z-@c+MR3Uz>dq##60&NxTdc(HcicdkxQB}$bSxUSD2-m!0O7ZX9WDGornk>Yz330GB zxm6xh(y`>nNV~Z;8<{iqkDEyx&wwZIoLFB2w5I8atwOwy4vC526{m$#D066BAttOC z5|(rWef4iUo>HfL)>O+DC7j@-TVevkZQ4#QTQF!*mz+%%lwS*Pb9`RW)|1LG`1zew zPLtdvz^x_mz5Pj{(hC>*z?M^K$ojn49>k6|x*?TN8(VoPvO1D?$iBW(Ls<6#wPkPJ z{o7`Q+VSPUy{W3xV6uT@?S=+*-F!EAq=dHW%JFo)QV>?cHCW5v0zoXDb`#1qox4nT}P!}E7I?$Fj;!J-)ei3t;vR~^R*RG_%(pg@q5={BH!z67%`|#<>?`+4b zESDiT$(V;K^cB=Z`m|QtOjcikm2g)jR*Ts;iD-f$p}pam8amF~XB*~lmA-eKeLkk0`Uc+1=hV2)`H?>k^6^pKBsl9M9 z@ZMI#?1GW6u?zoNP94HP8YgQG)`Xn`vawJ`2jkY1dY*a{WiBqDnkVs^*cdgP;&ph} z$O@_5-2m-FL~*yur+Hqi1gf*C?nj8zhB|vWf$i`RVkMFxuFGD7ymo{Y{*_jwpF+*7 zVLtbsX2d?3-S`BxlQ>iTvvNs&?tJNwP)6RWC+H>~(oAJGlJWKj+GK|6k~P@aLlnZ6 z90!q(JLU|eEH>00#kdTMKX%YJN$x4q?Ic0<*J>IEk(dgOx3e1upH8@tr-g>=|FBQ2 zsT=sB^mGG-(yh=kttsKhT6QDO`4&A}p1Y!@A;JgYjiShjd)ThyQOhV6i=D;Viey=} z{qSq|^}i`to`{fcq16=2@oSGa^OlJlU3PAxEr~5f9Ke=uKMei$CeyVS$m-Qe*NgAC zW=Qj&<2#z&7rV3bC!3duiq~_+c_|4tnhq8>@mwZ=mUh(UaYGIybi@x5CBC_G-7% o%z?S@YkK|vf&l*o6H*LYWU^0NZoP*T0F59sBTGb$fm_^v0EK6fDgXcg diff --git a/BTPanel/static/img/dep_ico/sentcms.png b/BTPanel/static/img/dep_ico/sentcms.png deleted file mode 100644 index bd70f30f621bbb75dc228624809c9a221c132e0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14500 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 Kyj8gy{=Wc6KFxUm diff --git a/BTPanel/static/img/dep_ico/skm.png b/BTPanel/static/img/dep_ico/skm.png deleted file mode 100644 index 74a38b79..00000000 --- a/BTPanel/static/img/dep_ico/skm.png +++ /dev/null @@ -1,563 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/test.png b/BTPanel/static/img/dep_ico/test.png deleted file mode 100644 index 37a9c0a9..00000000 --- a/BTPanel/static/img/dep_ico/test.png +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/test2.png b/BTPanel/static/img/dep_ico/test2.png deleted file mode 100644 index 37a9c0a9..00000000 --- a/BTPanel/static/img/dep_ico/test2.png +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/tipask.png b/BTPanel/static/img/dep_ico/tipask.png deleted file mode 100644 index 922705e3aa33579a7d086e8066aa7cb7e7004a2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmaJ>TWHfz7|y1SITR=E!5eyv6E<0!rk9Lntsad66&(1WS#s8fE;%tdTf6$; zg^G$ksCy86P$ue&7rZc=_Bgj7gDeGtSoDGifQQigX; z!T?3hYgALcxL54tWu!SJo8!!DhHXLxHs=jV&O!|OU|Q9K^oOx=8mLN;-sTfsq7i`^ zwY^}%o=fjmzPG>9dT*9LTp&j;yQU!JV(Fhhe`3eE=UUq$tbT_A!? z2z*YDLw2z&;5aAi^>G~A0^Bav&A7vY*Im58GFf2yXH*%nU1-}U~}*h&o>kV!%d4Vp4Jxc>EaDua)h zP{PPeAv93h#jXs($jTrCM0z;TBucWX+kxg;g(&iI-NKSC!?+NniHB2F72YGbePK^D z=J9b6mW^^@FH1t6)>bd;4uxEvl2$Rvq|y{Ky1aOC>oqctN3kKOJ0xaR)M!j|OF$XG}7aWOtx4D5RxJGcAG z_peslt2aNU@U!!J+l8qPu(x*USr9JPcGs^97n=?doIbK){L84xZ*PY*{`BtM?OUhs z9C&nT`qYC$vHswV*Bh6wO6O=HR4gm^bOjo>zKLBo{}VTre#Za+ diff --git a/BTPanel/static/img/dep_ico/ttttt.png b/BTPanel/static/img/dep_ico/ttttt.png deleted file mode 100644 index 141ead24..00000000 --- a/BTPanel/static/img/dep_ico/ttttt.png +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/wdja.png b/BTPanel/static/img/dep_ico/wdja.png deleted file mode 100644 index 74a38b79..00000000 --- a/BTPanel/static/img/dep_ico/wdja.png +++ /dev/null @@ -1,563 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
- -
-
-
- -
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/wee7.png b/BTPanel/static/img/dep_ico/wee7.png deleted file mode 100644 index b81fad384dfbf32a8dabb6874e1c556cee7f5cb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmV+`0@VG9P)K+$i%sPBWn|Nhg(2h2>2nEs-Q2*hOC z#{s5em!|3g1ts{|(WEjLUjvHVdifPdvax_%wkks(Nb+*907+yp_wW-Sck{*9K$5;b zfP|VD9~-iB;B09@ke?tvuu%~JvN7F0eg7k%_?ojX;j;AgfhaG??M#f=)0K=M2T&FQ zJoQ9jOelTv@n;}wE!geIQuOtKBu2_Xb_+xnlDZ7#_>iT5?Byq)14&TcMFsTrfjCC` zdHeM@&_Tl7tUyv490wjcB0x4Imfn8@$#S!SO3m|+KLJThKyM$Q=iZa|J^&r%r3*?k zkW?fFPH7OAp1SuD$S?rM$DhBL;SW+pUmqan;eY=@E;@Z5I^u+IIO3P+SO{KOjzywUP!hTDRPVaN#6=05clrA{uby8NLqUI z4ipp0qFg}o<_l1bcJ%gpAQ@vR1tcLrQG^r5M4@T!14jSJ=YTeT{sC$oQ5Qh!JDU4| t1=9YauG=A|(W_+#DPd^QzN1s?8UO~@gMtC#eg^;m002ovPDHLkV1lvS`LO^1 diff --git a/BTPanel/static/img/dep_ico/wordpress.png b/BTPanel/static/img/dep_ico/wordpress.png deleted file mode 100644 index d22715ea6acc91353ad7104114822f2445f3b625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23042 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 BUn>9r diff --git a/BTPanel/static/img/dep_ico/wp.png b/BTPanel/static/img/dep_ico/wp.png deleted file mode 100644 index 8daf9e16..00000000 --- a/BTPanel/static/img/dep_ico/wp.png +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
- -
-
-
- -
-
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/z-blog.png b/BTPanel/static/img/dep_ico/z-blog.png deleted file mode 100644 index 82f877e9..00000000 --- a/BTPanel/static/img/dep_ico/z-blog.png +++ /dev/null @@ -1,561 +0,0 @@ - - - - - - - - - - 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板 - - - - - - - - - - -
- - - - - - -
-
宝塔邀请大使赠送您
-
3188元礼包
-
立即领取
-
-
-
-

免费加入宝塔邀请大使,帮助他人同时还能赚钱

立即免费加入
- -
-
-
- -
-
-
-
- 尊云,价格厚道的云服务器,6核10G,99元 -
- -
-
-
-

远程桌面连接工具

-

下载

-
-
-
-
-

Linux面板命令大全

-

查看

-
-
-
-
-

IDC推荐

-

查看

-
-
-
-
-
-
-
-

宝塔币商城

-

查看

-
-
-
-
-

宝塔跑分排行榜

-

查看

-
-
-
-
- -
- 宝塔运维 - 付费运维已停止接单,论坛可免费求助 -
- 点击查看 -
-
- -
- 开发者中心 - 诚邀开发者入驻,让创作更有价值 -
- 点击查看 -
-
-
-
-
- -
-
-

合作伙伴

-

申请IDC定制版合作

-
-
- 尊云 - 唯一网络 - DNS - - 亚洲诚信 - 阿里云 - 京东云 - 又拍云 - 网堤安全 -
-
- - - -
- - -
- - -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/BTPanel/static/img/dep_ico/zfaka-zlkb.png b/BTPanel/static/img/dep_ico/zfaka-zlkb.png deleted file mode 100644 index c07aab248742229c8d5a059f25dbe117186ef55c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1578 zcmZuxdpOg382?2w984}nNg8Dl1x(%cPQWn`?Sp zqK2}$+gT2t6`Hw+M`XD+mz~4;t@E7c{B!+(xc-BtO9!Z_5f$gX%1t_^#+7k|+tn z{U5Aq+~CPa+}fB$HZJic#ilSl!`)@P*AEPR^ui0q=_vU10Ycs_*Oo-d$Cc{%Y4)e8 zEjEtf5vnLI(oe{C?Xqp!qS82{8=Fey{nUdD)Y8z{tvk5Y`qiUhzYfMc-&&uEK(F?{ zBpgepUFx7GoY1ge9cce+_PT&mGh>HYXwI3d&AVAdH;3%ztLJgzl<%3G4G+5LOgX@+ znzwi78x6m>x%CxSE}$M%L&E*E*|p? zWJ7N_-35B7kp*wF?{?&ZRk{2 zwA51?mbH-1?rb*B)+rq&cO`c8Ob1FLlbJY?t^@upf=HBdzObDc79{}6bNKpaYcrvH zM2S;mY`9aq8HrHVY(AIc%I}%zl~)2MA}7PLWH8={(KBX}u;9~h?b4`V#MElJqV@>b zO;g@^7b9K$;G#*5J;v*#(~a!ZYTMBDB3Bisb zmOG-?15)a>`F7vGS&Hn3-&J6itxEuIkxB96H{hJcOeNo^YTl*KiQ}=B3F5M)wnt?-lD=66|cBZZ(h%$z9()z!8=%$5sKKC>l?j)22x z%tRMUT!4IJw1(S+B_l`DC0(jhW_w=GSk>3*`)dq(7ZtB9!7VO9i`^MsW-@#Ahf4q9 z)MV|7vp*)sKc@sw_MB*7R^c-p9_5&K%CfL^oM|vm(wUkp89Y=u)%$KiD;aao#0B&H zg3T;tWb<+94DlV2cV5xM$x47-IEk>>wBAw7blAmX6cWakr7OdGva6mCI* zx?n{9&XlH+%>xW@M3t7-4f$t6mR#=jtvOoru{Sq-Tk<~#2yHxJ^yimdm-7;A=GCM- zT|KpQwYx<)|cK~1zbAKTZtleb#MNW+3_ml)rvP@pd%pUQ}l zqsUsjtzsvziv@sU5`^Xv|X3KX*1xg(`X1z2>rQQeA1SiGu>)Uv1}3S&@gEnv1q zxu}pO;aPgH33FmKM%chBwx#N2N(+7V!21TEkH_yb9*=SO!-;F!ki#8V%LjXuH?J^c o9M>x5-Y(QuHGs2n!T%j_#<-&^kDsId4G#1PFaQ7m diff --git a/BTPanel/static/img/dep_ico/帝国CMS.png b/BTPanel/static/img/dep_ico/帝国CMS.png deleted file mode 100644 index aaa29eb1f13a6ad4c5d75009c4fb54325dd2778e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12629 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 diff --git a/BTPanel/static/img/dep_ico/微擎.png b/BTPanel/static/img/dep_ico/微擎.png deleted file mode 100644 index b81fad384dfbf32a8dabb6874e1c556cee7f5cb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmV+`0@VG9P)K+$i%sPBWn|Nhg(2h2>2nEs-Q2*hOC z#{s5em!|3g1ts{|(WEjLUjvHVdifPdvax_%wkks(Nb+*907+yp_wW-Sck{*9K$5;b zfP|VD9~-iB;B09@ke?tvuu%~JvN7F0eg7k%_?ojX;j;AgfhaG??M#f=)0K=M2T&FQ zJoQ9jOelTv@n;}wE!geIQuOtKBu2_Xb_+xnlDZ7#_>iT5?Byq)14&TcMFsTrfjCC` zdHeM@&_Tl7tUyv490wjcB0x4Imfn8@$#S!SO3m|+KLJThKyM$Q=iZa|J^&r%r3*?k zkW?fFPH7OAp1SuD$S?rM$DhBL;SW+pUmqan;eY=@E;@Z5I^u+IIO3P+SO{KOjzywUP!hTDRPVaN#6=05clrA{uby8NLqUI z4ipp0qFg}o<_l1bcJ%gpAQ@vR1tcLrQG^r5M4@T!14jSJ=YTeT{sC$oQ5Qh!JDU4| t1=9YauG=A|(W_+#DPd^QzN1s?8UO~@gMtC#eg^;m002ovPDHLkV1lvS`LO^1 diff --git a/BTPanel/static/img/file_menu_icon.png b/BTPanel/static/img/file_menu_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..71da15bf8c5feb2ab71d36b7c0cb80765fb01ce0 GIT binary patch literal 7972 zcmY*ebx_pb*Zyo!OP7R53W$KD0-~^VD6n*?EGQu@jnvX0Eq+C$OF&YP7FbHUBqf)S zl2}-pUH0|&=R0%fJkLEbXXc(i&NFjk5xN@GFm@OK0MuHVss{g%8vr0Ea>zgCj0mm! z2T*$@9VGzxmPCoSCixcx5KoQNmNA%L(oQe_zBw2pG1+!PI<8|o0lkpl!mfpau|0~b z#{JWa^r2lFovNlS$o)1zH?VZS`z8O-!?R!hty3GAY+W)fH!m-*LMiUMHh$8QLY|)P zC6C@H z9k_t*^We^%Zw)O8@v#{p%Jj&B*#9!P?F+oR)>Hrc&%(|sC^D!Jp#E20B={@(Kfkhj zhMx^Q{RGt7MVy>ui>!jBN*8O@oh>~+W<2pKi~caNI$vMrbb8>SF^79>?9LL7S<^X!^pq+QwR8n$E z-S{q_SAF=mnWg1L!g5GNWF!iO;t%N^7#Ogv+%!t5_3`l$7!t|M%ycTcME@bi#U~5{ zbe)}Do1JP>QT>fgO`p=!iEGhfezh9_!^wo(_%2a0ZHu_ya5SPr+{v%4tvx(C>RLG- z-aN)H_$s8Y5H~;U_G#5(h>tV33Kvg^8!5y;36Zh!C#R>xtxtG7;bF!Wkw`2mDw6rU zb$NMpc7Be-^{4+Eo4c2RuHi;Z+DQmLJi0t>a>TFhq`M~`Q?^PtAk>}5E=;bDsnt3J zU1R!2v1o%UyzF=wACr(6B5d0 zGeSH(?L-Y6uJkNb!oqoS#d7cja>g9M_$7@u0NgaxQdKhYo7>BxfHP?{_inbf)?_%3 z*zXT-n5?C5y%qTBM=5Zpq#H_3${Ho^(%zu4-~CKL!tv2+)~=meg8K9D{9ImM8g|un zaeB4H(Ay>Pus#SW>!;sUmHS_JvUxH-4etj83QTkbwqKu_TA7-9o6a1Y8TGe~Q4?MA zax|!@DA-s-QMgUC&)(cg9uU9h|95?RLOl}X?&|iYV`;SPE0jBbGd#6eQDLuNpFS63 z{yUhvtZ{Zbek?S!`g%<&J8-8zG#7K31L1td9Q%+?^5XC{CgkmgDnKLFchrb}B*y_K zNC5D_9-w-7Oy_CF;p7A+M~;q#5k&TA5Nqd(&5G8gn zIXQlQ-NNMU*Y$LY^__mM#rzDBflu5eab-Wa9)!Q!?r$jR_*$AbEWNqO0;jSsnVOj) z(lpJ{a`c6XD6?n9%1+sj@H#1(B%vS`Lq8s(7Dc_8%+AIix;-#+qJdb5>(9i5mQN=s zSZv}h0~M-h=oBH-6_(L>1)b0f3dF(=i3+MA0{Gk>3%)wt!>zE&0$2Aj=L%fK2wKD#iImGHjE$b1eOEy5hxsc7LjuiEu{?#ojeuc#& zAuXnw8vGBuqyblVyLpgVPFh-h_9WS%n+ezSrl_u^RWaytnLYXA$JVwK$n3JSZFBAlP1_a| z+AjU~mmrwm=J+Kl{FzSJ?GuQw13Z-uQppvjoC?joOffae10lN*fn5&Cjlr@{VD1Fu zqLMP$%GhIKVsNnRe4m@=ah4!VKDS?Z6BXg%0A3@2VMh(#?h(-2A7r>ue5y!oe+bA+ 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 literal 0 HcmV?d00001 diff --git a/BTPanel/static/img/soft_ico/ico-apache.png b/BTPanel/static/img/soft_ico/ico-apache.png index ea3aacfb530849b15d29ac5198ee4623d44f5c30..b0235822aeadd70f45082186d80b1b97054890cb 100644 GIT binary patch literal 1790 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 OA3ulX$E;&Sr2hv6o@S;1 diff --git a/BTPanel/static/img/soft_ico/ico-backup.png b/BTPanel/static/img/soft_ico/ico-backup.png index cae3b9ffdcaab825a702b8f7e51618a12bd4a0e9..d674a9d3e4b5e548362a504592310a484830a2a3 100644 GIT binary patch delta 1753 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 literal 2501 zcmaJ@c|4T+9v-{I$p}TNF-a1$n6V9$n6V5d+gKvE#>|T`W-&9e4M#;nn?m+2OACdT zbIMv-O0MN#6xVW!EG4Qb*>XlFo%_e_zMs$g{+7@4Jm2m4<4trvXsaNnE(ZdE6bN>B zSJ7%9dUa%_Mc-P^HAm5+#6~`VjhkW2`~U284}J2W^ys%Sm-xhjA*}h4TnO$L3ng5^zWp+ zh|UlkivvImVTSq?1QHD~HiaP#k!Ta79>f5FM8Od#I1;6gG{7KCF-Swm_XjG9#-aLS zT=6#FV~I{!XdsWr#=zlWVPUW^6pY0QfFn&!P2mUwxPgJb2%*o7VDiY}`b_Swbp<@Y zrEq9$9*xC>tSOTHSfM;DRFvu8B{0}OWSQLWZ4xyM9!_S%kubzsN$Wr&@&7{^j2~z& z&lUJ5-~TDhB}K3SxGTVAg>opO!TIl63&qCZH~^W);*eOZ;Poy#2eNo9ZXk;d!Qmh} zo-`(v6~^8B4NfFt2uv=I%%lJWJQgYvfYE4Fi~-6BZ-c-Yqb+d=B+}Z%#MsKl)EZ@j zvqIyIZA{SXTs(^s$^e+WbuRTEuE|fiYffOWMUn9Uhjt90+HhD5$hV3yw4di<_*1>_ zT5AK{q~X!tvNSLuS&DCytho7W<8xA~y5@-{Mexar zBy&7;zpnlDDyX|3o&OO5wl7u%)1@{}{_*Zh?hCh!cOCZzhib-|F<9>Gf9_A@ESa45 z84S_5ahvmSK;!bjJqF=Oc0MJyIHtL$%tCl9ORmvu6x%gsoSu5=RlIlYtNtzg?rS-F zJveQqqsTd=mw1PCGWeFsKfqt4B!}$=VNUt*hemTs(b{t{zjV%@_%v$D7Ls(Ka>~1UNpViE z7TleG`D`-<&;A-Ewz98azK{>DxNm+-lHQn-M;be<@)G86Y#krI`R$vQt!Et@#p{o3 zh>q>SO2ohGR*6)&qve)jISN+JI1LgTtU6LyFZR~ysQa%nMb1*`LFz{3idQ^hU9+j% zPBb{`a*(mdu`hB%TY*Yd^ft6|1NqpNswEF{W|><wg zoVe#zk}L%KrmqAoq|g0(hz}R?7!F=3eMxzGt!We6N85@Q!2M=#^zsX)D~85S*RTE$F-i?;S;&kkYce1~MPTl`}4OAX2)aALm0;{pHJ{6;+|AB@keLSW{E zvxDqM)#n>Zmn1V@KK$+E&H>z(W>1LE(kB7IA=p}R5+TD@Ql({LO3=ndq2&&W{EUur zyIkv$ZI2(Ng6|NO$dhJy6a96y*8)C{A02+$v^;gLFR#?g<7D15ijZztbysku$#qi2 zPLCX+e%QvU`J#M00VCYGRc=Ni<~=`Z?p@tkwo_Dl-!f0SmUR1`)uwB zRO1#TB1;7u$pXn-@y^?a)xGam-Pttu-e;!&@}i`>pXMy;+Low$1ZS{wTxuomtKBnz zZ`>$HJo+dJjjC+_dbiM*I?|XwdtmoWjn)oV&1$mlgnz=~$&lXGIWJ0rM`6|?V`j6} zYW;)N-ODNZo`n}kqnPn%%@u0ee1f}S?o7`YsO<&vh)NMiG^&FXZ*yA|c%6OnMMCkESV69Zhd zWCTjjqYG9NexIsf^moVDDHqJ|i0gc5=EC0JDW(#WJZ4mXswJe!t~jgx1sx=A3dq9* z9oqqe)as`tT+hXv&zxc`vpu~Vmd#hlP@ymd3Nyj-EXC}0#D2K9>Xe+nZ6~a*%`7Feti0v+ zsOP@~+72lmlHuwtIK$aV#{Oq_ccz)?f6<%n2zy`rAXKCNMHVh~Yp3=u4i0t(~1ln;E#F3cWErnLr<4adq=rlsOSbyaBa534EN89j$& z_qlL#v$}5xnL*{lS4nS@l;2EOR6hvW%UrAsdp+FtbZQtVP4+5`aIQLFVP)%T(bk4N zS2W&rQv1I4n^Kn#mrGx1~4 IR!2|#1tw1_;s5{u diff --git a/BTPanel/static/img/soft_ico/ico-btwaf_httpd.png b/BTPanel/static/img/soft_ico/ico-btwaf_httpd.png index 55dabc43d782b232437a2efee3bbaa696aa4ec5a..47bce9a2b50db3913fda7529789394c1748a14ab 100644 GIT binary patch delta 2003 zcmV;^2Q2u-6Vwlo7k@Gc1^@s69zTe&00001b5ch_0Itp)=>Px#L}ge>W=%~1DgXcg z2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@1ONa40RR91GN1zh1ONa4 z0RR91G5`Po0Cmf+s{jB8K1oDDRA>e5S$j}aRTw|_-d%R7L4R_PLUWu*CaWQzm4+H_ z=BP|gnKK)>>5K#_1HxzzE3^LSVOIVjh~$)M6c4ea?V!? zg0L$pD(cx~%YT+R!`10aUh>ru4js;madB~lsMkWz5Y&@hE>}ugTG~F8f5Or2OLo9B zvSrJbQQh6$+u^(gnP?V8(I(6CI%Xd!rvWwgGS$r~`qv z8VrW>M1MzrJYXa;dnhX_>k`p?6~BQL78ce+(Kw&Ng5X9Ujb;S`s6+tmzIZ+9+qP{p zU%q_V3i?vmpaBs*c{J^MWNm_`eI07Jj-nx`L147jgB*vp1pE)+=TLu#g?kLnU(tx@ zMwcvE(go&H0<57}tf6VZCqVD5urmz!72xNQp?@{N#{)ty8#iv`1fgpPUsA6R{?Zw~ z7lWuF638G9wk}hVjOZGsL1c<#WDo~im#P0vM*QyV-i9KvZ0b)qzg}ut=t!adJIYgj zWSreCh{EH|8ICU!%cokgGw(2nqUCgky&AZXSU#;0C#OV%BuzSOG$vKNv z+kaGJH-Djdq2paGO%EPQM(l8W!ldI%jbkdNj-VhELtIFu8jej71lAKT4L?flq>5Av z1pyD;F3z)vrY&&1hDq!R6-0w^m$qLo9&|>KjT(6SOvkSc<2V!Ufs-;EKft*>Loq7g zRLq3BZ>>A&n9gM8&V;kAobdyK%x#nQ%zt~XZr+~%Zi%3uX-Ti$t;mM)6LdxlBDa%0 zF0&~JXeQ8lOo-1=k58(a9?!TiQRMs^;<>Zx(O5Y8q`-s<#-vgl+JoXa2rLDeyO-!xkg>XETWtYBldbl}UTW{J z#;)Rrw$Bsy8wloh8wuc6n4lHJBY%mVrV098X3?mOKGqIBDA4WkRQ>$w&e4@KlEL$U zD2VS!Qq+9}A`@qk9+yk*mldsUEsi_Nh`#n&E!`XLHxLLYf%NqB^b15{taqI-eyqV- ztz4|c-swd{tOVwEJ2Nr;I5V)~#`Nk_1Wh*kK}3&dD4-{u)Y8(@n*%8u$bQ`8 zhamuZlyJqw#E>6;i{C)-B7b-h${ZLOQ%6Tfre941+}YLDl@GgEj_hkZRCESX?>7(< zhO!NPN><}}DBuDOWKd5(y{BOS>FtZ*rAF7eD_|gaPudNo*aO(@sF&+;BwQXmc(1_# z(&xPfFO~t<2iXf42r)tF+P?ZNJdxsjb>j-2RcFH9O0s}QznAq|(ti~QvhpQH=R+8{ z38Phcqox@2#$)gJ1kPhdiSOa@PuZ{Z1fweuQk0O8kdNvIz*q!ScI3#BKzk60=`MIe zr9EXYU^oV?HaR)@CEdbc)E$V`YQ1VS8m%yL5poMoo;Su7TpFMe-Zs|6U6@Wg!9Nzz zgjfHWIXO8kdgWC<-5F5@VB{1slZy857{R%4;(Pp8I796ZriR?pc%-J|4h8Wuf_ONT zAjoFW86hDm__CpWqdYA1Ah%p*-+DTrG>g5>!%D^I)r=09896bpjp5J{{<)N5AYRj`8&_Gn>eg8l$Ksy8QAc8uIAU?%T{duVW laH+Z@bz}r0BM{mM{0mbN^Ynpb^WOjf002ovPDHLkV1fuNrX>IX literal 2501 zcmaJ@c|4T+9v-{I$p}TNF-a1$n6V9$n6V5d+gKvE#>|T`W-&9e4M#;nn?m+2OACdT zbIMv-O0MN#6xVW!EG4Qb*>XlFo%_e_zMs$g{+7@4Jm2m4<4trvXsaNnE(ZdE6bN>B zSJ7%9dUa%_Mc-P^HAm5+#6~`VjhkW2`~U284}J2W^ys%Sm-xhjA*}h4TnO$L3ng5^zWp+ zh|UlkivvImVTSq?1QHD~HiaP#k!Ta79>f5FM8Od#I1;6gG{7KCF-Swm_XjG9#-aLS zT=6#FV~I{!XdsWr#=zlWVPUW^6pY0QfFn&!P2mUwxPgJb2%*o7VDiY}`b_Swbp<@Y zrEq9$9*xC>tSOTHSfM;DRFvu8B{0}OWSQLWZ4xyM9!_S%kubzsN$Wr&@&7{^j2~z& z&lUJ5-~TDhB}K3SxGTVAg>opO!TIl63&qCZH~^W);*eOZ;Poy#2eNo9ZXk;d!Qmh} zo-`(v6~^8B4NfFt2uv=I%%lJWJQgYvfYE4Fi~-6BZ-c-Yqb+d=B+}Z%#MsKl)EZ@j zvqIyIZA{SXTs(^s$^e+WbuRTEuE|fiYffOWMUn9Uhjt90+HhD5$hV3yw4di<_*1>_ zT5AK{q~X!tvNSLuS&DCytho7W<8xA~y5@-{Mexar zBy&7;zpnlDDyX|3o&OO5wl7u%)1@{}{_*Zh?hCh!cOCZzhib-|F<9>Gf9_A@ESa45 z84S_5ahvmSK;!bjJqF=Oc0MJyIHtL$%tCl9ORmvu6x%gsoSu5=RlIlYtNtzg?rS-F zJveQqqsTd=mw1PCGWeFsKfqt4B!}$=VNUt*hemTs(b{t{zjV%@_%v$D7Ls(Ka>~1UNpViE z7TleG`D`-<&;A-Ewz98azK{>DxNm+-lHQn-M;be<@)G86Y#krI`R$vQt!Et@#p{o3 zh>q>SO2ohGR*6)&qve)jISN+JI1LgTtU6LyFZR~ysQa%nMb1*`LFz{3idQ^hU9+j% zPBb{`a*(mdu`hB%TY*Yd^ft6|1NqpNswEF{W|><wg zoVe#zk}L%KrmqAoq|g0(hz}R?7!F=3eMxzGt!We6N85@Q!2M=#^zsX)D~85S*RTE$F-i?;S;&kkYce1~MPTl`}4OAX2)aALm0;{pHJ{6;+|AB@keLSW{E zvxDqM)#n>Zmn1V@KK$+E&H>z(W>1LE(kB7IA=p}R5+TD@Ql({LO3=ndq2&&W{EUur zyIkv$ZI2(Ng6|NO$dhJy6a96y*8)C{A02+$v^;gLFR#?g<7D15ijZztbysku$#qi2 zPLCX+e%QvU`J#M00VCYGRc=Ni<~=`Z?p@tkwo_Dl-!f0SmUR1`)uwB zRO1#TB1;7u$pXn-@y^?a)xGam-Pttu-e;!&@}i`>pXMy;+Low$1ZS{wTxuomtKBnz zZ`>$HJo+dJjjC+_dbiM*I?|XwdtmoWjn)oV&1$mlgnz=~$&lXGIWJ0rM`6|?V`j6} zYW;)N-ODNZo`n}kqnPn%%@u0ee1f}S?o7`YsO<&vh)NMiG^&FXZ*yA|c%6OnMMCkESV69Zhd zWCTjjqYG9NexIsf^moVDDHqJ|i0gc5=EC0JDW(#WJZ4mXswJe!t~jgx1sx=A3dq9* z9oqqe)as`tT+hXv&zxc`vpu~Vmd#hlP@ymd3Nyj-EXC}0#D2K9>Xe+nZ6~a*%`7Feti0v+ zsOP@~+72lmlHuwtIK$aV#{Oq_ccz)?f6<%n2zy`rAXKCNMHVh~Yp3=u4i0t(~1ln;E#F3cWErnLr<4adq=rlsOSbyaBa534EN89j$& z_qlL#v$}5xnL*{lS4nS@l;2EOR6hvW%UrAsdp+FtbZQtVP4+5`aIQLFVP)%T(bk4N zS2W&rQv1I4n^Kn#mrGx1~4 IR!2|#1tw1_;s5{u diff --git a/BTPanel/static/img/soft_ico/ico-clear.png b/BTPanel/static/img/soft_ico/ico-clear.png index 17c205b7fd6e2cf00d12d60a81c2e1f8261df867..7b0d59402b83eaf4fd984c9d7d0f252cd3853874 100644 GIT binary patch delta 1889 zcmV-n2cG!<5$Fz(9Df06IJhSO0004VQb$4nuFf3k0000)WmrjOO-%qQ0000800D<- z00aO40096102%-Q00003paB2_0000100961paK8{000010000opaTE|000010000o z00000b<3}-000KkNkl1f#9DjTCppD4UmOFIY1%Co9NJ$maQYk1VU>Zn3 zpjJ&uNGfbwV!#impi%ULK_bO)B!1vr%2}cYAwe{>E#~ zitZPypl9);=FQQf;e~8^)>KAiv*FQ`eG2$eY$){=gnz0?R2H8TBWZ+;HbyZ-e&7;u zOUwm1G^-He3Q`Wlfa^AZ07^fZ=+&!N+bs73DUdRM3`63=1l=d*4J0MQAwmM@I(}!j zf}JdU=iWw;wUPp#T_l8>-*kCrmR;y(O`xk`dm^%CYQEv-=5#y-Mv_DBq=HB*s4{l&L=yP-y(i>ex?05`&up{;fj@k zxReR42$F;jlH)B}6p6AU>SieJ^;P^LI##zyw13%hRi0TxRnmNN4wSqq83dBh=yDw@ zo-lWG340jwv;A!i?5mbtw0^LvpVx`DBauj*+)1ypY~8wbBouzbZ?s&HaEHTDR$X2F z9pSG1B`*-vdQwx_<%^5XUejvp=lzc=pcq}4*`qMC>Bw=#Y7J;KCMPEkTe)&&hgw&$ zK!1ipp(dx(S>o|{8r6bk=-5*4Qp+kPBcd6LEUv1BEYR6nvI-|!0)4@IB2E;2B9B_W z8XGN|W>#!nCvs&uE)PVFqd$Xc9?_3nt{s2ui{9zF8_hjfQj865fR+>8OyZS`XIC|; zLbMweA}fG2S#pBZ*K!5mA7Xe*S%Z%7Hh(ivHxs1(1vdcvV~!^Rb)CdB=JFQ(iOq1F z%UjGvD}k3g1`W*mYyS85IFn#PPT*iudwJ71xuF=Il5=3@E#OJ=HmS~XrU|@6Po`jK zUa!CtbuyKltZ&{V`YJryb2wRc+QSMm@_YGD$O-x)nJn$YNrj$UU3Wwn40o~TGk>Ru zxcrYIH4M!?f*>r%=}~c{AqAXN0@wl`aAkgJL2z)&v*IPj$h2W>8Zx0HlW$2=E08_3m=hkc- zD{1$dg{{%rd$ihEd^&=4tsQ=T1b_ShJLS#zDm@a0iC~S~1EX)+?e+~dH8r1@HTo!W zJ9q9(3I>DgVPid#*@a}5o3UrOl~5971kh{7SYOCgRaJ$s&~HEzXW+NetWCp2xDmXq zC@vm3|1m>LK20U^m;>$;^NIt68H>0M`3zl7_pfyrzwdJ$%%{(RuSJ{Tyno~JF&M%8 z+l=}5u8L2j6+6~nOAx4Lmt#zem*pA(8L{lRNE&V=V7AS2kHmUG>Iv>BR#mOaauH29 zwV`wnKKXcurVJ^2C_K2{B?#~NDjE;t2Dq~PTa zu=Y=q(`IqMpuAE@P4H{4saMkdcLQlcC}Qgf{KM=vhkvNj73s!$6-^!Q zEzNk&nb~=G$>DH3Thwm2#PRDOjO$$7_G^9&G2?{Gxa*5&2ocseYxs1>$aK9=BV4)% zw%@x<-{}teDw>ulTa?rj?U8VVtt-r!?ASG1x+Fw6qFMV4swiRUL(aCk5q^N-yCW0mQZ_)u2uN^e>O|$%VySOyx51An9 zT=REG_ael&>c7Eg#Twx3`G1nD{_AX1de5dmJ*$93=H?xGOsBF*j#2d^)8w;e^Z0^?brboHbH|womuD=5R bxeELXB2R%)WeJ-(00000NkvXXu0mjfP9<<_ delta 2299 zcmVa8%_L|DA8M8{U)@1oPNkF=|IJ zRRSb;VWu!sP}=FkiYer7erL9J%1BKlMBW0#QJ5(vfQSJ>z z)DDz^ig51&TAA9%z}T?K{Z8j@SaSE3yNQ6N_s{R1*Y7*$e1G3L=Og@|eAF9p1ft3! z0`-?{?TUvF9zwCfZmZT|X8VQnJ|#RQFz;z8g+;M{%Hd$iPQ`lNa8esO44oN#fGXsn+C)m ztC=X+a|eLs3?2&L7esW-sMj_+nM=2htMIY+%f^kqEq|E2zx{fE3`9d~2>5=6H>_3* zr5`?^olgT2jD{MS*-n~GAe`~YXD{dyvtDaucwFuQROjWdJx2WnDJn{ zWd+X7`hW9B*U~G2NazJ3d?!-}LxxSYC7K1qUI@mNZ$e@j2!8?Slu_zi=iKqKZR2nC zTAmjG`ZpLSuC+&OeMMH$F#w3wjMM5KL)HJ#D}bboEProSN<0ag1MuQxX~H;f__R{g!Rj#( zdzS`~9GbdGdlD{Ao{`PfgJr_EfQhCPa}|iZ0GkZjCnP;{y5YcyEA-9q1QWH>nP`}) z>Oaq=+dZ@zAp*D7&Lt_32>yIB7}y6`>rD0F z?|%!?(xUJ7RfM#YVa(-zHyeSzA&xEx@ z-3qNhM43y3c?`LlBz+7LKLSt+!B4kC>VF<7mf2OB8P?VAg0boCa>px+mVhyji24;G zgMoH}e8Ny$))$=Y!I&}+OwZd4N%s;xW?39BBG|cdKY@sW-ZX&_e=f>J*p*2=jI`tl#gpi^G~n4d~Z4_#Fan zPHqYFTW!*F@B0tD5zpdngz#5}zC|5($ArAHrJQUuwCqp)&!6mnnpEUJ*Sdg6tR`TH z(<64Q0^DSIvFdD{{?D#}B%3ucV1KXkz+m7#O87=+)=Qak0$XawK+s}h%;>mhIzP#H zC?3{cbO&;o!j549>nSj9V}X5;m`nnX8uj{dH%|n%RNn|uypw>jj&N*;;PK{6{cSh? z)c>1eHN%-b3mABq0J~qZ{hC&)xL=5cYRjOr2Weou*x}8zZ=s=TX+wm9Rev;(^7-2a z%@Dx%h~(7M^#?yJ*dqlixlC9Zs~+m(;td@=P5Q^gPnh-k+V09Mg#M~|B)Fw^5{PCq zp^iX(oyr-oz<9(AYribSs7#u&NKN^T%wn!n`WcP%D0 z-;G=dus}rlD+nWq@iMVkpMO?RUKZdAB(Qn>OWnJK$LbdMuOTP>!k_Tx%{_Vk!65DgtAU{p##!V-a;WlbS3 zR(3JRzQn5pOzhklyMLU5-V8V0)M%ulLS$|qQ-ff&(9<8~>1M!j| zIn7yW*n;h1k%TzxQ1drK)vi3Zbw5WkILe!qzMcd&6H)GFig5uRS>^UDVJ9(xH?hFa z;`MskfI0~z6536KuXgU1obA?DyIzPnb0DfL0%(0!&&@a?!4Jp7`X6)gRcxJ5>XB@} zbJ(+G6N%z4WPg_OS-HV{+VttS6o2g}19Dl49Wug_Yl*1dZReQz zV{oFF@M7hI5w1mJaK)!s6JIZ=) zA>b&0;|xAQ5VJt|c8Z6=J4{u-&uwF_sz)-F*)L7Sg69jOMF55sYD^~xTohzgW**De z%_CWgnslnYfdSsHfyG>arxB4T2o&*rqh5DRaNN1BYG`$(E;$mi234`7u>w#SxI0Hb zZ%+eXGQwI`o9qVVx&g^?M3X;OGls|$gv9WU*JL^tKdJ2~Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB81xZ9fRA>e5Sqp4aRT#dvk3GT& z8WA=@?b;zklA%J3w(EjHG@wQ_QpQG1$P!_WZ9$Fkfv{YG-1C|sTykq}Za!dW zWZSlFGBIpE*CzxaxQU>q75kk18p32Fh|)@Cd-QuzOOJH{_<;; z&gB2042-;*7;*dd?FC5j48sYU1aS>P&~HXE-%?-G^cm{C==mDuKp z=5zX!=FOMU?kjtggn61qS-rqOtDVAiiLow@`lM|s%5wW zG156u8X~0F=Ne|r*4EZ?&_8FmIvG74&!{Mhi-;l1axN2yMx$;-a3{kJp<}menIR)f zoSX{Sy=9FKue%~0Z|aa631c!(I5R>nE%%?DD zANjV|$_`yg!W#YeEGzP?^9rKVgExZ0j%%jX{-;!@4>--I9i2j zEMfGxXo$f+dSs*F+x@PMk|e)wltoKROSL3PJK&@Z&Xjd4sS{!%tE&;w2`KeIX%5k7 zNdms=cx5m^IBT(>jv=TU7;Qq(=5-y^uX__RlvT=B;4-Q}vDfu}y6I}xu5^{`e)ket zknc}dKB*HdEr$DqBu85XQBV%ZwBJCkDw)HCPUw(>waaa&EDQ5+pnidPV`F1GA-4sl0?C|jLZ*+}dbOtp};9w6@UxY*ALx}JPCd5NY z78+pi8=gje$WH^1unnJs4UJtD!KU*Zm>xLTTvu1OS8s&JMU$nD$623k*$9@laJ8vU zKnW5RyW4FlSJ$z7UCW6SsyIX?jcXVaYm7L`GgT*u{vgUg+vaja@)|G1`WS>3K@>Gn zG9E#UiDDcXY0e0$6B0sQ+W_7~*&ajr))GzIWIF|AZUwL=7g>8;bO8Rg!=ZHtQ#o$!5x%(1_q@at{KcE0zTTb>sBlO67Q-f3a;? z8a+;OaC+o;Rrjq-2lj%nM|X}0?5%*keTu;FK>lM1FaA~>W^ha;+*^1_4! zPMFPR7w$$qsT>gB=5^x|7Tr&M=z8&jwTAloh6Eh&L6?e|G2X9vd3j~))~!3Gm(}A* z6QQ^F{{H@bFit083StEPWjMHgsW+4i$N%Dv%CayAGE$D1GxKQWS4jiIJz_EZ(BmRI zwtt2r{Jn`z*yKB5BB)L)4AI>|X-Hx{=59N~(}hT)4oNh}jBLS5^?bUzxad3rS=A?E zXhjT~X~}FECK9{5&x#54VR%b0yvlz?m|{Bc_Q1;gzOmlF@UIcNvz!dAK0FgpbEipV zr?azj%D}+DG03r{+VD}^aQVg5nGJ_4p-gW8MYv<0#|U*|gbWi;6iokE?<2ei9Y{55-3I^etszFt!;+o0uYkc?!d;Ja#ae5iAb4=E`I8FA7f- zy2F*-DVJzw2Q%Vn^j~5)U=tE(gKK{j?Hc3LPCCQwIkJX~kL? zqn*ZZm&4glOom{wuk1cqmOdD#iEoFif@^uczK>B~02=Kh^s+?lyMls(JF2Uz&yAz0 z|7Nry#tbjQGouZ!fV8h%gAH;$+^DOY;!>7c6o`?#BHy|(RT!{CtJ5@8zSnBCx@u}_ z!l`uh{ES9KuWW=D`(01Sl8lcWAGjz!6RHeuHInP}V?mlAJQ hH(P;h1^#Ch_#0;x&0zD|e|7)>002ovPDHLkV1l2xd4~W1 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^#z3sW!VDxA&b#jjq?n7HJVQ7*IBq}me*okf1o(uw z{{R2Km=ths!Al#UUV)MzzhDMIC1aP+wDOLbt9GBc`|f|)R7O#t9A|+?WHAE+w-5+3 zUb-L1;Fyx1l&avCS(I9yUzA;};2doBV$Y@?1_nkSPZ!4! zi{8>nzJ7-d1X`CfGG#@S^oD4PFGxDgR>Y{1$6%h}=Wt`wW45OpcNTcaENHcL(GpSwe<;Pb?=RH5yoT(03 z?{X(lkI)+#QOkN**n*wW4WKl2CauRVvkIi zIK9qPt_XiA-Pod_`Jj2r@`B0I`-T(dlfq|p;ST4$bZ4ciLxgg_-5a* z4^U`b`Td#0BQcc-dGE{px=S`Vu?F4ne5)!kL)+do?481*)i>A=g_ B-RA%R diff --git a/BTPanel/static/img/soft_ico/ico-docker.png b/BTPanel/static/img/soft_ico/ico-docker.png index db39a8cab424e563990d76e0253c47376cbfccbf..6261e776c1f30a8b31fc75fc63e675aac871a2a1 100644 GIT binary patch literal 2294 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:i$f0ZLGJ)#V0#|`qRh@9AsQ5lFKHq}SugD`mM(PTBatwg= z(MjgJ%>$ZQxOI{r0EY!${JnMV5y82nsB{a4-hVg}{I*al0}xEp4ZPs(S1%54Nj?>C zowqjC^~Id{-OVeSwxw=E^_JoiE&$4-u}D>3ZNZIG3%}v$U=5hJL2mZelpPrV9<0-Z z+J)qr6qgu+uKF!f_1J{%N3Lu)Z2fDRvA&HUSCk~X;@}ASWRU*He~#3R`3TMzqh@Jc z3u?N-w~YV3*X>8SQwIK6Sxj+|V{an7CAk3AH9&<25*%PFj^oKEOJiwg#Dc^Tp|Cm2uBBN!B?lE z3q{RMh|WZr3IxV6v%pU(vKO`ABkU8^0|e8@W7pM|eLh=Ifg=%)rfM)YC}}4MW~vnv z2HS|}AXZL@(LN*6qgH!VOt0hf4IR1OU-1pmzX5jNGC2hP4c`C&002ovPDHLkV1gx{ ByUzds diff --git a/BTPanel/static/img/soft_ico/ico-ftp.png b/BTPanel/static/img/soft_ico/ico-ftp.png index e28ebe0b646fc89b8b15040d6249ab6364eb7504..6f27b365ff316266fde99c80790f63536a496c32 100644 GIT binary patch literal 1646 zcmV-!29f!RP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB6*hxe|RA>e5T3bl1MHHT`BIG6X zWTp=X!ER`Q#rA@ts8CS!ppbN=4q{0!auf|g;b0eh=poT#7-XHu)HsGhFQO3Qh4PwG zNDtL9MG^DC%JA0lw)@tcJ=6TR{r`J&ETn(nch;=+ty#0yteJo2-!c|z@d!n)*XtwN zZ*K-ii#pg$o~*gR#wKK!7?*5sdV3$`$+`dJFM{DS{4E8ok(%?F4{jert?fC~=$P!q84DtIE-Qd3hO9vB!n)$uKxmPWAm z{D3{^2`f!HcFfGo(9U36OpRn^WxaHEcJ_sxHav=0Sy_1>xZm&sd(#SUYQ(?YTj^Nx z#i36R&}{X3VX$osuF*`#V5Fd+;6XE>Lmt1-=&_pj3FhMUgM)*Q1ZZ$@kdsG8M{Iw8 zpT)<=^EO`3tg5Ptb$55O)YL>retwf}ZEaO=wH<8yPNmF(7;M6LE2IjBZ;9p(b3V|uwIC{ zp}U|gGF<^sBEG&b0a;0U`3C#Yj139u&JpjJJ>((ahw>v zI5BF@K;hxxbOy8S#0;R$i}Yk}ZjLhJwyF@S0c6>yYCqBlF=72NRG+JW5a^pY^t~2> zo~zR<#0XG5{G6M3T66)x4b8|1@Wm<;g!3*f)Nz@PFeRT)*ZPfJs`zj_T=GMf- z#7U?&oalw*2z_$KQG5`CEplQ+!3=@Ef_Lvd|7ahyBRE_Q!-40O!39lXrf%T?@N&?K z0ThCA1jo*w(buB^`g1ITGd}@*h@d>BQ=*SYAI8SUzJYZ7ODD5zI(7u-@CKyQdzL-j zdx0-3EG*|+6enG4&W(W-;Kb8`fjLl`ei7FX!{ZG7?386q@*M^G(@k4yJc)_jJ373iKcB`US7`V5oKvWtW7g&e8=Drkcvrn?pv*=Iu0tfsZG zzP_$mA7(hpe_A*A7XyuWZEcOOm*wSU4c}oy`&+1A$#jj73{%(-@2@!Q{NI9EzFSOZ zghqutq~v`BkLJS%$^N7AHT?=>^@6mV5&dB4H$W`5SHOQ3&t=TkCDe}f_5Inj_mSQk surY@EV+8d(8@wxaBj85h{}O?}0e);I8o^X(x&QzG07*qoM6N<$f`b?d(EtDd literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^RzR%A!VDzS8>jvTQq09po*^6@9Je3(KLBzK0(?ST z|NsAQOf�em%8Q4yae4B*-tAK~TxqB{Z$PW9F*eXYRiHUpAFd6e!18;1OBOz`*qy zgc+NS17DRP%Ik z46*1yOl)%qp>gdD*OThYcd_CJ~?R?p_?BYN|Nt{XMY+<8t|sZ+E$M(!BRJ zH?#TNv}<`I%;Wj2n&akm9>LX7fhjxhDK_dU-0RU<{hN<>kEz3?Ugznx+XZ(oUhqJ2 z(i6(9Ts`n6%t;SUKdGk(i=-2czK z=)1zT+e-r?UzV@flyGf#xo`jzSE&Alt4t>x8Mg>4ac>h}CMi~Ju=oFeW$W2*Wq0k} zz`!VZw$c0BT;`xN$)}nosjH_s>~*&2W?ue=ZGn!q-%VDB$Ya$zQlvMiOKTV$n5D4r z!B&Q%f(6a$J1)r_ii)YL;_Ut}qcf?a=S)birlsUW4au`wRsjyx0ueF{ZujSjtvfKc Q8W^$+p00i_>zopr0BYIAZU6uP diff --git a/BTPanel/static/img/soft_ico/ico-gitlab.png b/BTPanel/static/img/soft_ico/ico-gitlab.png index 1b3c0abe26a117276bbbee47e353b51b6e42ef34..21cccf7d1e68e73e4a41cfe01cac769b56de518b 100644 GIT binary patch literal 2038 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB8U`a$lRA>e58Cz^rMfA*Wx7+7Z zX`$OK4~okwsSjs_th=L53=)d=e*CHGjnIo+zar?&AZIK+iZjp zfq!2$A5KAn!GCjmL5LRg(uBB;%n<-Ik>Rr(VRn^R1| zdRMqts6offi^`BN*Yp#<2KN?;8w%cKbw`QFIXC7>3TdE!En$Nx-Y}d%YVsCLW|^2NSDCns zf8$)=o@g1Xas<;Jr7mqVKcSPr^L3?Yd<_YsvzXOvHsEQjUye(-QplQiP$?U;+9i>H zwV)Z=CqFCk@I$@jUVCt*#MNHB5h|hHvz;|{>`_T^PWb*gUL0A45Ne%Drs%T=kBJxLX$s*+pHgkQ;Fe*y*yd=b9q|#z$Pb*rsbPH2awlaNlK6+j*7XirS(W z2gQ~4lfr?Ohv+~z99T;WR0pIR7YPy7#t+Q7gu6*K{8{-xAGCOUZGnZvAK5rCYH)## z)v(vD{iW)S8^#@~yZeQPoBaKiH*pKwK5j!<#cT$ikPM{Sy3HY`I}+ly6=^_c{7ZBF zBYEbYj)Y{jEy*Tzf?ItK*Y$&DgJxWwH~kN_@60@jCv@UjUbj^UaNL*Dw65j#pOT0? ze-eo&biz37mBQ&#MyZmr$x@ck38hLZrb?Mim6YudXx~a$?G0m+$Pdij24@@+rQYS? zqgO4J5q@)ZOU%hw)twJ`+cLNKNVvX-%2!p8%32kdu&vlKdL$QyZ$RsG($)xKE**YslwU4Su8fM0sm5TNs#YHZPX zO#X;8X+gn-C=Z|RyHpEA8-o%F%09*k+t_g!oUVMygqio30G;93#F=g|@Rn=0h%4Sm z4G^`%*cYtndQ2@qDltxofJHz^)bNb`N;n!3O2t#{QKLw*=Cb>OH#N|LgP12^tE~dB zA#VxT^oVmJ`KYiCtd@lWci;75){T`oX<@M!a`gw`>Z6IjLW5!(uK1*`xldcIkOCGE ze(1|@A3WiJfBy-sl2;tCT3==xuKr>+I&Pe*6RJ`~wSrZP`9&PJVY4D#qqGkf?J(1` zcs2vs3}iEq%>ZVAYAfH0`sh{qF=m8pCac@hxk-8`rc$JmSJU*vkMlSoTVyj;Ih|@u z83#gTI6B48I=oVr*{K|il^3=sMYYQp${{ z7vHfWnqdP66)tq-I42xE-7{8u8O;byyBY*Jp(_Q_GD?U#IH4Pfy~$y%Ys++rjX99f zC8Z97A_13gdHfG9lT=bvE-AAB2AI(j8&f9vCr_8$KjQp>Yok@L*>P@u&NlynVLudx4KwxwqY+$lK)UB$~1$^gt6 zI2$g(r8Xv;%wma5m}SQS+RGB!t9W<{ru8-gv(q2FB?)B|V%nvJA2)a5?LTU0TJJKb z>%4{Y(x=#vVA-VVf-@3H*N@1?2SK*U2l=AL`C`0 z_rz6ZUf}ld>7XyvV5X~hku&eKV|s49%*>u~f_S+%3WDFY!vaoyMS z{Rqxi6{9fgfs4)o2<1#Mcnm`Rw&1W9(c>=SBxB971j=iRaxp>TiYxT;BArm6|xNO0kdpPH3OksdYBGNJQpEHTO74v`5c_icj)Vi zv^k#skpoek@*k_qVKBT8cbc_ud*T`HEh_0c+c%eFDwa;@V6I>{s<41%9l7r~}~#=2b(4?HW8bF_-B1FZK-MXQUl$L&qgmE(>Qfkj+3g0~uxDKe|J| U2_|w$(f|Me07*qoM6N<$f*y#tmH+?% literal 1235 zcmb7C3sX}^6uzm-1V<_eZK)NisVp}E@*shN<0B>)k}weh2?DkZLJ1^73?$((iaH{Q z0URyr3<%{RCOj+%h@&lNRh(ceAe2I@R2vc=Vv5oN(;^G$4fqH8&DnFl`ObG{cXn4R z3gtPh-@G0{5C;Jti@+-#Unp@6p3lW-xp-Nl<_IK2B5`Ci%!nWau}CNhvRbXMA!y;+ z&ZT-btlJ6ecTC3YnT)oP3CWHLalm+lKh*m{9TVzUP)CP4Dr}?_=gu&B5NdG8t;~*t)e|u#sZpwO%$uu(y%zV^eC;cgo6$k>i6a z@47ZK3L9_(I(rD6m7{NB$tH{f>j2b&l|ejvz#0H60sIEQa$qe35RXd$UI0ty0W1dA zA^`Ew0;?9l0s!*?JPF`&0CNC50$?V98emler~=DrVEHhBsbDb`z(WAaz+y6(Pw<>O z=s6$f`6dQ^9feLyP)h{*N{CK{pyPbUr-EX8j-T@w*1 zMx0hb!og%RF)T7NG6_f4D$blKD=TYULB}e3dU~Eef4u_yY5qT|M$`%T=Jsj)7&U^t z-(_2bZe@KUE^g5TMQg;$Bu!SlN{Z}FR3=Eb2Fq2_ETt+%y_GBWf7#hqjQc*c`M4@+ zyhg4(yj3DsND+Dfjn1MmKKGzqZbOjwL;`HDB;f3&62%vTbk}?@)9HV6H((WoJ)>K$ zkS;KE@~*KABB_fo%_p>?S3Q=kVS2%VXYEgQlOvVtzM)0UP`hX$>y}^s>&{;3m%L71 z;{&F0yLrdaNbv`UqK4)e*B4(@=RWE>vU^`1gGxD5e<`W)=WDqQ!A((rGwKFY{0FOf zKC#Ec2u_AD2`1N5I+A>cNM7iuQX`nRUppdlWx}ucJ0!M*x zTezK=(Pk13VlST@{cdJk`=hz}R^`AFS>qr07fY}G@kW38M~hb;%rq+O-EOb##(qE5 z-x^g=%UPEi7)!Nm51$G1jt?lW-ZZiJiQ}Jzr=Q=M`D&r)aOofGTGF{L?rfQ>+je)S zWKwfB^2*hYRe;rO*tYg@rkxl|JZ8s|Oe~aVxUz=B3&|voWv}~ipxEB`q=J{UUR&XF zk4cM;ue8$HBVU&iJyp+08z*B%Ulhyk9eY?xU0Un(N>n7DXpWBc4g4jfMBw=JF(gdP zT9mc@#PKe11r?$XypmrFkW_Gw)n zY#C-xeQJ{A=MOUs-A(!KDHk?pFU|jRohH8XEAV?eWqx_$VS~ZoVu1 OhX{f~v1ZP}-2VXX5nlxW diff --git a/BTPanel/static/img/soft_ico/ico-linuxsys.png b/BTPanel/static/img/soft_ico/ico-linuxsys.png index 9182d12052d48dec8aec63c1086f1fce16828f8f..48dc1d22fdb3339668992ad6d43e0c6464ef3f3d 100644 GIT binary patch literal 1887 zcmV-l2cYPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB7$w@>(RA>e5S!-+*RTRFnJKd#g zqeKM}L|Z6nBARGG4dr1(BrzsLBw&D~(KM1mDUHS-#NZzzKH?u2wl&rM@kc8z8Xk#> zj{v1e)dYlS5EY?_DS{MJ#RYbEX0G3v?w#J5y|XWLfuxhn-1EHWoO{oG4r4hUP4G5t z+H{0-emCK*t*tiQ{($it7;gwcP17Rl)~$QX#y4-?{A6`kJtstz1PAEj_t@1&qfrx8 zeIkTlA_BV$1YTl^YB{|^UD#?C1S(;t&B1H8)K4X(rhE2JZEbC}j_Z|X;7?nM^Pi~{ zt+CT4W60=i>5v!+$g-^|!cjS^?wKxzpa>K1D^x4&iJ=LqkHvlW94PAk)Igmdmn&0zQQeLe|XSsIzq_ea0=0qYvhmY5bsnjbQi^aY- zO>?hI&(|liY{_t0j5y8ZbrZ+4uhFRw*>tQ(Cs*{j9IB1a9cQG?KZKrVZ4qR<%rYXD z-iyXSHMX=HLb~3aOdBTzU1(nloVEv`Se^y{()qL=GF|?R?6Zf=p+E(zu-A1_5jITI zc_3h?Gp+XyT>%LGj>;akG&SEP;Y2bvIMzzAgtMg9bl0C@T)SwbjQdH$+Z@y4_4lRI z?2y<42>y$)*gTUJnq8cI&KYmCxYdo^Kj(4{$fR+hA8i^pd%Qd^?nL5c^snq|0F7Sd z)AL9VO`NX5tP}*%-9vs-S4c055m&f0ccJ}z;CSIjRZo-{TaTlT?=W}G5G+?DV2%fa zI++e(rM??w1H#Z~IoblFEpWA4z%{3o;tbBwld(1Fz+Cbe^nIsvpSmqfF}*l3t!ip& zI_4u&5c!G%!KK0y%d$QqOK|8-1oK%zR!4;D0lrEo^jBfNdvAnQ98_!zdTY0remKz& zC)RtJ1>k$IvMh!itq68q1?VV6Tq}uE;yNMvrWVp>5z=PIwG>A%7<>j7Xz#0hQU=n| z(Gf`|lm8&+iT@nVDxE6ja?x<|dkVgMO!jaaIH{$j<+RtfGPMx-m`o6)n7PUJs+JFz zeE=L$Syl$361>)FCCyrOAIzSZV*Ck>nie>Ge0gu5MDhivcFmcA#2r2(W~40K zaBAW3r~ONI|LUvg!zd|`6zAXKH^psSgJHT}#T61g2qdkrmp)Ju2ansz6*_(q}yt>OO@`0q7H-s84_{#QIpJn`IN z-C75jE{}a5nqIS>%oWjjVqlh7jOlK>EJTNTN-dct;GnJ*m|E^~6wRzVShZk1gvvd`sOuAz7E; zaD_g_8-#E)Uzs3%*1j>r zertM}eDO6S`w)pllsgUOV5b`KSE0@@jD6UujPtcnUd9m2Ex^9dGlQ1biBW5#EpWZI Zz`u#~is9^IQZ)bo002ovPDHLkV1jG7Xw(1z literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^20*OA!VDz6R;D-sDdu7)&kzm{j@u9Y9{{-q0X`wF z|AAmH1Mx^ebUV)MzzhDMIC1aP+wDOLbt9GBc`|f|)R7O#t9A|+?WHAE+*I^K5 zG|^O94HT3qag8Vm&QB{TPb^Aha7@WhN>y;nEJ`iUFUl@fa1J(mv1d~c0|R4)r;B5V z#>AzQZ2b;92(%vGsOymtq_C=?h(TznV@LzHiq#q3OAfqF7n=MXTzXqX^#q*UMJ*g% zEE>8M6fdn|Q91JS)8~`W z1&OjIjrJLvTJ+5XE{kg(Tq$-s0VVPASxVPM!E^p2m+;3>O61ZPp0B z=!(sXt$*KW5W=#eYU)$&Bl>cxJR7=f+tu3`rl%MvJ;*SAfZUpm0RS2<2vcG=)apDUL(YxA<7w!~{=xz^6y>`fe y>D%s*?b-ER7MCZ#3b=jgrP{g5ry~EB#WVbWVq;#q{U9)|7(8A5T-G@yGywq3OZ&J0 diff --git a/BTPanel/static/img/soft_ico/ico-load_leveling.png b/BTPanel/static/img/soft_ico/ico-load_leveling.png index 227ea6e8a109cd00fc2b22510d6caa48d4cdf217..f7aab18cc8525dd831cd546c1da2b7977ece2afb 100644 GIT binary patch literal 1137 zcmV-%1djWOP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB4+et)0RA>e5Sxrb(Q51e}<~d3c zjv^#T5TW*C7!mEnBnZkNTbM|MEdnJ+XLhY~6Gf|0CvY`o8=FW<$Ts~*o1ld#Bw^XF z7y~LaNIK>F={r+b-aN;-@8KJoV@4XpG5=CS{WI$x#f69RDma|nu z_4`##9Wf-S(vD3GJfnD(Gw)kpzO{qrVLUv5UHz)Awc8DXY!a3@cJ1?U3J+jcFB`@- zI47Oj)gT3GE@q`grtU~jX2&GrWCc12` znz3Bt#f;=S!%pps8F8AiT;tulM`TH*>w4(Ji1gsoXjZ>hb@h*)I4%{}0x=Blh%D>v zx}hsSwO?HKWLZ`vkMW2Lv~giVxGquqnEJ1FOf}8<<``Ifq{XtWHLEVa*xMT(cRts&5CiWzhzD>TQkz%-(RomdK0o& z=p=*K2SwmrA`WIGY8b|{L;eal_k+RUYaWjqNMB!H1DttAzVM9YNUti2ax@SKOk}gq zJ+%RatxqjOv$TZ zDDLR;MVZQWO{J#f!oUZ)>EsV6adY@ zDDQ+i2uwM$SOv-iX5uvJLU1+6c`sX(bsGCDp5cXsg?*+VRv_E3z`h4qN>;NOlokj8 zY=)Xcq0pomXl;kXVGS}en%ZZWdId{?U_;>2k-cF7_Xd<#@TA5EkNKg4ySA(|8NjMJ z1o;HU^_ultX0wYx%+s0=Z80PHFbifM#Eh7;kq>Qley90@Gx`M1Yr5#N6?#Qqr-!Tr z+{5b>CIK)zP2IF6kBj?iFWw;1IMhiC1h*!AGtl?L%}h?NV?zML-$@QU`}%7{yD<~i zDq|d0Lr)j%xD{vavmoFr8!x4{?vcxozQOa+#xso|u6A~I5|&D88x=89?jeGTWIrf$brYTM-Z(}VKO4cx#J-+wm2AAVI?VcYhr+&R~ zEx*9MaLez^pg4}541W)ET{#`cGBIB8*ZDQB&kr*-EPh~fI5*LW!*VIl`pH)7I3ta= zsif$#M^;U0=8a!f?YrB1@$@S)Qq?yr9Evih;9#c0Q654gBqKeLhY-Xk1$yZyYS;eFYen44$rjF6*2UngH-w4PyWR diff --git a/BTPanel/static/img/soft_ico/ico-masterslave.png b/BTPanel/static/img/soft_ico/ico-masterslave.png index 67940a142f3f0ec3484978e51a93b575434f40e1..8ca97572d20bc24ed3d8c017a37609c6d2681fcb 100644 GIT binary patch literal 2061 zcmV+o2=e!dP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB8cS%G+RA>e5nR`stRUE*7_rXI! z5Vex*0i;#8hTx_kVsF;c5B;ZLvlVogFCySQn3)l9l={nS)~qR0VQ!RW+qP{9$k>dGMCRJ5FU6SmRrq){ z1je&r@+BZk{|-x@!IIll82d}Z7Pg!_cWx`jtc8bc-MKjKfG>VlZv=ScZ5YZ*e2Qn* zd!y~IF_)v(u@j<@Jx_Fiw@*X#L*`Zw7|B7D@cFu1f*aVW%hYx7CCaNI`eeLvTCd+M zY*ePIA(L;G0lFLvF(gyT5W?e|atL)HHyVp9k!eJZk|8jRCz9;V$;k;d!rUKPks-1~ zrjhwdhOo@(9J;w=j7Q`2DP+=7xZ(8N%GfT4$>i2_UF zJHXhh6DCafLN1QTGqmc;h9JmUT-TGb{QUg2EiEmxP$(Y7;}~4Pwg?s?`n1cJFFWbw zr?s`UyAF-qr8?+11wIJ=9tZ4SwQAKL-9&y=lnmLkXOC>btF9)gsi_y}`^W`aUS3{6 zM@L6A-X4Y_Ls2q5i=d12UjiCwpTQw*V2`Dwq{L8^R5GN#zCIR-KY5hO!1CqG z#mm2YqcJj8Sy?&W2))u_XFF^#!nB`g`~R@B9Tswls~tIVuD1IFH4C8l;vkcDfCRf^8P|K4~tv<^o zuzz?Eu!a=MiO8ZaD2sz6@SY7{wPX@u!o;QShgpD zE`>f}T)?k#PvP{(Yz`am0}kiyz#S8lX8NIe@zDp}jj2YhOs>~*H@acPu62?CJsTl{ z9hzf`Ck2!YVQYl)ELz6lU)J9rSh5n)g$e1rW=#ZG3ocUE>- zt*>dFj_sOByURUcPp^_8gi47d&KS=Jk6ay&kxSN-OJ-t}td!)EDd-#qjHW&s4C*Sq z>(T?iR@abQ#LQb++E~qQi=#f8Q|_}U8N!FrR5>b9)_>$_G$=9eTz4zqQn-WRk63H zerV-$Rlf3ke(CX1cAX+bE&fLE<$9CHmGo)|-_YyH)+HD-j%f8Y`+EWRpugN`(dVwf z5N&sRv&0I=psShbVcAh?)-0#49_wlOj4~YF`H+8%F#&kJ5!f6a9-g&i$&%(CHvZS5 zcO{&zUR*ZD6Nj!G!~b>8$mWTP_4GW{GeV@A%*qtfGgf*rMqU>7Vcc%^{1F}wnxx;K z616L_+@v}Gb96u5WC~&>og;ou3jZWgj8Zb2Be_;MnFQSv(P7x5+~`C@LWy% zEV!O_3w7tJQI|hPLxBj+TMSsDS_uyjA2^xx!;i8dx-5Au;S%{ciX@}Z6W}m?%m`-g zKhTdMKlQvD8DVe@tzkoY&&LQe0U#Eo67lqSa5Urc_jCkxIkW;c+7hZSx}cgMQbk>^ r@`w0)x{>-o8Sub>2L?Q#=7IkJ0XuI`U6F6Y00000NkvXXu0mjf+`7C} literal 1095 zcmV-N1i1T&P)NV<^i$Wek0eQX4>wm-^t=76@;`jTz?v5Alo-6{ErA!-5m#-p_xZN?V>4{Qt&KbCr+);0+5V&B=3j=O0BQ5hg>JPvXF zw_i2Wh;e5dppBW)(wQ3BX7o~S2;8<#!?0oAlWT6@0Z?0QeMa{#`oLK@)~l{e~5Q zk^^|L@OyUp(s85IS=EA?>+AqVolOvJ>F8byYY$=ws)Bac2@% z&X%{BS7q;;W-frQbJ%+aY6*Z<>Gy@&yh7uzBlb0qTy^7Gs8PmTfZ(!j#0^gGIv*hN z*1UI%h{UL~1){w&ftLaB^Snp932~O$fiI-vmP%$33%4o&V%$|4s}IH{2p@|e5&$Be zWkREsK*Iq*x|?FY#Ld-kUh%2}5E?(Tp#&lX$cQr~iP_tfUrr`fg0?C^#`rl9K7ejW za2g$Y{TyEfpwRdd2n~=BXE>D3bh*l@$Jf{bWR2%PVdtizVb(9C!ikcn-<&wJ0mvHf zttYy*>%VXDd|{FYL8(TfF>z)JkY~K==+f)`)Sd&O0Pdu^ngC?Gx~Lz{Tc3ddUyvAe zf6sD$m3&=TgbeF|7AGxvpcI5E zZYqQ>^=)S<9e1&A_6dzL^gvw?ChkC$5Yk!9Yo|vkr6=f*W0W8)p8uG7FqwrcHNIA= zIMR2>FoqMeq~al#1wgC{Gf(82`_VLvtg}dZ5LVLF83X7_+&v46gtZsa(>Z;rnLKV` zyp}g+a$HLZHQsBrjF2e`gkPlFXg zSQuXmz+bH9_qR0ACBF1|pV#VTny4gd%cc&h>53nbI`#9yYJs!OW{sT}3a*O4rOdkLM N002ovPDHLkV1l;Y07L)) diff --git a/BTPanel/static/img/soft_ico/ico-memcached.png b/BTPanel/static/img/soft_ico/ico-memcached.png index 2183430fdead232dc1dd81e5e151b1783e2eb531..ebe679986258ad0afe48a0e2fa7ce69757ebba5c 100644 GIT binary patch literal 1678 zcmV;9266d`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB6_(?=TRA>e5T4{(JMHGIoXE$rm zH8G3PXzrc)mk8b<7%x2k30}Vf@kBNXyE_4IK~Pb5b_Ekb5fdYdh>E`yyg>AiNAQOR ze@xG2HS4OYQR4=(GtNx;UUye@RabS-5&sybV7A`zz4z+X-Q5e&ZNb2BqAY^CFLw#l z8=nSrv4EcPN=%^OIx4YJN}P46yco!zo!$adJ`2!GeW#qmN#X>)nDp!DLexyQ1eI7Sj8ia~IYO4qg1_sVl zMiCJk=^76EfbAo zT5m}W)ohGN;}R|`O#|kbAiPb=g#aK#7+pq-tV{y|`>8o6#~yQ6#dJuS1^`zZfa1mv z4W5{!!G$3J4=Z4)vQyDSxRWmCmn)EHjwqT4EdtIf#gu<-K+9SwdPFBZ5YJg@wd=s? zaJ2rjWWySpP|W8{8F3|lD^1f^3^~GYFkV=x%j_XPTK9E8NDD7qB)E@)od++7epv8p zu5~~g->FG^ZJH?6iHc$Z@$;A$=LW$zfL_qsrL#%e6(q(WJ`Usgi($}rv^7qkSd$(YnfQz`&OZ!3C>PV#u{G1}h zIl7YsZJtM@%np(~jQEl#pRuH8#Lpy|R%Zv{!^m;{*PJcTp|*wg&v!JLMP>(KIB)ZO z0=mke7w*Ui-@DXO);b6yMeYV^VAOnKauI^2a(Zbmh~p}39LI>O(nGWw_$*5l4=J?} zXDQl2WM^WW-P)PXj>Zc6HGk2aUXy5Kc95#rp|DF%i7yqPJs>DRI^kZm5+6P=gmITCJni;r*n2DY&}`oOt+Euh+3^ZJRVfM5H~YS z6%U_ObVS&h1(>AZin&p-z0Pv z+d7d_`F?8r6PBe@K<{`EZlk;29;aFgCo9{aDPE$++oz1g=rzIv^iIM$qD+X+x#*IA zfUa%pU8)S(A;>Mc07lnM8tWF^72?1Oy)%t_~+*4-z9_!jLd0!CIIp@qngr;l|SJg{L~_QAdo`O`yJ zrTavL_{)e`EIdjL*<;AE7{;=VUWE8lXFH+0PXsZ!?*ptEzMURQ;;$yDEg?*RO#oaz z6Oc5v`$Rz4+u=?0V1?qrv|vik7{*$~;nTvn1>Gki;2K)Q_O3UUf1W}ea)%=+!teBT zlQCuqeT84BOif!{_lW=u!lZA%|KLUIdGWKj)ePJbEbOFw%D<7$i<6S#cKKsTgbpfv z#2IL8csDh68|l8F5%@Cr1vJUht}jh|*y*cHp*=N{h7ns1i1OHrKVqJQ+WgpokyA5R9 zdTMzCchfYP$%r!qQ`7vf2>=c8BK=(*{6dQK$!8;-MT+O zL75WQh?3y^w370~qErUQl>DSr1-Hzi)bjkI>|zDyV6zu{HuW$tFi!DwaSXBOy*v4K z*dYS}*X3eb;iqL)ZfI$6Nhor4Uj6@Hzc_dDfm5GCKTj!6E3-D9%k*dYYw5Ap=%D@x)X74=;RThPYJB&sRy9EkPuYVu*&yeZG>eo+{EN&IJY=f;aUGT#|g|{;6S` zvFGm@_E)p5%u9&o2J@uIZ~(4jpybrD1jY|KaEC YZ#b4~Uc4L`2#iMtPgg&ebxsLQ086=EvH$=8 diff --git a/BTPanel/static/img/soft_ico/ico-mongodb.png b/BTPanel/static/img/soft_ico/ico-mongodb.png index 238632ca71914ee79015fcc299f56105f256c6a4..be7b00a959f2ecf0f7b216eea4bb03c7b97605a3 100644 GIT binary patch literal 2067 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 literal 1240 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 diff --git a/BTPanel/static/img/soft_ico/ico-openlitespeed.png b/BTPanel/static/img/soft_ico/ico-openlitespeed.png new file mode 100644 index 0000000000000000000000000000000000000000..9c73ed202e90ec3f2a911cd077433f05af3e1336 GIT binary patch literal 3200 zcmV-`41e>9P))xB2kU&VJAw)&Q z2ZC6U0@g=Gd4v=iAkxvQW2bg1)2Sm24sErO$B3=th(mpiS``H+76^|-s8CUvN|D!q zZ$)APB;-X%a$n!~?Vg^!>!F#=1BpMpD;$ z>h8XKt3vKf&BYal&M$Mj$YTyllFY}n)qfCx0~~k_ayT6ymXPTPc`Fu2I4LFLVib#9E}NFiWR(2UI+?tTymMvuV$z|Ui@ z(1(`<*zxlUgh2Qrj(pKF_#F-@T$zh-af6i3ABrvOa9@k18ebR2p=3M@1D3eE2oGcz zHoXeE2*Kfk>kF`^@|aY+=|iKdvUjH#J4)|Sz79xEvC=qH%FYuC_2SKY!kA1Q`DW- z=cE(_6|Fd6eJ3ugva#l%_!?Uqmm(f5ArO->Tz4OVXo`bSQ=i|9Mmds~rBTvCTouI` zx`CAlOasKQaM|o)AKRJ+|8A0sI`nG;;b#<<7kmuLsC+T&$p=@Xj=Yt>|Xt(dZM13bD+V|1?ZKLdDIPEq`6&(^h%#JFC0= z-FNlT<8PWnVqKhXHjKWoeFNmR?*J}Cv`3SGI1n)k3B+=!3*|mHhd|J#u-e9r0h5(P zT-hllpIB_MUVX6d@Eeu)`+R(a3g(W3oAz1!nX`85(eYM@G|6FcuHHOxc(@Ak8s7#@ zQZ!Zom_^&Q353$bGSWoubDt21x$4{?-#`?fyP%g)cn?Nn;t^V6uE#R*?p`&rzP){r zWd#rFCL1crxtZkSr&{cj-WaMea@3nBqWvyMKQ(!{y#t1{ZUjR#)8-8t?K1f!5Z#(c zI{Y@A!fZ2udvt@1paavEl1(Z$*%yV|X0)tG?Dh|BtN_1#lr%u>l?f%6Zl74z?Gtm7G?7fo3|=yfi*QBB_<{64H3MM4z#Cz-2HHr zvFGjyjf?#wPW%!4PHh(erOV_ZAZ!%D!Td*E(!{Dyf{)JcsflE2+H@0T3)|HuDT^q? zsC#wtcyilQBO>Zv&J8U$jui2Oi#IUX!56Yl95Nal)|XHz2!XCv__=sA!Z<;Sg|- z!BtHw;JTJ&c|~UJ64!>^l&;M4nvE_rP@w5h0%gF4deOx#C*>f6Ox3UM6Xa-TQgQm8 zl}&BNRvpawjjYSRA6%9}1nP8FOQloPjZ24|(1$R#_CdHd@|VkVeXVQPhj3eE7{~YI z5cETcL={y+rOYePb3F0w34|u593$t%83uc#&CQ&?PoKMIU*S{Glr`lHKZ;0c7xERYlD1FmkR0%Q_Yfm7g#(FhFBMOb{1*s;ho7?OR_DtA;@n74QJ-It~X~!3N z3m~fH5qX~hsf#78LXIG`9B2=Yrb`+Na{=9F1%~WAf}2Huqz-v9)jm|8ClE?UzETeb zia>%p+KYkeFAK7U(g0f!lE(N$aLfLK7c2!C55p;i*TqT!h>_hJ(2zY7_6}VMADMR^ zbkLkzn#I0MtY;e9NJ?1a(S)4+i$s6VI>{D$3?Y2xy0U{CoXkp_SWfqXa*q=@F;f>X zz|_befEvU^5lN>0u#tsf^$cHM)O~39lYl(Do*6G{wOf4+a{v z1}8$@pr67qcX(|q0#6GYUMw5Px+7y^h1VJ|13^wvMoL0$0ax=(8a;uKQ_1S6s3d7j zG7WCgJ>)Lpwyr>4V|(1n!yK4Y5ktMf0>w^S`!Kcg@F)t;fQ$)o^rCc(L3VuQa{_3ykK8#bu;t@v5L%jqVkQXEms#?n)1(HOIkok zD7@O1Yb=xBZj;q;N|&xU^$HZK=tRZkIdF2|4EV-B6KNieeov8{4BJO~3iF(u4wm0vjFaPAf4@&$FXzYP{;z*^>!7 z92jMA$RE}E0u*#?gocc%@J(hZwCKYnU2`9zll_Tg`gGeQAU)#1U38URMz_ErDi=^7 zC`!#K@uvqut(6v#@^a+Dft6$U)`Flo1_ugPLX&<8-Q|gaL}nUr$5vZJgu&MpGw)cR z3{Gh{EMQ8+!3XH2pD)P>0@Yj?EX%3^LE;&5We?8$kiQ3w5?@Ve)r$1_=I!( zN#=i!Q_m)^ZfVJ4Sp!Ftjf^94Ux|WVC{bpRHaOk;BXqqxsd4_fVB&xl)AmixVD)En m>F?>6K)(d~CGh_sfqwy1v^_4gDy5eI0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jBDNJ&INRA>e58VOWY)pozfLr@Sk z1QoPYoWm(5HPi2$nTco!X(?$TiUXQf-|Azjm6(7Em_uslSHZ-UQ{s#R%AklMD9$J# zqRfLldFSta`o}?zMPlk7wBDo^$ru2Y?rW^2#c9=Y9eEDf$=_^i_o9 zJ}PD-7OdmE*&hAiwPsDAUpEJp32}~>+N3iE?|by^3V$SCfiFK8%#FA<{Y(vsW*K+x zGbg|0?ER=HZX^l`={+NKeSF$Yu}zt+?>N=A~Qmz6O0dl2_2ar477l+ZeVSP8KT^jRHSYjDEx} zMeK<$B1YR5){qn)Kq!ZP-P*$G%eTPEFL(|yG*8(8CxZPO-^_i;OifJS*8N8U8>j_b z{J$he1S}_}I0jLp1`)i5tE(7WY$V9VE(r{w?BC6S*Dh5SWd8?ct&Vz;vAOy$ch>3D zUDPU;nGhBbUz?3yBlxjLFZLNe_MgA(li6(l>O&Z}C{o62Z{HNW2K0pQHXr1C$JWjH z-n043@v?g5pB$>D9f^sWxOA(mvR^;LGvPD%5XPWxBslj7m)o+K7nHwuEWypN7p1p1o#Skq0}1*3FbxY zZM}E#6t467Yt6tfbO-O{?lWny4L<-ST+hyjrBO%V9k))OMjlLJy{Cn>lj;~8iBy5` zzJB3ND%4feLC4OonC`wuI!cl|;0_e^&BR*kk~^O)48X~VX$8n$M55H;t}>1BgWiBG zN6xK~F%?9utt<3oZ`y^VjaOpzTL6%nEil)R5jtVos*=5R$@00o*Z|OUC_6xp{7! z?+w@?z;K?!u7y4@I&jm}r10543$|3swiOq@;2%5Qm+A$Pr@T%rN4)$ z>i(|{FtS(Y)gq$?ku{nW~L^9S4_@7bUqUj z!{*2*6(zDpNHb!$c>Z%kjrv)v@t)#dQczmKT}A=Kq@gab?O4i2Zlw6pYh+(S`o10x z_M+Oin`5E*D-AhaQeG+Y1q2r<4CsLeA+EUO@BklyFD>;NF|%yswPf-;qRu@G5>`wf z4F`Yp1>8$kzaB8a(5ZeSNifUsZ)pe_B^z zX~;Mo=-Q}2WzxgJj-T~HD{tUJ)Mzx0XIIX=EAW)1zLS+25*p*=v2QuHiH^H?L*&Nd zTv=OL7_G;kyTlq42s2eDv~K>2j2oMDMMfJU>eNVb=&U>LIJp8WoHz`YMIS#Q(6yD% zR$6Tu3jXN|yVMb`oyXbRG=hz>iRibmmc_Adcf$ertC4LAF7$k19aeq zhV~kb$^&6*so&&yNp+Q(_Hpqh{7Urfl1tpbbc?G4} z3|K`Y3-c~`KGbV!WdT+e=1^Ish5H4ia6Km0lxxU%d<24~u!7_03Gd9uK!puQmhc4y|}L;t2+C>-L|4-{MlC zRC2(XV!q9_V=EZ$+8HQ@z(5^hldsD9M#uO^L!5!4)`gL=keU5(ep1-%AeoW@!stL; zriHk)v$sy5m}1;_zv{){()yY=X$X;cQu_pL4)s6D# zIgg%xMoMFWo-(`_>^yl99u$=ctU8tCq!A0&!cV^MfxY5lgV6~T;^0)kN{v-&Fy0aj zYK$$(F?CAWp zyWw2sJx~!@&|Q_^&ta7o9|pV|&j&yI)Pf#M91`sZd;2u{bee zPGPMbK!MRu%M{E)w;nkU9}MhitPW^^x%hI-JPJUwN4NhAH?o0ty4qmJi3>3G-9Dn2 z?C?c|)2(b8!(gY5uy)_sG#rFpHd8dJL5vP0K79JM+j)hXXsX|Qy|vO-q%G^$<2#SY zs6oiX!Zxjx5lyczHjOO78?)8~l;)tz5N+w}=6b?stADRnt2HCJ@Hsz52f}Tw8qE4B zI!-&U=Bdz7eLUfe?-){`yQS}l-VprTaVc95r+X+ZaKDj#pc!uA1*PS%^`8?kO}|-N zP*&AGVbzSMi2*%JIm77oOR71i_B?LdV^CH}`D6F7{ky@5i~98@WZc0^u@x+zI*NOh z7H{~>G5mU&k@ftvC%q}Pux<$by0+yRc+W+Vy0VI@_d(6m=Y?GfWudq{1YY7v8Nszn(DU-HNIw-UT*2?6Q*%?2+0@@fR8h z8Q@@Ia~pN7hw;^0bhoDMl0J#`bG zk{(=W3#U{Dl^PQ@T)dSF+m4=xkeCx`8MpF=Bt`_Rmv&r<<3?FGa0>jnf$Bl|54gj8 zsA5cqxu#86W|(MHAsB1br`?8jtW?~w=rxEwv54KL4L*VjE#pDRVoqID#b3VHF(J&~ z=qDuDD9h)aBT9Wp4)iTY=FFNuseFwxG3h)l#1|vm)wBy41E&rxRSP!k15*o&9AkRM zWOW{hvC8yhYIcQUFI(JVYXeI6T+e<8kG0i_Nue(uwkzv<{`RZ1r~{p}D&SaRMpl9H z`A(=pjUfQN?yud4bE$^;0{_pHf9;H5k4~mue-o2y=kR6Eoc>uL9|KF;Brr$D?;@Wp zkIt^vLZ76tfZKm&0D?`O7rS6s*OFdGs&(347?oqDP<_+F*6Q4`Kp(@=WL+zNssGXg cf1L;Z0~L+A>3JgY_y7O^07*qoM6N<$f_RHhF8}}l literal 3350 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 VN&V!B_FMW>u_ZbZu3GxV{Re|wv#S6A diff --git a/BTPanel/static/img/soft_ico/ico-php.png b/BTPanel/static/img/soft_ico/ico-php.png index 63a624fdd1df9eaeea6a39751826c3bd3f9b2599..760ca4a4f915aadd4ea9ee37e86c62ed222684e7 100644 GIT binary patch literal 1537 zcmV+c2LAbpP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB6Ye_^wRA>e5S#4}nRTw_+ZMVUS zB*utCO^gPONMP%TMiPFA{vm!OBoYEqU|H5NnZ%DDM%K<$(oU4bC5xYHH-(_a8Gjgz z{xNYHKhPiThE5Swei+#%Q@6p!cGuqH^PcY9-F9s=mQADHleF*WIqyBs`MU49LM&cs zYEMZ1afGmxMkwC%m>sPtmiR&o+DXg*I3@iA!B{dWrK}=Bze$oQt^Ze1yEo3Ke!lCM zr9;C*Z<66@jn=LE)M;bhuEc|5l$NZLX6h3u|`<_DhXuZ;HBN?(D`=8Hfg| zR|ezBz0#5|YCop19fxg0ZXIPSGp>#9uKJaEwFa5t5{xCDR18swciz$x?`kPU1?zMG zrC(BZ9qWjUu3)@pr{aZifNh4yb2H1rl|& z+3eKu*$}Q<^CJgfy(Ps<0!}@{$=4wgj^kEjT92|#7a}@?^W+9C=N?)rfI9t*vMboh zl;&sJnGA}t4W(P_fM0-lXB`B+UfY>w1#uei^nb8SQvB2$JF#Bbq|wO~johK+jNsF} zuA^m5v*6OoXFE<_HfoJG0u`~$=ehU%SV|qs(Lm*K?Su0;Ydpe7PcJtoE;KTp80aC} z4~*TD=8h8^v|%JYKB~@puV?-K2iE3IevZw0a^g%d(ryp zE47}fJ-aY~uL6d8{o>$sD#T;PwP8Z+^HE7fFtB#8ke}TX0KL7CQz1QaclA0{EI^^U zuHHq!MZiVCMZiVCMZiVie}aJhQn!%(v?gYmwIwC;!X}*V>d8iDh-s_2eKz{O-uXJgsY4_^iwNEhCdpj=e zzSMGFN^}b8;EtBs$^_d(vBXy78F{bc_zM|aP63RMy%j4ChVQ#NJExcqP;^9q?4D`A zEP^>wj@-hJ#HHcFZnT9(Px0orpF{9%(MIRtrzDLW> zIIP1;+XC{iwrg5&L@+&Sv=dVVaG)+ks(&z~?O4aH%ukI>)qs>RkDjN!6%~gSkH26? z@BNIfmXV>W&A?1iz1As8#w$*FYH(n`Q$}LjmL*RM0D5*gbfnieJYkI@aKVmdYSAQl z#huYwzxpnXuVc9DmbbDE9e)GJKB!wq+WHX&<1Qr=ecKZ7uMOh^w;Asl#gO{6UqMPV zM&!9W-*;E8leZ&Sd=IHhlT51@F-7(ADD=idHlJ;QKGtH4W8wvQISg5w$ nc3cEp1Y87M1Y86z1%bZ+h#(abLEqZv00000NkvXXu0mjf{RYa5 literal 987 zcmeAS@N?(olHy`uVBq!ia0vp^CP1vg!3-qZHfdS{Ddu7)&kzm{j@u9Y9{{<30(?ST z|Ns9VU$!m2WJ_Gprud?bF~yq`iZ;g-Z;L6~7+<(CK7T_@{`#2w%|He5C7Xe2z_Ocx zQn3Xa;tDpz6l?}6K$Zm>5(m}`G$F2VGf)j&BSai1h#~?r79y;nEJ`iU zFUl@fa1J(mv1d~c0|Vn3PZ!4!kIuItH-jD<2+WyqppC_2hxtPeX+38dg#+t$o>9y{ zv#8^w%Af!H6;5tTIX6XqTNnE;$JEkN|K6%)JRf@3H;U<{nj5Z4Gv}OmcXNkhS@7gr zH+}WynwVzo>{r=3+hL*f5BIYjA2l5#!oPd2U#;4BzffUf2S?D8>8gRx4wZ_;@E3*( z{r-|6k{CGq-S6O^9Mb?V zv93#6ePONcX6uaAY%BWq-Zt|``(}plss&P(7bjc!96g=E8nW-> zJBQ49FBuE-iXx6>FEvR0oL+U~Q{uw&CUPGBIW-x(3q$hcY+abdlnlS_>6A<4Irt^| z*u{6v&D;#Jt2ttQ!!_3&IdRgM+=ls?QiPi{=S5J~W$<+Mb6Mw<&;$TX CKC*8B diff --git a/BTPanel/static/img/soft_ico/ico-phpguard.png b/BTPanel/static/img/soft_ico/ico-phpguard.png index b4fc27b134ed228f760fcd1c26b8983626940b0a..09d62a430ce7a6316978e8f3006d725e34d118c1 100644 GIT binary patch literal 2241 zcmV;y2tN0TP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB9D@jB_RA>e5T7OJcRUE(fz8`>~ zi7rLwoTypL<GQq5^Sr;`L(p>LZugzm;6l`LT;jyUok_0~%v(-3wVO9@eo;p(EG#S{0@}+uMz;|)T#8H- z#bUuU{P1x-C;6foji4{G5gNt~i6>{wG~y_i^@bRs}F$U)#wSHPT&`ts0kNX3R&o(Vj3!9vv_kA!H1p~!U z%+(4z!3bs+CdEPMx-7=NUX`i_NAKvVkz-a>*Ub&1sWBBPbBQL3(&dKqnx6@8%&0v? zG=dc-UYA5RNN|bmjV~XqBf8ZU8tqn0nJEWVqhg?KRC)3Z!V}Ar-=dpfL6AQpet)m) ztm&DeG3b~Hmupy7-v~IK44u!c+emc4?{WUgMTc7fo9fH?CMPKPL=^8N1lH4X!Ud_- z;#!!?pq3v(SK&Bsbw)T5Q#T#CtLwtAmW*I5$$kJL#yC{F)=SM?~I1l z2R_vvK&PpZ^)??bLt3+|7mV+?g0Z&hnk#Vyhp)c6{MzdNfRpj;Pt$rx=k>~)vU2`R$~&DiUhh;uO!kLjds5M=CXZf>US z?;ZxS6x9pXa}#W zGx2RRxf!?~FEioMSWiNAv;Wd@=4T5$w>k!?M%y~Zio&fFg|T(Z)1RwizJE51-kCa6 zHUMnRn zt+ceXzt88p1X{(aRjdBe@;GeigqX3hv4aua0yz4G3maQ(vR8C;bhKeq?L}ajMn1<) zO8{q38(hNGi3mekSi-jv9gZJI0Ca3{qlUB5#kO;VaC?J=pSj3C7)qse1vZn7_Mg zGn{<46Tx~i0yADXSs80r%~# zP*4*NFChtfEk+yhdaPj=gRE{fB_$<8Z~#t)tyxf9gm#G50BrBWo_wv{d6mmLCSq9S zw5Kcs!k9b z$>o?xBnIw>42GBE$e|ei*NGs0?TB#fGsn%mon~Ui%%P0kGHop3_!_o7S%M;rWCGh9 z6YUy)ZpqPRZfESS)X4!^J|T(1ON4RPwXs>%*5lLD@@9p@F zBubdV_A*h4(?($jBk@|UOReN~O~M4v8(opYxB2(BBB8((<$b*6d>bR!jUIjouN-}n zAmUSu7>|kwKA&7Osv=3<+mcQ|k)uPpw}Gk9=g*6H#UFsWu&XisXo;9{rwB;y4q`CC z(YqR2Tv?E$H*tctkKp&<=C7>3nlNF) zvgy;Ohn8)vydB)_M7W_HJ9fmjwzhtW0G=lrDs%(zyJ+c)XD64lYH1=v_G8@Y_e97j z(A$XJbpbY}vXxFa+Fd82HH^TL5!5HRpW<``M#&roZ69FjUHTtG=$Qc;1-uR4#@69= z75%rNM^~>TqKyEPH3~RYi2|R2mVf=DJ=ZQAlD1%8H306r`g-6&=z)I$uKI9=>vgq! P00000NkvXXu0mjf^q~aG literal 1438 zcmV;P1!4M$P)n=XXc(cb0(9|=cxvnOa>LGI-m~70FA(n zz|FvIz_q|JU?1=q&~rl^ z03GUiz#?D`@_m&=5`ip2;9cw6-2fRf)mdB~jsizjpc;|DFi}ddEsO( zNCm1132j;H+d&nm)xfazZEuYHYWLVw9XI$}}H5^4hW1NQ?TAZz}K2$@%adw~(4Lj`JiN*%GNCJN=OZ`T5-Kn(+T zx>k&lLKISg>H!|FKu0X9nSse^j+ye|8t8~cH3V7<{}e5YkqfOOX$cj!@~B*-MFr{^ z#EXTc5vCcu3>}3eu4GD)L|~fxdp_b_4tSvG`3SHzL0?)O1;>@NGl{@B!agdU9RwZ) zJmh2SDS9`6M4oKXZ*L(HX8;MKNjl)4@LMvSP9pHDlUWe;()xB736uZ+JqPqg$PNRz z*dMFIq1}!DQz-+JKH?!KbBhYp1v$wSpaNBo%v1&`%S0k+2KtdILlbZf@D1X{ZKRJl z#VAL|LgY-GC5Axkq23+1_X2kSUDmge2kWVT3e;v`E$|`GX*?5YXzUVlfaJ;aIK6?z(c@X;B}-pRuYK>+$`)tDrI-8 zK;53t=b5Ue0<{9ri1&9J&*bBld0DB1@yz$g1~UWLs6%~KIsMW?hq?pU$z|Od0ZW45;+kxkiYIi@d&UohQa{H%BrybdkkeN7% zM5XOI)NN_>6re+WE8>hLi03z0-e4IkZ8YGcx0rmpB ztZ#?X+EWn$XFvwYRn{Rp^$)wb`TKwefh&P?zy=_+zRgu?M^yxh3~NNf>w2Ubmqo6Yx`9uT8R|rC zcV+?a06T!=#xrBpj9n7~Fd3m{BUObbfh&+Zvr%MYnu%nyn}L1CGiPfuZmkFuphI1U sT;44M9zkOJC%{hR9&NN#W?2dT29qlzWLAXj`2YX_07*qoM6N<$g6{`>DF6Tf diff --git a/BTPanel/static/img/soft_ico/ico-phpmyadmin.png b/BTPanel/static/img/soft_ico/ico-phpmyadmin.png index 63585a13752bdf4362a13f045b97bc8d7e9b4e4c..be105c6732408565ac5bb00afce64d432f99a0c5 100644 GIT binary patch literal 2691 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 literal 2329 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 literal 1017 zcmeAS@N?(olHy`uVBq!ia0vp^20*OA!3-q(BRide6mzkYX9x!e$L)vy4}jdC0X`wF z|NsB*J?_l&QrC^0Y9Qpk@AkSs}>8M9V_dbfA zs(EHAonB$Le@@(SFyZpkqJKJ9MZB&!)qCfO*PMG>nwLASSPZ#DM5wtz^bkt-3@ncNG*?9{NlY^ z`+}p(SJujF>wn{lOGur{t#^2zaKUZ)btU(+nJ2~@xLntl_Vk1osIQ+JCxZaDO!SCiGO_q)Y0v*Oj8mxtOZrCc}DuQ|5OqxX$k{apw3 znuMUvCH46QYdFVdQ&MBb@0Om*0 A6aWAK diff --git a/BTPanel/static/img/soft_ico/ico-pureftpd.png b/BTPanel/static/img/soft_ico/ico-pureftpd.png index ac1207e74d626e5df3e76b6f0838019caaaf5c02..dd675777508feaa215e861b1b145c456f5480d2e 100644 GIT binary patch literal 1210 zcmV;r1V#IaP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB5BuPX;RA>e5SxszIRTTd2o8d=? zAFW1PLTD*2NCp!yCgMVqh7cnNg_3sC5W-HwP8SLbAlPsefu=L>UB5GWUhaFDzobKf=iKw%pLzEV@aRf^fB%?x zC$&Ot2JZ?@6jeq6Dn<$AV{LF`ugU;)gjEN_oPMsVcp8L~S)owa?vAzLJh*T$`}Z1l zaJ_qe(FnNs*WxuupbQNwThVFDZqse~eqs{qc@;yu7SF4rID!hQQ8SCbZGib|Ixq7G zv;qO+I&oL9E3d&%2SKoNWMpKbn%-v7g8)-z0h0-Rtst(v7VkRZA$o?pv9W2DyOhUxuQ6tNcz8HQf=)y3@PL9F%wWKj@SEEw=G{@oLNc!0<<*7( zigp>^UaZq)MU&bhkP7$I9qU6Z?)hJB`#!{&y;vK59U08`b_>%1xSP!UN zXd)9r@IC7{QeC4If1mB%TrT$v2XaAl#Q&Hr;vv~CX0eA^Bz_eWnb7$-zdr6r$2w(! z&f~dYfRAYVVGzNPpD+fy(|r?}q?Jv!k8%~YGr$xl`*&t>mcRGg+`fwsV(@Y0`q7O} zUPxZ6@DV!PAT8zXN_5&BUT&#V@603M5%36j1Uv#B0gr%3V961%c`Q!{jW1ZP!ns(5 zu3UM3XJ=_s);6hp<%%zPFppR(<$t@%Bf83z@|%91*P1tJb6I7Ls9l3L%;5^{Uc$3j zZ|3l)_DNhARH&4fx{ZAJt9pTuL8=`ubDwZfpRs*{@=sOnQp#h{1_uW>m&@fz>c?4| z`eL@rv4u%U(hFFDSKK5d&f@P2;-$&LWDS$ZGl^5ug|i~)HY~j4yl%_5O2Z;Hpv^oa zO_dncl)Tam!?4IDlu$AF&e74)a|vM+4Oy<7Ikmh;Kl|zDvikD=AEWRZzSneELnO;1ZY69M8Nxd;pk737_L_Y^DA>>l72pQvLz!AGnY1xSzv38Hx1a z5Es{ZCh{ELE>?3H^_hz(Q#Qky>c9j3a}nScUphKCV@)5|PM)6i2zUfM0v-X6KwSj> Y1;#gHt{#bwApigX07*qoM6N<$g2s&_dH?_b literal 45433 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 Pn)ftxZWrCMeEz=xH+@TM diff --git a/BTPanel/static/img/soft_ico/ico-pythonmamager.png b/BTPanel/static/img/soft_ico/ico-pythonmamager.png index 3ee82d951cffafd274934ec22ac34adfebcb85ca..59877a64d5353b8622cac26dfa6b7b40350793a5 100644 GIT binary patch literal 1660 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 diff --git a/BTPanel/static/img/soft_ico/ico-rsync.png b/BTPanel/static/img/soft_ico/ico-rsync.png index d59fa198dbd255072f955ac5664484072656f672..a41a2f315caaf945c47411fbc99749242d8452dc 100644 GIT binary patch literal 1133 zcmV-z1d{uSP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB4*GWV{RA>e5SzSm|Q5-*K(^44Z zOZ4?nt6qY7Fw4q(7#KZPP)SZ$>>*+}=R-mw_+q{F5Yr)%#SCeFWM5P-N*SaHkp_K0 zQDjDH(L+TGOWnQw&fJxI@20!E_iR(R2M+g~^Z)w&{{M5f-7`YWW@f<5fSCa^16jxb zRmThj0%d|AG>W2F2wA>buAWm$zhJGky1M!t#-duDskwqkQ&ZCc1nvb1#kxi?muhNi zJQ{Vmt0@43$Ph^EMHCl6wI_=P{gu%1!{&5M_XzCnCbLV2+@f;IwiD4pg6a8uzJCP; z1!rR0i{N=N7!2kyS*DwU2r|nuoKkbSTz^2ImKnj`9u9}krsRN=vVw?SpE&4UAk)w6 zL8h*`x!JDQmtMOZy@qPL+}vE>^z`%#5Mf*ECC<;3TF2o07wktY7Rwc{*W0J|#ib(5 zsmJ4ajj9CL7-Vedt2y_r@K+v*M0!#23oMSjajOV(YPDJ$@Evqd9)Q;vNwR`S5&YMq z*MiI-w)7pzKUX4ERaId)ek3_h!?Oy@9RFE5Af|EbCiJ= ziMS)(;N||gRKy-CTk~~x{INuWQqr?7XMLkQP`by4E3&22v0aEv-N%c_Mh2D=I&7gd zG%1W9+|*f;6h9R#f=wg?uPO(ABvoES!7!1CFvC8}qa;`yY^kD%Al_Oera~kVf&8ZA zEf%*a1Sw7oZ!NqNK1Uf)5S?w#c1Wl7yqV#Oj8+bwfH&5&+6-4DtLSCHO(L>nEQz7v zGh)BKzgwi@F&uZrMTTZ}bBDd_lk;hXW}5_x9JZENteXS_6ioo#od8=(ONJ}5!a_@C z3EhLLXsd`IQb8p3K)I74h0&Omki#jVPM~a<$h(Tc3HZI8z<1n|qu-G?HaT+*WtbyD z$unGL9{S*X_$^L3#RU#qOMAr66SH;rJyy;v@M3gxZO#VACqy9HtI!-{nd zak#mVut``Y#|pqu8eszbM-u&1k(8Fwv!$h_D28WPj!QuVEUz*l2({tLvshv;H^|nQ zVPTkX(-@3ljAE7W#GN?5-`@t|Nl9TTK9TS?{H5WRV~Zoggt*OfA_J!|EW}fBeLQ`)8l>rriOqhNbq;VQZ1kAlHF?WLK%pDNLK$SoIQ+eo=O@f^)Fhi#?lqfa=6R>YR&G z6H7Al^Atidb5j`%O!bY7^$jhI1A46(7#Kf#x;Tbd^zNPdwtljK!10xr)^4*(**tsA zgB#4%0ng5u%wDOuBqn!T+yDRX4SBBf^Si&j_oJ5aNzwj-osXMR|K`6b^hjG!lv^?3 zWNyOxuY4UnoE?>Nbuk%!+@2#@_gNqM2c^y@`$Q4v2Sk=DHR_4~blc{IY zyf%7r}%KS63`?mRMZ++OOwL4@?SeG>xojmlM?bI~hP2c2xEo&4h z_;tm>eg6KMqE%mRF`X{*&sf@crGlGtubROgZK;l+V2e}htj_Q0T5u|1vUyJ5gs&Sf zFWCChV*T9q|9-D0JX4Ze+s2+Q`e%0Pv+YT*=AS=nSSDWi?%WE)tEa=}hxXp(4x4iB zPheNPSE@Dlo&5;{0($cEUa39J`n%?`{L<|i$M;*-GaRlhaQvqE${UzG7(8A5T-G@y GGywpVFTffA diff --git a/BTPanel/static/img/soft_ico/ico-score.png b/BTPanel/static/img/soft_ico/ico-score.png index 67d4eb1dadf3c9c560c25806999a269f3af4aba9..ee0916fcf6f6f5ebd60c5a18a29c103ba9f805cb 100644 GIT binary patch literal 2017 zcmV<72Oju|P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB8OG!jQRA>e5SqW?uRT!R`cAIW# zs-cQp!fwlDJDQciDTZ_Mo z<36`TM&Nyqhz1|lp_{j6&6*rj`$nPK>odP&`2hW@sW2l@I>xwWJvO0Shv0z5liF;8n@3s)Xi|{ zx6s&7Ko;ajY{L_D@gM=qNFZL3lB5#qS@Yzz**y#h^>FD?4iy9MbOv;5Hj;9zsI{Qa z$1@c(a|?YtrnCa*%@LBb*JqTu^V+It%r{dbQ0juRTqybkiVAr_2B+80&It;EW!OBX zJd9WEvFxi2H;>BEH^6oXV3i+Z7|50MD+})r;JL>N||c_jH@m<94(?z|*ua3=}6MBs{Cd>Bf{#9KU%wWE4P1z90&b7;7v8 z_d^CA+dn7O%n#F3SSwIdQ!~D|w|66OQ?Z+E=+EJ4z!CI5dcpqr?Ah)m$JB$8aM~8O z--!Sg2ZZj?7lav)&7yTM}^Np*E~vfuB&3A#TqF)_WU zsOSi0y&+>RJCzwJB-_Yf*6Zd3%9{{@H_~-Wf>}*j@p3@;3YUjc zNit;?i)ApPS=7|jq|1=b2pF>B;^K6#2uy*t_jLMv1lxvLrfBi2SFgSf*wfL`aY&0- zE$-N{V`(4|5K2l){?an=W2#)?3<4IfHD@>bdAcM?xv0{A(&E)fK*)#Sk6I!>w(p&_ z2nL=ee6lQ#VwxYzgkq^s|;S2ekIDkDI!Q72DYIqr7>%2x7Z*qT0f!|;0>UP8jUKd95?cdxV`&6-1CeaOhpmuN2TZ? zQu_Y6LjvAgN3HRe8AeqWCmsggRv;*3>BV6av{|VXMDqc5p`?2YRl?V(|NjiLq(OjJ zYHVy&ZQJTIHw3-6-X0Whv7K7n9I>p_sL>7kEjt)@U0vO%o}QjB;lzXx?j#E4C8edM zzcHR@`-!fsq1}GpNqngpBF2l4yBD{fAszH#xwEs=g<0ExSvxThz5ND)04xaLFapRS zg;4%3l)pC+<&k*o&Wue6U_J4~i$cb^yteNdKdK!n)*Apzuy@{SwPqF;7G7a=qdsCF zcx9Y|SH|{`!XuL=O?oanJ3H(x!AP+gZk#J;M6bW+1QMgX{z!4s{0mE4zA)m)3tKJl zuMrK)b`D+?jvDb1&NL7xSpfP0g-H}Y#4MP8Vk4e`w6yw}n}c#tc_Al$QIM9q9W8qz z$-<9Spw|%(mhuWL4wo(PvLN(p)o=A6PjS2Sp+Jmy7 z`(%vFZNA`WrK3CA_ALbH2m@mp*!}FU3vMa>+ z{LY;_$MQn`!EkuiFw2M}Oz8@mg+wXAj$cn7^e1OVr^^^gT}X83W4`Iw4NooNz)8^# z;b{;&kMnyhdS%n-r0)>`U+DMC1o&_Q8-JRSS<^s}g(TeQXP{st1TUqeq>Rtc&-WTB zxm!4@D!g8A2lS7}b0s-Bd2B&J0e#aAYlf#5aiQ?*Mi8S=F6;&P6oR7v$Y+UmuNv;M zG|WOA{Md(?Sd6j$ThqOABxWa;fmjCapA7sBZyDB8FWGBr00000NkvXXu0mjfn0=ZU literal 608 zcmeAS@N?(olHy`uVBq!ia0vp^RzR%5!VDy1yT5b;Ddu7)&kzm{j@u9Y9{{pXbm3W`M*fl@zhDMIC1aP+wDOLbt9GBc`_4`4>r9{&XMsm#F#`kF91v#w za_PPhP*AMIHKN41C^fMpGe1uuBr`Xa!N64C&_LhN{M#?rsX!GnAQi#+X(i=}MX3yq zDfvmM3T~N2spa`a*~JRZ!DcV^Z0ccPU`+LNaSXBOeL88k7qg>C+j%wVKN=Z`rD^j$YRc8O3fAHqqlWEsJ zvL3m7=H}D)c9`MsOaZYfY9(bNQ=Ep=B9!wwhY? zyU$dy;RsGKj;)w2?>=vX@;T!|$=cu;+bInN!LDbgU43!t=}n#t>xDI2^Jmt6ImR}x zS>^ORrCDkDn~v{Xp#D(cO{lcTGiIGX=7+vp3!Z(XYLm_~McUWce$nBsb6mfc?keGx z@~O_eptyAQmnk`GiZ?CH%lP%sD|FB8j!Q{?s=?>ZpPJvDf5>KWu;hdqHekdsc)I$z JtaD0e0swNH_pJZ` diff --git a/BTPanel/static/img/soft_ico/ico-syssafe.png b/BTPanel/static/img/soft_ico/ico-syssafe.png index 3252487d4d923defe0dadca962a570f6d3493b40..f5cc61b192299efc4291e7d5a66ccb6336d708da 100644 GIT binary patch literal 1721 zcmV;q21fabP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB7BS}O-RA>e5nQLqmRTRf(w%Z3% z9>#=rAu1GKF&dv3q%A7(gS;eyRzX7oO)P!T`iRJ7ng}fc zRK7^kV8CbsR2opk(o(jY?#_@n(=I!LVgl8Qt>h8JL;ygvalvw%rWgYH8qX#csvggpgd|m zI5Q*I_znF!Qg0hFDxs)Es;jFz0l(ew2C!b*yBrS3p0Q)cwk=({^r|ryuiUa_OGaN` z-*ecLpuGTInt_Sk-2`co(T^m}QY0|fAOX-R6l=4yvs()a3i=}f#j9JkY?%j)R;djQ z4HL+O670T#5983yx5AG~BxLa+BC<22e_fl!#l?SNU=0}|*{~ckQ8P!Jkx$|cUwAVA z4-U=5q|@Sdl~U-tO!%}7uG{nWw(mxfKSP>@o#H_7Wl0V;WBQJ2JI7cedvDA0w2IP-VwHhG&*X#H`axj!vIEF)iDns%zQjRbAEV?rE82wyTen6Q$J}kaBd3)|ONY3_oJpZSkBLlViTjDH(bqV>Y(5xB6~C@cQY3;T(A1qXuN`d+ zhjm3ukpmOkn@h$sQXJl23feCi<7Sd4W4VvSO=R2G2X52+T4$&e9Ca%d-B%f^3v288 z98LFix^?9Q`Uk_tV(i3CM0bu-6>nd_Jb}At&kvm+U5cEctjh58G+7Zh5!KfpFa`-9 zU#JNtcEZ$?cjP~%C|Y}%GR{syU-meCFmngiP+vmAY?@(@beNt zJ1=HPd=k^-y&EG)NXwT#>dOwmkC4a(Yp(ppE-Wm(63xXYTV5I!ZQK~U;O|P;HKP|< zZr!?dba!|6yx{1O$g>8uRz&37Bt*uz-R|Ycs==k+Sq$NJv{}iHlD~P zE2OBYm6es%48WfPf}^WiT3XB^E-4s8HNP3b-s@tQtmw|n%-kjIXvOlg#_#600o@=V zfUf4Z`$y3L6ERj*RV7d3E5X8MH8v}(aHBpES)87pE~nJ4AW$VYjXA;gbrD<(jmLQ- zg|DWjrhaP2kR=hWFD36w1&k+i3)iKak(TT17>_ikx3_l#_}MZBp?A1ZITLB#P@OG@ zDk>`W0=iokV`LWT7D%WgHjTP0S74>k0{Q=aI^7cGic^88H!A zOavEVa2w6QzJdetoiButTyong{8f?1hvN$-=L8r0gM2X-60$xfBC-%NPe5iL%`E9d zhASU^J-76=!3$|o4=b#jit+>I%3fiVBTlDtNoi@R{I3#IiJ6F4BhBt4%|6GeSs~WD zAXSfJ`%6knIt)Do@@bb*7coC2sF&N74_z+T``q$doW6o9OhjBn3`_{kgV4t~c%PvY z388a{!_?`FO%a_@7;A;>YRLX-=;DzHAtDa6wY51rIy#DQP>wWVP8$v~CQ;wZ_$Ryz zKN$K%$b=CIb%wLj4EhUjJP)TIL7qhJ;*ZYlBmJy~;wIb42qYtrjDYel&0AwkW@+y5 P00000NkvXXu0mjf^hp?v literal 1007 zcmeAS@N?(olHy`uVBq!ia0vp^20*OA!3-q(BRide6mzkYX9x!e$L)vy4}jdO0X`wF z|NsA2SY{=++(K@tg#rj!DJ(IUU1}uAB@&HTDaX})LhDJtiMtB@BjHN zleQcT+w|qHQ1rEAPrFAKJ3LSLOg&~*;FiB%Z+VT)g*Ub9bSG>OGwt{_@!apd`sSy0 z+`1kaoK>5Cr%@}k?A#vt)td^`>>LDM7sRUr)=(-jQ&?&M7aO(dqJu=m$IbeeOKe$;@c^y*@9Pt3i|T zY;MfIi(Z;m7uNk-wWaVudS+hWPw^IU+fbek-d7b2Gqkrn%-!j#%-+yp_Q?^L__xht zz9hHGK7)0K9K$+>8@*HbuD+>j2rCt3S}b&DCi?}y>eX)9N%M^qnD>0NF?n@D{)y@p z>xXuK-mC53TXCLemo{HW>g*-SYrl%`W^}uHD(T~@^Y!k*bHDLs9C@@UdG4hBzb{Gu zoWk*WqNJ*1?6vt?f+mswE^M}mjCQG>Uq4mv@AA`M0Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB5M@d9MRA>e5SzBlmK@^?YP1+(p zs)AJfFhP8w{wONe2Q5nLhoB;j(*78$jkIYh*dL!%5&iJPwrL9W0SX!=iU>Zj+JdzT zK0vJ22WrI+K}CwyDlw1o%$mgA&88)`Nmto{&CI>`%*;9WPSRvbh|!D;7#T1!@GoV6 zYLRuj-Gz)XJ7P2OjMBoS(dP%3XOz+_IXO9pZ8lp-YwtKAb#--30G4Tib>MqwGMVx! zDk{FIxtQdR`uh6yP+tc1J?M90QXAraIVRoXP$+l;s#z$RBRdSazPNB zm6et6aSZ2R&MrW=yIihL#3y0w0VbQzAB=|eFJbL{SnFkEy%F8r-4if=CtqJ71Ob5u zF*(fpa5%gQT@lJzgT50_0iM+$+KB!=1T6w)CGZz`9Q|zAg%}T7!(L;s*gmW)WtcCF zvBXopiCTy}MzXT9HbKPR^78T*Jdl~0xg!t=oNzjwPq~fW-O$j`g8m7z#_e;Bjg9jL zvmzk3>r;rs;rNaPBoTZe*a38s2yRCz*MVckO>Xn7-It6szi0|U77pROe@Qc! z{I>X7XZ&W1NjHMcHR3z0IPImqOrXq>Hq9mJ; zl;d%K@BzP#JbWXw+1#VvPsRPI_iUq;zP zREhwz2iV#!TYKytA&S$55Ef+DK*%DIVr+HXFY}m#ZDv8T95}0lmA&Xf2(oRVlsut= zuuaA-Zpgyn1N?}^1>n$!kl)Nczgc(tk`~FR&+5&sj*iv6o`l4>)vy}jxVQNRp)7mk z*x`#G7hdm;1rrPuLU2nFJBp%Cdvh$IWC@O(`2BOQ1)Ih$1rrfaeEi}X=xqcz zInji4_+Q!DK8ZvupaNa_s<^#h5uB5vA`o&FMajcs$4&b^e7`xP^-q;_hmP575M#r7l3vMnu=b5Q7`b9wy2mV(1W=C-irNJDEuk|3Gm~+b5P}$ zOhrZ10EjZfH%#pxsEs2VE-fwnI?#2D`9=ne3>X>scQfz{mELv^h~*V!00000NkvXX Hu0mjf9WEnJ literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^T0pGI!3-psy}S2-sA4D25DpHG+YkL80J+HlJ|V9E z|NlRH_|pFU=lAYCwtf3?hD{6*#`f)}fm|R7JfOZ)kBo;EFR)g$zhVaDG}zd16s2gJVj5 zQmTSmW>IQ+eo=O@f^)Fhi#?lqfa+d)x;Tbd^uE3NkgrKWg!RGVwA9F1Gn^u)f3H7v z!0F`EsaxyHmicV&FWi~Op>XTz=aWJ`D?83x7Hv}5we54@F{@Q8Sf)R5yZL&e#=%=_ zHX6F-CMEoi(+UVS40y0iAh7$!nyqs~qGs%!BDYq{c;}n<6+zi{3v+5tm0Vr+?M0Fs zkbd?nc5VGH>sjHy1FX^}E?d6La;c)p+miHkCJkJ*EPYWd7oO!EuNHP#Dsyc9#csKx z#1*y;TSV4-oV_r0>7l)xeQtfFVdQ&MBb@0G~Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB4aY;l$RA>e5SWie)K^UKTyFSr~ zZh{d+wb4=fb1>Iz=~6f8P>R}lLu93chl-*@6cI$O|M1c&!K8vtMOI3>ksy*pgrzP9 zt#-?TYPX%4zIpA)bDOujZ(wIl-h*Yn`QG>E_xon%dv6~?-sM%mtAJO5|EU5v7uaYt zdIauwF~$zTSe?tZi1(H;#?ui0W+W1saLVII1V~%}r>j81(Z(rgk@OS@T>>)KWbvgS z`APtRad0rec@^Y)ATP@TXwX#yh9QdW0Wv)*~5bEZH7uj;?0w@5aX~djwLR%Og;gD|FmD5 z=CFH2wC|lf3B47`Qy}fPmAV$ZQscl#L)})>_wLQf@vj1PXe{Lav_g&|%#_-%fpB8J zd16Myb2BOt*)v=prj!k=5^^7soe~L`5~({3p)+FccBJ62dnnkp*cuyh>#KG~DEyDd zm>`73e}unzFW0J0j0Lxzv`}+F!6GHg+*6l*Cc}xI->5h&LrI$&~SiN*> z709`@gjIKU_X&_|#a#3Fy0f!0@0XdpM0$IBcS7rn^YfyafRzq96@!+$3(m+=uKd!j zWp}8ms^ZU&DZ5UyJe9$qIjxt@tAJMluL8xaz#mBr3kSd`#+U#A002ovPDHLkV1jvn B%~k*a literal 455 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 literal 2788 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 literal 6738 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 diff --git a/BTPanel/static/img/soft_ico/ico-upyun.png b/BTPanel/static/img/soft_ico/ico-upyun.png index a5a30321bd1476b0191fa884c55827b0370bdc78..7af043a9d716d825ca16d20f0d51d0813711f3eb 100644 GIT binary patch literal 2126 zcmV-U2(kBxP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB8xJg7oRA>e5T5E_^RTN(9-Wka; zpEVVdsAVOQQJ6jGAxaOe>>-imICBRqEwuuRBt*)v`XNFY(Od4h&Pa_#mKGNDpoe9N ziehR~C|1gZWm===%sxE>wf5tzv(F{URElZ_6_uhD z>Qs%-xfMrE!Tn{*(FFR3ese(}cuYlaP@e9fPFky_@+%jwBSJWhPI75wrtTq8D;?Enxd#l7y4qxV^`d&twV_lP9L08-Vn@Mn z#nmKH(ljGtK|eIJhN^tiLX$y~qWP!>LM{iFJGnzw-Fqj=&|4*`dxwGQYaxeHHI3tT zi`KmwwlC5*BRUAr{WOqDG>O}Ew`~Cv>>-ZhR!xk>QsDc96ogoV87o2}!?eN$3rf*U zxk(8GytXip(H=UE`&5^tN8M3d0|7_PE#tq#y{25ZZ;CDuf@h%@)~%ERU5@M9Ze3qW zYO=1%J#bq4U~tNU##0ob-6t&$p#Yb&-C*Fhnn9Hd4b=vDtW z*C4W4TyoUSm;|FRfUSV9rUsUK#S&}-aZpFe%nC4i1SMr_=|#RKIZk)acbf{ zaa0?W_l^^Q@!{d96rF7{A?RQyK7zX* z4U6qI9Q0j^qLbZw%q2P|=F$@ZrjMZD`WRV{WUlQ1vVRoLFi}rjNn9MY6dpXFo33(4{SI34UXiE4m|6RLnQ|rBNElgE8$cQz zB7clkG+DO45WT0_%_ER~;G5Ms*iOb`cJ;*?{{ge;{j9#F8<9k^L_48)M65zth_d|` zcug$7OiVW7sF_gyQlc=EB>l^P@pfWw6ODyOSG>R+^;87|4`UgR@C}Gec;ySNT%w*d ztFw><{ip$vJJXv8&s_;h+pshA3Cl!1i8GL+XWVT?9!QGbO)wz3YY+u5$u=wnk5(ZT zRe0MV%%pKpTf({DqKQB|}OEh|D{PwZL3v>kiXZX{GKh8nx-J+LO(M7tF>a)!n3 zMb{!x-EPs$2D@2{^!r(+Os&AL!IR4@PM$t7+tw_=3~BE+YRN{${wpXD9>9h2-%cY|OXQA+X?$q&6285 zaGsK8fM|1^0Z|!mM8f8+w)O$W$2eAhH#^E=(f{NYP%^t*Y#_9^V%}kNj>9-W2R3wv3v)J|d2K78~(H8TH#R zhU-MvVAK8@ne1HXSz-gqEvCi5BtI8pgt9wQQuiXccqK+hHWDL6FYs;Dj8SN(O>kmp zMZp}+!1Q~yA`XCTjyP&93|on9it_#7HA8a?9-zCZj{oqnB{d(xSmd{}RW{;OcMLJ7 z=4h22DXML-cYdl(IpboQi0FMuP3lbKVe{blG{_7{mCMRxT946`BkIHwp9yKW91vA< zB1ezFNMAT|I_7;lrp;bBF$Z#8abh#%*Fz>g>XOGhDm58O9ufH@Ctu#uN)C&@ftSKa z37xM`gU0e0=NSb)&*Bx8WZ)w$nl!u@m|EZuM0g-1k4QWD2ZwQjpzSX^ap4I$Axaf8 zcSkMo^*d@Y>QN^=thkbR0GjMbr;+RWmW&G1Pi~9Jj;I02R8{mOoOz;*9hNGS3%!pT z;ABVgw9mjrt5wwK5*v7B`L*z?C@2F(;#`GYZiA`@`leI~rY%YQWJl_G73SrhBth&< z6MbHj8U^e{emiSLUTLebBi8XQ+J+C__NRximZNkEeHtd}cCsUaV49_Yk$We3AD`u| zwH=XC)F*;TB8USydK?SaOOcAI74qYg;4VFnx8NIDjyqyYx+4wz0iXS#deB1`D}LUg`0lS~Zgzc~`4&?U8~-uMg7 zXw-+pN%^QM>qDlP=6a|s z&_D&SdZ6tRD?x@pv;*A_5fNJn5&=p9xj?qS(*MpoK^}xS7$`2X{J+?8kT}pK$S#D4 z3xTEhmV%Ul*f1{FVvu5>E}#_8(*Hm%&?P`CfNJ0(9E(vD0J*G-{{y`M^cpaKqwTX!9h6$bb!E2 zC|CstyTRZL2;7B$cMt$fLvXUwDs@__ektLq!dLeTP z)5Z+8=uNjd&%8S~|4vi&86NJhe_6kst+_Y*`?I}_Hd|`1uia_B{&Bxv&c~?SE7w+U zT(j!sl%P+sbwA}N)Eli241Xn9Qo2noPe+h#!BoK*O+Ei@47cuY7Su3Z#4+Uz^D;9t zvg3sON1AlU=HC_$g6CVegH-GT#;T96@w7af&GG_hkvNOf3;eMPRPTQw%iCj>fqbDf7YN2}NqT8H{ zdKtc_F1pO7X)9xtny)DM#&`0uzoxbiCiLX`9i0A5Nn%sVc9&_YeJiJJEfNaUYx{Vp z|Maz0RdXEY?ds#x)^U7#OZ42DuM9KOCd@AjeV5qgAMBnIYWSakMJ8#<1UvtWh z>&DFOcKZxF_Ab2Ct-8?1P3W&*nH&eFlaN5v0n5Y8Ka*!(VPHGj_OB&ww}mL%&s5n( z*Q(S*00vwL_x)av!UD@E+L4GpWiFC1KIU?nU6X9927%61RCmamiEE|q#DQ21$OV4QB9 z#Lb4ke2HmCvuE%tx9|RQ+o#y2tmD;&28E+SPZbwDe(|%tvRvRxi^qe2&Xb8uwcPO` zd9%8IO9`~x`CZZ8oOD~GwwJ{q(Ktvt$Z2DCf5&vC?4F+qwqkNTOF0=^y4`FA7p8mE zEs$iC@yL$ixf^r-MOIC0@u4d>N~FJwyngy5zPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB8Oi4sRRA>e5T6=61MHrviJNf|1 z!|?1KZRuUm2ogm}Ao2%^F`^P;z(=AHgU~jjiO3%iqER8n5dIL2kL3E$*!T#j(Zm=M zHBlr1=^sXoF#)>QT6%3MlCz}`+TQK>`}R89-MyRbwmpN!PSVbN?{8k;%zS%{`7Ncf zW?|>m?0~y%65SFK_LSsOmEY!rlYFzZ43S%Ho~#^5t^D%ZFA#9 zx^K>g9|2nUn#R8AsE!0Rp?yFwt!Y29s%4uc3vGJJFusOzmSzUSN*#7@nk=DFgzuhY z))hZYa@d_`6V=h2dncEnEF;l(I~V3+G?mjn8>fWpFW%s0aTuw1uccyOq`x~8c=UcZ zGwmxAXWP({2MeN)1`t5DFOXfPTFEIi|FK$c;)20CgYmN7|JEB)qJltu&n)He;Dqz*n^Ih+L4gyw=ncdvE+I_ctegwJG?rjI2B^ z3KYEKqBnjga?Y{C2=0kZ$)rA1THoq>Ql;f^U3~TV^ZE#M{33C(b{IieUuzQ5sh`62 zEt@3Mcy(D_{BFZAOy$tA+Rg7UVka8u^oejxf7Fi4)egnt57AXA7fs@nMu-6i{65L3 zs&NvJ%cC@c9sOIPCUUDvxy0j4UyGB`GsHNIP+a0gMGHs)JX{rNY+fXlscPcEJebZD zYT6PR+wA-fBSc6%5x#;usQGXj9AuYPH+E&+KBNNN(~5{E1M{wys!Hp@C3&dMGD1jP zs+Ukr<oVIco7`CNjRA11?!$#}*sFTq?iMCAhp6Tea?kgaGBFzucq#^PX+H@m~RtSps-ns?xz>qy>R z^;YP)*-Pu)A8UHGwrf;py311DSAa9-}$hemero%e1z-tt@wa3BvPr<5S?e&2e_!V zq2+!%&fQja1YZ)ixtS$QPa$N4k5RH*;-*qldfPC>XIMtc{0BFT2fb`4JA(DJRVm2% z9}wKn3k%DYJQE-UXU!nQ%7!aMO5hY}&m1=l*w z=eL7k18iRyO{_;aZhNdeX=qvttl}ert#Ez>=g)5V@J=8YG(S$*sE(#GYIW?aJO|Fb zk{iot1RLMHeh>~zs}axnJte`p8_(@rXx*VCzu)@ySjWsRKKMO8SY#4Xqk{W1WEhfEIXQ zBAp;}le(fH3?Icx*`xF~lkFM6v@MrB^cKMg^kgj`$w1C<{szt}wO$*qyE&W}M|k>8p{ch;rrsBwdPjK1U5FZ> ztibe}Kq=v=AX%X)ci~b%aiECc)SCi8@#(jLDnSa67$7Tv#)35hl>xbE3P4(r)q}Nz zlz~+?M>l^5y4SnKM_d+P!=CnKO6a{r~Sa zbzvjW6wU&V$YKTtzQZ8Qcszea3Q$m{#5JNMI6tkVJh3R1!7(L2DOJHOvnaJZzbLy{ z!8zFM#hy()Ky_jubkmrLf{q-kLyVXd3OJB4_Wz&TE6I&)0^KMFHa5&|*>0pB6mG~#${X?18 zaIcB-*?VA-R7-D(;i`;{ADE=mxlHe?@i+vpJ$&HQ#yz1|PjRmhS+O$1qO&ql*Gac= zZZ+eFbxEh!Gja8O`_BW-6zW(B*sABi> z`Se>SHn!M5s%KA$5|G>8$l3BWo!j8|iFdahPMrzoUa?u}v9q%5M6(V5m+i>*a7k}p zk73@5&PoDF}ozG#zmXI8kn|CbmG$fBV_Jg1hf~-8b(&dGX2Bo%4A6cD+CPX7StO zh09~J=Gf%Fwf4Pucjo!^U%oVH3O5D!$TdIPP{+9MYhC5V)<=thamC>2>gTe~DWM4f Dx`1TB diff --git a/BTPanel/static/img/soft_ico/ico-webssh.png b/BTPanel/static/img/soft_ico/ico-webssh.png index 462b3206ff19582513c79e42a5b46287a4349617..d75b3b9f1d011c2caa72cffbe66dd05a0a336655 100644 GIT binary patch literal 1459 zcmV;k1x)&hP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB69Z5t%RA>e5SzTybRUE%JH?1A% zI;Nsd5Rwc9S1A)gG|5V*^Mm;y!klZOF#A#v+JYh?f()O0*h~8)LUjz1=wg`)GP=%M z>)NpwKL!ICmc+@_m%6z&sV2?6{{A5++;cxpZckc`a4#JG=ls7v&R0$pMewOa8y_Dx ztUP05V>Ox;zrk@h6U&oGI1^uIqFZ3oQKh#K;Gxbuvq5q@l8&7uLJKx*dIg9^*6UR% zc6D{_86Fc|uZ^H6+IuH+v%OYRuuv1= zVi@>pAUL;w?rUO>eB9q}RI9VpFC-Tle2oqfz}#5)`4{Hrf#T@IQ$xVoXHHX`7}$px zSl5RhGf=A`<7Ej(vQHqHM}aS(^`PB~mO)FRdHT%TtF5HaFomYW&<76MoNzWaI5=cO zG6ai+jb-7)#Kf9e)?s;=$(Z$-_)0h(|BlCsM~H;e>y$1|Lq55%oeJ^F!jYQM&gFQSE~o6tx;bw1Z~dv|wP(U&6G_&bgoJRpTeNdD4OXNz>?8oKe8tf8hx z$PkX;-?2;!`N4&^X}r_AbilH7aq!wOhwCJe=J9;|Sxi$9vb91i8 zvCv4dQkhY;z~20k^FJ^H1oic`q>gl|~{X0eq@ZEz}MXLmZ!CiG+KLrNdWqPk99PZ_B{@cNNstBB< z<7WbG5a->|x|8oCz)y5te-$`-JEd#-8wlbGaL3WVx6Zezz^x+OxofqE0F0555qcG7 zr}bIzylml{v5aZ>xdW~x6s9^oC~tF9(sXK>f^gH(7Wk%tw1t;&0tt0p2IQk~YKelN zH~F7`EnmZ&y8~uU?CQAtl?#V++_R=gUV#cxR{Dc|V+b__xZn5}sPG z;}!H72`8J1(B)jjBwZ1v^h$E>NAzodt%S3QQA4ku#;;_&JE~`bJA01cRkh_yJK3VC zW&MS~d>|-Y5wjB3@6CKVapXEWsywcHAOMrEm!^uB5^aJ zj_tQyK0N)0+0a(^r32}kelm1(xp+}Aj9$agOPZp+w3PbhBR7Y4XZjzj8tY%W(HS0z zn8LpfhuGLFln#X6SoWSCNRT1X>jQISDLFrjzHq@ZUKuDI2pRJdfQ(ZzGMl>CWgPG# zgWZb!4A92q#_w8cyw#SW0NZH$dxsC}aGJ@GT(XFw_g{{X!plDvGR N002ovPDHLkV1gnlm81Xw literal 659 zcmeAS@N?(olHy`uVBq!ia0vp^20*OA!3-q(BRide6mzkYX9x!e$L)vy4}jeH0X`wF z|NsA&TWY1S#6n@Ih2m0Exuq5gi>+iAn?nR4Tom>abGgM93d=0vf^tBSrB)!7Kyx7C zU!v!H4OLaGG1Ul8UB*-tAK@b9zfWR0GTtFZ+G&C(O ztsDqCI%dvXwQAMw-Mh~K!QH!e-@W_qEyPv;G=Q_fBeIx*fm;ZK886+f`vVk|DRGS` z3C>R|DNig)WpGT%PfAsA%PdMQ&o9a@R&WkBd$DIz4+8_ElBbJfh(+(-sj=lv20U%? zrNMXZi2FUCv4Qb$qv+d=fB*BNA0!#6U8p$sEpEx)6UCFvGP@i)w>Y^ez1?8Vu5swV z2O(D0iQj52b5|VbI>8>Z$nwJ-#uZ#U7-gKx4_ugVc$@j5<0)UxmD%ugK05eftGL2i z?b-6*Z5#G#IV_zPw2Y}JLVG&X&Hc;=W7rD3_jEM42aE0E&bW8UYo zyZbCLb!TtC=KHU9;Jakm&glpKxqEH=zISe`DetX@S=YV>8g6BXsSUB)#_;Cc2k{0g z^`?0@e%+VuJ0KjLK27Tszv?vK_ac5uKTEft)@R^fU>42Wxd0fd44$rjF6*2UngB$$ B|GNMH diff --git a/BTPanel/static/js/bt_upload.js b/BTPanel/static/js/bt_upload.js index 555ed310..2acc8629 100644 --- a/BTPanel/static/js/bt_upload.js +++ b/BTPanel/static/js/bt_upload.js @@ -1,2 +1 @@ -/* ! 宝塔文件上传组件 License https://www.bt.cn By 黄文良 <287962566@qq.com> */ -var bt_upload_file = { f: null, f_total: 0, f_path: null, split_size: 1024 * 1024 * 2, _files: [], _error: 0, _start_time: 0, _t_start_time: 0, collback_to: null, upload_url: '/files?action=upload', _loadT: null, open: function (path, is_exts, ps, collback_to) { bt_upload_file.f_path = path.replace('//', '/'); user_agent = navigator.userAgent.toLowerCase(); var btn_dir = ''; var accept_ext = ''; if (!is_exts) { if (user_agent.indexOf('chrome') !== -1 || user_agent.indexOf('firefox') !== -1) { btn_dir = '' } } else { accept_ext = 'accept="' + is_exts + '"' } var other_ps = ''; if (ps) { other_ps = ' --- ' + ps + '' } else { other_ps = ' Support for breakpoints' } if (collback_to) { bt_upload_file.collback_to = collback_to } bt_upload_file._loadT = layer.open({ type: 1, title: 'Upload files to [' + bt_upload_file.f_path + ']' + other_ps, area: ['550px', '500px'], shadeClose: false, closeBtn: 2, content: '
' + btn_dir + '
    ' }) }, list: function (_files) { bt_upload_file._files = _files; var up_box = $("#up_box"); $("#up_box").html(''); var loadT = layer.msg('Loading file list...', { time: 0, icon: 16, shade: 0.3 }); for (var i = 0; i < _files.length; i += 1) { var f_name = _files[i].name; if (_files[i].webkitRelativePath) { f_name = _files[i].webkitRelativePath } up_box.append('
  • ' + f_name + '' + bt_upload_file.to_size(_files[i].size) + 'Waiting for upload
  • ') } layer.close(loadT) }, to_size: function (a) { var d = [" B", " KB", " MB", " GB", " TB", " PB"]; var e = 1024; for (var b = 0; b < d.length; b += 1) { if (a < e) { return (b === 0 ? a : a.toFixed(2)) + d[b] } a /= e } }, start: function (i) { var len = bt_upload_file._files.length; if (len === 0) { layer.msg('Please select a file!', { icon: 2 }); return false } if (i === 0) { bt_upload_file._t_start_time = new Date() } $("#filesClose,#up,#opt").attr("disabled", "disabled"); var total_time = bt_upload_file.diff_time(bt_upload_file._t_start_time, new Date()); $("#totalProgress").html('

    Uploaded(' + i + '/' + len + '),' + total_time + '

    '); if (len <= i) { $("#totalProgress").html('

    Uploaded completed(' + i + '/' + len + '), ' + total_time + '

    '); bt_upload_file._files = []; $("#filesClose,#up,#opt").removeAttr("disabled"); if (bt_upload_file.collback_to) { bt_upload_file.collback_to(bt_upload_file.f_path) } return false } if (i > 10) { $("#up_box").scrollTop(35 * (i - 10) + 50) } bt_upload_file._start_time = new Date(); bt_upload_file._error = 0; bt_upload_file.f = bt_upload_file._files[i]; bt_upload_file.f_total = Math.ceil(bt_upload_file.f.size / bt_upload_file.split_size); bt_upload_file.upload(0, i) }, upload: function (start, i) { var end = Math.min(bt_upload_file.f.size, start + bt_upload_file.split_size); var len = bt_upload_file._files.length; var f_path = bt_upload_file.f_path; if (bt_upload_file.f.webkitRelativePath) { f_path = bt_upload_file.f_path + '/' + bt_upload_file.f.webkitRelativePath.replace('/' + bt_upload_file.f.name, '') } var form = new FormData(); form.append("f_path", f_path.replace('//', '/')); form.append("f_name", bt_upload_file.f.name); form.append("f_size", bt_upload_file.f.size); form.append("f_start", start); form.append("blob", bt_upload_file.f.slice(start, end));$.ajax({ url: bt_upload_file.upload_url, type: "POST", data: form, async: true, processData: false, contentType: false, success: function (data) { if (typeof (data) === "number") { var progress = parseInt(data / bt_upload_file.f.size * 100); var total_time = bt_upload_file.diff_time(bt_upload_file._t_start_time, new Date()); $("#totalProgress").html('

    Uploaded(' + i + '/' + len + '),' + total_time + '

    '); $("#up_box li em")[i].outerHTML = 'Upload progress:' + progress + '%'; $("#up_box li .filesize")[i].outerHTML = '' + bt_upload_file.to_size(data) + '/' + bt_upload_file.to_size(bt_upload_file.f.size) + ''; $("#up_box li em")[i].focus(); bt_upload_file.upload(data, i) } else { if (data.status) { var f_time = bt_upload_file.diff_time(bt_upload_file._start_time, new Date()); $("#up_box li em")[i].outerHTML = 'Completed(' + f_time + ')'; $("#up_box li .filesize")[i].outerHTML = '' + bt_upload_file.to_size(bt_upload_file.f.size) + '/' + bt_upload_file.to_size(bt_upload_file.f.size) + '' } else { $("#up_box li em")[i].outerHTML = '' + data.msg + '' } bt_upload_file.start(i + 1) } }, error: function (e) { if (bt_upload_file._error > 5) { $("#up_box li em")[i].outerHTML = 'Upload failed'; bt_upload_file.start(i + 1); return } bt_upload_file._error += 1; bt_upload_file.upload(start, i) } }) }, diff_time: function (start_date, end_date) { var diff = end_date.getTime() - start_date.getTime(); var minutes = Math.floor(diff / (60 * 1000)); var leave3 = diff % (60 * 1000); var seconds = (leave3 / 1000).toFixed(2); var result = seconds + 'sec'; if (minutes > 0) { result = minutes + "min" + result } return result } }; \ No newline at end of file +var bt_upload_file={f:null,f_total:0,f_path:null,split_size:1024*1024*2,_files:[],_error:0,_start_time:0,_t_start_time:0,collback_to:null,upload_url:'/files?action=upload',_loadT:null,open:function(path,is_exts,ps,collback_to){bt_upload_file.f_path=path.replace('//','/');user_agent=navigator.userAgent.toLowerCase();var btn_dir='';var accept_ext='';if(!is_exts){if(user_agent.indexOf('chrome')!==-1||user_agent.indexOf('firefox')!==-1){btn_dir=''}}else{accept_ext='accept="'+is_exts+'"'}var other_ps='';if(ps){other_ps=' --- '+ps+''}else{other_ps=' Support for breakpoints'}if(collback_to){bt_upload_file.collback_to=collback_to}bt_upload_file._loadT=layer.open({type:1,title:'Upload files to ['+bt_upload_file.f_path+']'+other_ps,area:['550px','500px'],shadeClose:false,closeBtn:2,content:'
    '+btn_dir+'
    • You can drag the files here.
    '});bt_upload_file._files=[];document.addEventListener("drop",function(e){e.preventDefault()});document.addEventListener("dragleave",function(e){e.preventDefault()});document.addEventListener("dragenter",function(e){e.preventDefault()});document.addEventListener("dragover",function(e){e.preventDefault()});var area=document.getElementById("up_box");area.addEventListener("drop",function(e){e.preventDefault();var fileList=e.dataTransfer.files;if(fileList.length==0){return false}bt_upload_file.list(fileList)})},list:function(_files){$("#totalProgress").html("");$("#tipsUpdataText").remove();if(_files.length==0){return false}var file_data=$.extend(true,{},_files);for(var i=0;i'+f_name+''+bt_upload_file.to_size(fileList[i].size)+"Waiting for upload")}layer.close(loadT)},to_size:function(a){var d=[" B"," KB"," MB"," GB"," TB"," PB"];var e=1024;for(var b=0;bUploaded('+i+'/'+len+'),'+total_time+'

    ');if(len<=i){$("#totalProgress").html('

    Uploaded completed('+i+'/'+len+'), '+total_time+'

    ');bt_upload_file._files=[];$("#filesClose,#up,#opt").removeAttr("disabled");if(bt_upload_file.collback_to){bt_upload_file.collback_to(bt_upload_file.f_path)}return false}if(i>10){$("#up_box").scrollTop(35*(i-10)+50)}bt_upload_file._start_time=new Date();bt_upload_file._error=0;bt_upload_file.f=bt_upload_file._files[i];bt_upload_file.f_total=Math.ceil(bt_upload_file.f.size/bt_upload_file.split_size);bt_upload_file.upload(0,i)},upload:function(start,i){var end=Math.min(bt_upload_file.f.size,start+bt_upload_file.split_size);var len=bt_upload_file._files.length;var f_path=bt_upload_file.f_path;if(bt_upload_file.f.webkitRelativePath){f_path=bt_upload_file.f_path+'/'+bt_upload_file.f.webkitRelativePath.replace('/'+bt_upload_file.f.name,'')}var form=new FormData();form.append("f_path",f_path.replace('//','/'));form.append("f_name",bt_upload_file.f.name);form.append("f_size",bt_upload_file.f.size);form.append("f_start",start);form.append("blob",bt_upload_file.f.slice(start,end));$.ajax({url:bt_upload_file.upload_url,type:"POST",data:form,async:true,processData:false,contentType:false,success:function(data){if(typeof(data)==="number"){var progress=parseInt(data/bt_upload_file.f.size*100);var total_time=bt_upload_file.diff_time(bt_upload_file._t_start_time,new Date());$("#totalProgress").html('

    Uploaded('+i+'/'+len+'),'+total_time+'

    ');$("#up_box li em")[i].outerHTML='Upload progress:'+progress+'%';$("#up_box li .filesize")[i].outerHTML=''+bt_upload_file.to_size(data)+'/'+bt_upload_file.to_size(bt_upload_file.f.size)+'';$("#up_box li em")[i].focus();bt_upload_file.upload(data,i)}else{if(data.status){var f_time=bt_upload_file.diff_time(bt_upload_file._start_time,new Date());$("#up_box li em")[i].outerHTML='Completed('+f_time+')';$("#up_box li .filesize")[i].outerHTML=''+bt_upload_file.to_size(bt_upload_file.f.size)+'/'+bt_upload_file.to_size(bt_upload_file.f.size)+''}else{$("#up_box li em")[i].outerHTML=''+data.msg+''}bt_upload_file.start(i+1)}},error:function(e){if(bt_upload_file._error>5){$("#up_box li em")[i].outerHTML='Upload failed';bt_upload_file.start(i+1);return}bt_upload_file._error+=1;bt_upload_file.upload(start,i)}})},diff_time:function(start_date,end_date){var diff=end_date.getTime()-start_date.getTime();var minutes=Math.floor(diff/(60*1000));var leave3=diff%(60*1000);var seconds=(leave3/1000).toFixed(2);var result=seconds+'sec';if(minutes>0){result=minutes+"min"+result}return result}}; \ No newline at end of file diff --git a/BTPanel/static/js/config.js b/BTPanel/static/js/config.js index 9c4ff571..065ee5e3 100644 --- a/BTPanel/static/js/config.js +++ b/BTPanel/static/js/config.js @@ -233,8 +233,16 @@ $('.open_two_verify_view').click(function(){ check_two_step(function(res){ $('#panel_verification').prop('checked',res.status); }); + get_three_channel(function(res){ + $('#channel_auth').val(!res.user_mail.user_name && !res.dingding.dingding ? 'Email is not set':(res.user_mail.user_name? 'Email is set':(res.dingding.dingding? 'dingding is set': ''))) + }); })() +function get_three_channel(callback){ + $.post('/config?action=get_settings',function(res){ + if(callback) callback(res); + }); +} function check_two_step(callback){ $.post('/config?action=check_two_step',function(res){ @@ -780,7 +788,7 @@ $(function () { function bt_init() { var btName = $("input[name='btusername']").val(); - console.log(btName); + //console.log(btName); if (!btName) { $('.wxapp_p .inputtxt').val(lan.config.no_bind_bt_account); $('.wxapp_p .modify').attr("onclick", ""); @@ -938,12 +946,285 @@ function modify_basic_auth() { } }); } +function open_three_channel_auth(){ + get_channel_settings(function(rdata){ + var isOpen = rdata.dingding.info.msg.isAtAll == 'True' ? 'checked': ''; + var isDing = rdata.dingding.info.msg == 'No information'? '': rdata.dingding.info.msg.dingding_url; + layer.open({ + type: 1, + area: "600px", + title: "Setting up a message channel", + closeBtn: 2, + shift: 5, + shadeClose: false, + content: '
    \ +
    \ +
    \ +

    Email

    \ +
    \ +
    \ +
    \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ +
    \ +
    EmailOperating
    \ +
    \ +
    \ +
    \ +
    \ +
    \ + \ +
    \ +
    \ +
    \ +
    ' + }) + $(".bt-w-menu p").click(function () { + var index = $(this).index(); + $(this).addClass('bgw').siblings().removeClass('bgw'); + $('.conter_box').eq(index).show().siblings().hide(); + }); + get_receive_list(); + }) +} +function sender_info_edit(){ + var loadT = layer.msg('Getting profile, please wait...', { icon: 16, time: 0, shade: [0.3, '#000'] }); + $.post('/config?action=get_settings',function(rdata){ + layer.close(loadT); + var qq_mail = rdata.user_mail.info.msg.qq_mail == undefined ? '' : rdata.user_mail.info.msg.qq_mail, + qq_stmp_pwd = rdata.user_mail.info.msg.qq_stmp_pwd == undefined? '' : rdata.user_mail.info.msg.qq_stmp_pwd, + hosts = rdata.user_mail.info.msg.hosts == undefined? '' : rdata.user_mail.info.msg.hosts, + port = rdata.user_mail.info.msg.port == undefined? '' : rdata.user_mail.info.msg.port; + layer.open({ + type: 1, + area: "485px", + title: "Set sender email information", + closeBtn: 2, + shift: 5, + shadeClose: false, + content: '
    \ +
    \ + Sender email\ +
    \ + \ +
    \ +
    \ +
    \ + smtp password\ +
    \ + \ +
    \ +
    \ +
    \ + smtp server\ +
    \ + \ +
    \ +
    \ +
    \ + smtp port\ +
    \ + \ + \ +
    \ +
    \ +
      \ +
    • 465 port is recommended, the protocol is SSL/TLS
    • \ +
    • Port 25 is SMTP protocol, port 587 is STARTTLS protocol
    • \ +
    \ +
    \ + \ +
    \ +
    ', + success:function(layers,index){ + var _option = ''; + if(select_port(port)){ + if(port == '465' || port == ''){ + _option = '' + }else if(port == '25'){ + _option = '' + }else{ + _option = '' + } + }else{ + _option = '' + } + $("#port_select").html(_option) + $("#port_select").change(function(e){ + if(e.target.value == 'other'){ + $("#port_select").css("width","100px"); + $('input[name=channel_email_port]').css("display","inline-block"); + }else{ + $("#port_select").css("width","300px"); + $('input[name=channel_email_port]').css("display","none"); + } + }) + $(".SetChannelEmail").click(function(){ + var _email = $('input[name=channel_email_value]').val(); + var _passW = $('input[name=channel_email_password]').val(); + var _server = $('input[name=channel_email_server]').val(); + if($('#port_select').val() == 'other'){ + _port = $('input[name=channel_email_port]').val(); + }else{ + _port = $('#port_select').val() + } + if(_email == ''){ + return layer.msg('Email address cannot be empty!',{icon:2}); + }else if(_passW == ''){ + return layer.msg('STMP password cannot be empty!',{icon:2}); + }else if(_server == ''){ + return layer.msg('STMP server address cannot be empty!',{icon:2}); + }else if(_port == ''){ + return layer.msg('STMP server port cannot be empty!',{icon:2}); + } + var loadT = layer.msg('Please wait while generating mailbox channel...', { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.close(index) + $.post('/config?action=user_mail_send',{email:_email,stmp_pwd:_passW,hosts:_server,port:_port},function(rdata){ + layer.close(loadT); + layer.msg(rdata.msg,{icon:rdata.status?1:2}) + }) + }) + $(".smtp_closeBtn").click(function(){ + layer.close(index) + }) + } + }) + }); +} +function select_port(port){ + switch(port){ + case '25': + return true; + case '465': + return true; + case '587': + return true; + case '': + return true; + default: + return false + } +} +function get_channel_settings(callback){ + var loadT = layer.msg('Getting profile, please wait...', { icon: 16, time: 0, shade: [0.3, '#000'] }); + $.post('/config?action=get_settings',function(rdata){ + layer.close(loadT); + if (callback) callback(rdata); + }) +} +function add_receive_info(){ + layer.open({ + type: 1, + area: "400px", + title: "Add recipient email", + closeBtn: 2, + shift: 5, + shadeClose: false, + content: '
    \ +
    \ + Recipient mailbox\ +
    \ + \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    ', + success:function(layers,index){ + $(".CreaterReceive").click(function(){ + var _receive = $('input[name=creater_email_value]').val(),_that = this; + if(_receive != ''){ + var loadT = layer.msg('Please wait while creating recipient list...', { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.close(index) + $.post('/config?action=add_mail_address',{email:_receive},function(rdata){ + layer.close(loadT); + // 刷新收件列表 + get_receive_list(); + layer.msg(rdata.msg,{icon:rdata.status?1:2}); + }) + }else{ + layer.msg('Recipient mailbox cannot be empty!',{icon:2}); + } + }) + + $(".smtp_closeBtn").click(function(){ + layer.close(index) + }) + } + }) +} +function get_receive_list(){ + $.post('/config?action=get_settings',function(rdata){ + var _html = '',_list = rdata.user_mail.mail_list; + if(_list.length > 0){ + for(var i= 0; i<_list.length;i++){ + _html += '\ + '+ _list[i] +'\ +
    Del\ + ' + } + }else{ + _html = 'No Data' + } + $('#receive_table').html(_html); + }) + +} + +function del_email(mail){ + var loadT = layer.msg('Deleting ['+ mail +'], please wait...', { icon: 16, time: 0, shade: [0.3, '#000'] }),_this = this; + $.post('/config?action=del_mail_list',{email:mail},function(rdata){ + layer.close(loadT); + layer.msg(rdata.msg,{icon:rdata.status?1:2}) + _this.get_receive_list() + }) +} +// 设置钉钉 +function SetChannelDing(){ + var _url = $('textarea[name=channel_dingding_value]').val(); + var _all = $('#panel_alert_all').prop("checked"); + if(_url != ''){ + var loadT = layer.msg('Please wait while generating dingding channel...', { icon: 16, time: 0, shade: [0.3, '#000'] }); + $.post('/config?action=set_dingding',{url:_url,atall:_all == true? 'True':'False'},function(rdata){ + layer.close(loadT); + layer.msg(rdata.msg,{icon:rdata.status?1:2}) + }) + }else{ + layer.msg('Please enter the dingding URL',{icon:2}) + } +} + + function show_basic_auth(rdata) { layer.open({ type: 1, area: "500px", - title: "配置BasicAuth认证", + title: "Configure BasicAuth authentication", closeBtn: 2, shift: 5, shadeClose: false, diff --git a/BTPanel/static/js/crontab.js b/BTPanel/static/js/crontab.js index be587558..06b130b4 100644 --- a/BTPanel/static/js/crontab.js +++ b/BTPanel/static/js/crontab.js @@ -135,6 +135,9 @@ function edit_task_info(id){ if(obj.from['backupTo'] == obj['backupsArray'][i]['value']) backupsName = obj['backupsArray'][i]['name']; backupsDom += '
  • '+ obj['backupsArray'][i]['name'] +'
  • '; } + if(obj.from.sType == 'webshell'){ + edit_message_channel(obj.from.urladdress) + } callback(); }); }else{ @@ -146,7 +149,7 @@ function edit_task_info(id){ layer.open({ type:1, title:lan.crontab.crontab_edit+'-['+rdata.name+']', - area: ['850px','450px'], + area: ['866px','500px'], skin:'layer-create-content', shadeClose:false, closeBtn:2, @@ -214,8 +217,8 @@ function edit_task_info(id){
    \
    \
    \ - '+lan.crontab.shell_content+'\ -
    \ + '+ (obj.from.sType == "toShell" ?'Script content':'Exclusion rule')+'\ +
    \
    \
    \ '+lan.crontab.tips+'\ @@ -228,6 +231,23 @@ function edit_task_info(id){
    \
    '+lan.crontab.edit_save+'
    \
    \ +
    \ +
    \ + Scan site\ + \ +

    \ +

    Message channel
    \ + \ +

    \ +
    \ +
    '+lan.crontab.edit_save+'
    \ +
    \
    ' }); setTimeout(function(){ @@ -237,6 +257,8 @@ function edit_task_info(id){ $('.site_list').hide(); }else if( obj.from.sType == 'toUrl'){ $('.site_list').hide(); + }else if( obj.from.sType == 'webshell'){ + $('.site_list').hide(); }else{ $('.site_list').show(); } @@ -361,6 +383,8 @@ function edit_task_info(id){ }else if(obj.from.type == 'minute-n'){ obj.from.where1 = obj.from.minute; obj.from.minute = ''; + }else if(obj.from.sType == 'webshell'){ + obj.from.urladdress = $(".message_start input:checked").val() } layer.msg(lan.crontab.saving,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab?action=modify_crond',obj.from,function(rdata){ @@ -373,13 +397,40 @@ function edit_task_info(id){ }); }); +} +// 修改木马查杀 消息通道 +function edit_message_channel(type){ + $.post('/config?action=get_settings',function(res){ + var tMess = ""; + if(res.user_mail.user_name && !res.dingding.dingding){ + tMess = '
    \ + \ + \ +
    ' + }else if(!res.user_mail.user_name && res.dingding.dingding){ + tMess = '
    \ + \ + \ +
    ' + }else{ + tMess ='
    \ + \ + \ +
    \ +
    \ + \ + \ +
    ' + } + $(".message_start").html(tMess); + }) + } // 设置计划任务状态 function set_task_status(id,status){ var confirm = layer.confirm(status == '0'?lan.crontab.crontab_stop_will:lan.crontab.disable_change_crontab_start, {title:lan.crontab.tips,icon:3,closeBtn:2},function(index) { if (index > 0) { - var loadT = layer.msg(lan.crontab.setting_status,{icon:16,time:0,shade: [0.3, '#000']}); $.post('/crontab?action=set_cron_status',{id:id},function(rdata){ layer.closeAll(); layer.close(confirm); @@ -442,6 +493,25 @@ function allDeleteCron(){ syncDeleteCron(dataList,0,''); }); } +//批量执行和批量清除日志 +function allCron(type){ + var message = type=='log' ? 'Confirm to delete the logs of the selected task?' : 'Confirm to execute the selected task?', + tit = type=='log' ? 'Confirm Delete' : 'Confirm Execute', + url = type=='log' ? '/crontab?action=DelLogs' : '/crontab?action=StartTask', + confirm = layer.confirm(message, {title:tit,icon:3,closeBtn:2},function() { + var checkList = $("input[name=id]"); + for(var i=0;i -1){ data = data.replace('&sName=&','&sName='+ encodeURIComponent($('#inputPath').val()) +'&') + }else if(data.indexOf('sType=webshell') > -1){ + data = $("#set-Config").serialize() + '&urladdress=' + _radiox; + data = data.replace('&sName=&','&sName='+ encodeURIComponent($('#filePath').val()) +'&') } $.post('/crontab?action=AddCrontab',data,function(rdata){ @@ -735,6 +808,9 @@ $(".dropdown ul li a").click(function(){ toUrl(); $(".controls").html(lan.crontab.url_address); break; + case 'webshell': + webShell(); + break; } }) @@ -767,6 +843,7 @@ function toBackup(type){ if(type != 'path'){ var sOpt = "",sOptBody = ''; if(rdata.data.length == 0){ + $(".planname input[name='name']").val(''); layer.msg(lan.public.list_empty,{icon:2}) return } @@ -821,9 +898,9 @@ function toBackup(type){
    '; if (sType == 'sites' && sMsg !== lan.crontab.backup_log) { sBody += '

    \ -

    '+lan.crontab.exclusion_rule+'
    \ +
    '+lan.crontab.exclusion_rule+'
    \ \

    '; } @@ -837,11 +914,24 @@ function toBackup(type){ if(type == "path"){ $('.planname input').attr('readonly',false).removeAttr('style'); } + $("#exclude").focus(function(){ + var _this = $(this), tips = _this.attr('placeholder'), + tipss = ''+lan.crontab.exclusion_rule_tips+'
    data/config.php
    static/upload
    *.log
    '; + _this.attr('placeholder', ''); + var loadT = layer.tips(tipss, _this, { + tips: [1, '#20a53a'], + time: 0, + area: _this[0].clientWidth + 'px' + }); + $(this).one('blur', function () { + $(this).attr('placeholder', tips); + layer.close(loadT); + }); + }); }); } - //下拉菜单名称 function getselectname(){ $(".dropdown ul li a").click(function(){ @@ -910,13 +1000,116 @@ function toFile(){ //从脚本 function toShell(){ - var tBody = ""; + var shell_body = ''; + var shell_name = ''; + if($("b[val='toShell']").text() === 'synchronised time'){ + shell_name = 'Periodically synchronize server time'; + shell_body = 'echo "|-Trying to synchronize time from 0.pool.bt.cn..";\n\ +ntpdate -u 0.pool.bt.cn\n\ +if [ $? = 1 ];then\n\ + echo "|-Trying to synchronize time from 1.pool.bt.cn..";\n\ + ntpdate -u 1.pool.bt.cn\n\ +fi\n\ +if [ $? = 1 ];then\n\ + echo "|-Trying to sync time from 0.asia.pool.ntp.org..";\n\ + ntpdate -u 0.asia.pool.ntp.org\n\ +fi\n\ +if [ $? = 1 ];then\n\ + echo "|-Trying to sync time from www.bt.cn..";\n\ + getBtTime=$(curl -sS --connect-timeout 3 -m 60 http://www.bt.cn/api/index/get_time)\n\ + if [ "${getBtTime}" ];then \n\ + date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")"\n\ + fi\n\ +fi\n\ +echo "|-Trying to write current system time to hardware..";\n\ +hwclock -w\n\ +date\n\ +echo "|-Time synchronization completed!";' + } + var tBody = ""; $("#implement").html(tBody); - $(".planname input[name='name']").removeAttr('readonly style').val(""); + $(".planname input[name='name']").removeAttr('readonly style').val(shell_name); } function toPath() { +} +//木马查杀 +function webShell(){ + var sOpt = "",sOptBody = ''; + $.post('/crontab?action=GetDataList&type=sites',function(rdata){ + $(".planname input[name='name']").attr('readonly','true').css({"background-color":"#f6f6f6","color":"#666"}); + if(rdata.data.length == 0){ + layer.msg(lan.public.list_empty,{icon:2}) + return + } + for(var i=0;i'+rdata.data[i].name+'['+rdata.data[i].ps+']'; + } + sOptBody ='' + setCookie('default_dir_path','/www/wwwroot/'); + setCookie('path_dir_change','/www/wwwroot/'); + setInterval(function(){ + if(getCookie('path_dir_change') != getCookie('default_dir_path')){ + var path_dir_change = getCookie('path_dir_change') + $(".planname input").val('Trojan kill ['+getCookie('path_dir_change')+']'); + setCookie('default_dir_path',path_dir_change); + } + $(".check_alert").click(function(){ + _radiox = $(this).find("input[name=alert]").val(); + }) + },500); + sOptBody += '

    \ +

    Message channel
    \ + \ +

    '; + $("#implement").html(sOptBody); + message_channel_start(); + $("#implement").siblings(".controls").html("Scan site"); + getselectname(); + $(".dropdown ul li a").click(function(){ + var sName = $("#sName").attr("val"); + if(!sName) return; + $(".planname input[name='name']").val("Trojan kill "+'['+sName+']'); + }); + }) +} +function message_channel_start(){ + $.post('/config?action=get_settings',function(res){ + var wBody = ""; + if(!res.user_mail.user_name && !res.dingding.dingding){ + wBody = 'No message channel is set, please go to panel settings to add a message channel configuration?'; + $(".plan-submit").css({"pointer-events":"none","background-color":"#e6e6e6","color":"#333"}); + }else if(res.user_mail.user_name && !res.dingding.dingding){ + wBody = '
    \ + \ + \ +
    ' + }else if(!res.user_mail.user_name && res.dingding.dingding){ + wBody = '
    \ + \ + \ +
    ' + }else{ + wBody ='
    \ + \ + \ +
    \ +
    \ + \ + \ +
    ' + } + $(".message_start").html(wBody); + }) } //从url function toUrl(){ diff --git a/BTPanel/static/js/database.js b/BTPanel/static/js/database.js index 39acc29f..714c60a3 100644 --- a/BTPanel/static/js/database.js +++ b/BTPanel/static/js/database.js @@ -100,12 +100,12 @@ var database = { layer.open({ type: 1, title: lan.database.mysql_tools_box+"【" + db_name + "】", - area: ['780px', '580px'], + area: ['824px', '580px'], closeBtn: 2, shadeClose: false, - content: '
    \ + content: '
    \ \ @@ -118,7 +118,7 @@ var database = { '+lan.database.tb_name+'\ '+lan.database.engine+'\ '+lan.database.character+'\ - '+lan.database.row_num+'\ + '+lan.database.row_num+'\ '+lan.database.size+'\ '+lan.database.operation+'\ \ @@ -324,6 +324,7 @@ var database = { $('#btn_data_backup').unbind('click').click(function () { bt.database.backup_data(id, dataname, function (rdata) { if (rdata.status) database.database_detail(id, dataname); + database.get_list(); }) }) }, 100) diff --git a/BTPanel/static/js/files.js b/BTPanel/static/js/files.js index 13eed165..2ff41371 100644 --- a/BTPanel/static/js/files.js +++ b/BTPanel/static/js/files.js @@ -2,15 +2,19 @@ function IsDiskWidth() { var comlistWidth = $("#comlist").width(); var bodyWidth = $(".file-box").width(); if (comlistWidth + 530 > bodyWidth) { - $("#comlist").css({ "width": bodyWidth - 530 + "px", "height": "34px", "overflow": "auto" }); - } - else { + $("#comlist").css({ + "width": bodyWidth - 530 + "px", + "height": "34px", + "overflow": "auto" + }); + } else { $("#comlist").removeAttr("style"); } } + function Recycle_bin(type) { $.post('/files?action=Get_Recycle_bin', '', function (rdata) { - var body = '' + var body = ''; switch (type) { case 1: for (var i = 0; i < rdata.dirs.length; i++) { @@ -19,10 +23,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname + '\ - ' + shortpath + '\ - '+ ToSize(rdata.dirs[i].size) + '\ - '+ getLocalTime(rdata.dirs[i].time) + '\ + ' + shortwebname + '\ + ' + shortpath + '\ + ' + ToSize(rdata.dirs[i].size) + '\ + ' + getLocalTime(rdata.dirs[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -36,10 +40,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname.replace('BTDB_', '') + '\ - mysql://' + shortpath.replace('BTDB_', '') + '\ + ' + shortwebname.replace('BTDB_', '') + '\ + mysql://' + shortpath.replace('BTDB_', '') + '\ -\ - '+ getLocalTime(rdata.files[i].time) + '\ + ' + getLocalTime(rdata.files[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -53,10 +57,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname + '\ - ' + shortpath + '\ - '+ ToSize(rdata.files[i].size) + '\ - '+ getLocalTime(rdata.files[i].time) + '\ + ' + shortwebname + '\ + ' + shortpath + '\ + ' + ToSize(rdata.files[i].size) + '\ + ' + getLocalTime(rdata.files[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -73,10 +77,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname + '\ - ' + shortpath + '\ - '+ ToSize(rdata.dirs[i].size) + '\ - '+ getLocalTime(rdata.dirs[i].time) + '\ + ' + shortwebname + '\ + ' + shortpath + '\ + ' + ToSize(rdata.dirs[i].size) + '\ + ' + getLocalTime(rdata.dirs[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -94,10 +98,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname + '\ - ' + shortpath + '\ - '+ ToSize(rdata.files[i].size) + '\ - '+ getLocalTime(rdata.files[i].time) + '\ + ' + shortwebname + '\ + ' + shortpath + '\ + ' + ToSize(rdata.files[i].size) + '\ + ' + getLocalTime(rdata.files[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -115,10 +119,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname + '\ - ' + shortpath + '\ - '+ ToSize(rdata.files[i].size) + '\ - '+ getLocalTime(rdata.files[i].time) + '\ + ' + shortwebname + '\ + ' + shortpath + '\ + ' + ToSize(rdata.files[i].size) + '\ + ' + getLocalTime(rdata.files[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -138,10 +142,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname + '\ - ' + shortpath + '\ - '+ ToSize(rdata.files[i].size) + '\ - '+ getLocalTime(rdata.files[i].time) + '\ + ' + shortwebname + '\ + ' + shortpath + '\ + ' + ToSize(rdata.files[i].size) + '\ + ' + getLocalTime(rdata.files[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -159,10 +163,10 @@ function Recycle_bin(type) { if (shortwebname.length > 20) shortwebname = shortwebname.substring(0, 20) + "..."; if (shortpath.length > 20) shortpath = shortpath.substring(0, 20) + "..."; body += '\ - ' + shortwebname.replace('BTDB_', '') + '\ - mysql://' + shortpath.replace('BTDB_', '') + '\ + ' + shortwebname.replace('BTDB_', '') + '\ + mysql://' + shortpath.replace('BTDB_', '') + '\ -\ - '+ getLocalTime(rdata.files[i].time) + '\ + ' + getLocalTime(rdata.files[i].time) + '\ \ ' + lan.files.recycle_bin_re + '\ | ' + lan.files.recycle_bin_del + '\ @@ -178,42 +182,42 @@ function Recycle_bin(type) { var tablehtml = '
    \
    \ - '+ lan.files.recycle_bin_on + '\ + ' + lan.files.recycle_bin_on + '\
    \ - \ + \ \
    \ - '+ lan.files.recycle_bin_on_db + '\ + ' + lan.files.recycle_bin_on_db + '\
    \ - \ + \ \
    \
    \ - '+ lan.files.recycle_bin_ps + '\ - \ + ' + lan.files.recycle_bin_ps + '\ + \
    \
    \
    \ -

    '+ lan.files.recycle_bin_type1 + '

    \ -

    '+ lan.files.recycle_bin_type2 + '

    \ -

    '+ lan.files.recycle_bin_type3 + '

    \ -

    '+ lan.files.recycle_bin_type4 + '

    \ -

    '+ lan.files.recycle_bin_type5 + '

    \ -

    '+ lan.files.recycle_bin_type6 + '

    \ +

    ' + lan.files.recycle_bin_type1 + '

    \ +

    ' + lan.files.recycle_bin_type2 + '

    \ +

    ' + lan.files.recycle_bin_type3 + '

    \ +

    ' + lan.files.recycle_bin_type4 + '

    \ +

    ' + lan.files.recycle_bin_type5 + '

    \ +

    ' + lan.files.recycle_bin_type6 + '

    \
    \
    \
    \ \ \ \ - \ - \ - \ - \ - \ + \ + \ + \ + \ + \ \ \ - '+ body + '\ + ' + body + '\
    '+ lan.files.recycle_bin_th1 + ''+ lan.files.recycle_bin_th2 + ''+ lan.files.recycle_bin_th3 + ''+ lan.files.recycle_bin_th4 + ''+ lan.files.recycle_bin_th5 + '' + lan.files.recycle_bin_th1 + '' + lan.files.recycle_bin_th2 + '' + lan.files.recycle_bin_th3 + '' + lan.files.recycle_bin_th4 + '' + lan.files.recycle_bin_th5 + '
    '; if (type == "open") { layer.open({ @@ -237,12 +241,14 @@ function Recycle_bin(type) { }) }); } + function getFileName(name) { var text = name.split("."); var n = text.length - 1; text = text[n]; return text; } + function ReisImage(fileName) { var exts = ['jpg', 'jpeg', 'png', 'bmp', 'gif', 'tiff', 'ico']; for (var i = 0; i < exts.length; i++) { @@ -250,54 +256,102 @@ function ReisImage(fileName) { } return false; } + function ReRecycleBin(path, obj) { - layer.confirm(lan.files.recycle_bin_re_msg, { title: lan.files.recycle_bin_re_title, closeBtn: 2, icon: 3 }, function () { - var loadT = layer.msg(lan.files.recycle_bin_re_the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.confirm(lan.files.recycle_bin_re_msg, { + title: lan.files.recycle_bin_re_title, + closeBtn: 2, + icon: 3 + }, function () { + var loadT = layer.msg(lan.files.recycle_bin_re_the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); $.post('/files?action=Re_Recycle_bin', 'path=' + encodeURIComponent(path), function (rdata) { layer.close(loadT); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 5 + }); $(obj).parents('tr').remove(); }); }); } + function DelRecycleBin(path, obj) { - layer.confirm(lan.files.recycle_bin_del_msg, { title: lan.files.recycle_bin_del_title, closeBtn: 2, icon: 3 }, function () { - var loadT = layer.msg(lan.files.recycle_bin_del_the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.confirm(lan.files.recycle_bin_del_msg, { + title: lan.files.recycle_bin_del_title, + closeBtn: 2, + icon: 3 + }, function () { + var loadT = layer.msg(lan.files.recycle_bin_del_the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); $.post('/files?action=Del_Recycle_bin', 'path=' + encodeURIComponent(path), function (rdata) { layer.close(loadT); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 5 + }); $(obj).parents('tr').remove(); }); }); } + function CloseRecycleBin() { - layer.confirm(lan.files.recycle_bin_close_msg, { title: lan.files.recycle_bin_close, closeBtn: 2, icon: 3 }, function () { - var loadT = layer.msg("
    " + lan.files.recycle_bin_close_the + "
    ", { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.confirm(lan.files.recycle_bin_close_msg, { + title: lan.files.recycle_bin_close, + closeBtn: 2, + icon: 3 + }, function () { + var loadT = layer.msg("
    " + lan.files.recycle_bin_close_the + "
    ", { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); setTimeout(function () { getSpeed('.myspeed'); }, 1000); $.post('/files?action=Close_Recycle_bin', '', function (rdata) { layer.close(loadT); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 5 + }); $("#RecycleBody").html(''); }); }); } + function Set_Recycle_bin(db) { - var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + var loadT = layer.msg(lan.public.the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); var data = {} if (db == 1) { - data = { db: db }; + data = { + db: db + }; } $.post('/files?action=Recycle_bin', data, function (rdata) { layer.close(loadT); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 5 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 5 + }); }); } function get_path_size(path) { - var loadT = layer.msg(lan.files.calc_size, { icon: 16, time: 0, shade: [0.3, '#000'] }); - $.post('/files?action=get_path_size', { path: path }, function (rdata) { + var loadT = layer.msg(lan.files.calc_size, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); + $.post('/files?action=get_path_size', { + path: path + }, function (rdata) { layer.close(loadT); var myclass = '.' + rdata.path.replace(/[^\w]/g, '-'); console.log(myclass) @@ -334,6 +388,11 @@ function GetFiles(Path, sort) { } } + var old_scroll_top = 0; + if (getCookie('Path') === Path) { + old_scroll_top = $(".oldTable").scrollTop(); + } + var sorted = ''; var reverse = ''; if (!sort) { @@ -362,13 +421,19 @@ function GetFiles(Path, sort) { if (searchV) { - var loadT = layer.msg(lan.files.search_now, { icon: 16, time: 0, shade: [0.3, '#000']}); + var loadT = layer.msg(lan.files.search_now, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); } var totalSize = 0; $.post('/files?action=GetDir&tojs=GetFiles&p=' + p + '&showRow=' + showRow + search, data, function (rdata) { if (searchV) layer.close(loadT); if (rdata.status === false) { - layer.msg(rdata.msg, { icon: 2 }); + layer.msg(rdata.msg, { + icon: 2 + }); return; } @@ -381,7 +446,7 @@ function GetFiles(Path, sort) { } $("#filePage").html(rdata.PAGE); - $("#filePage div").append(""+lan.files.per_page+""+lan.files.piece+""); + $("#filePage div").append("" + lan.files.per_page + "" + lan.files.piece + ""); $("#filePage .Pcount").css("left", "16px"); if (rdata.DIR == null) rdata.DIR = []; for (var i = 0; i < rdata.DIR.length; i++) { @@ -404,30 +469,30 @@ function GetFiles(Path, sort) { fileMsg = '' + fileMsg + ''; } var timetext = '--'; + //" + lan.files.dir_menu_webshell + " |---在下一行的 if (getCookie("rank") == "a") { $("#set_list").addClass("active"); $("#set_icon").removeClass("active"); - Body += "\ - \ + Body += "\ + \ " + cnametext + fileMsg + "\ - "+lan.files.calc_click+"\ - "+ getLocalTime(fmp[2]) + "\ - "+ fmp[3] + "\ - "+ fmp[4] + "\ + " + lan.files.calc_click + "\ + " + getLocalTime(fmp[2]) + "\ + " + fmp[3] + "\ + " + fmp[4] + "\ \ " + lan.files.file_menu_copy + " | \ " + lan.files.file_menu_mv + " | \ " + lan.files.file_menu_rename + " | \ - " + lan.files.file_menu_auth + " | \ + " + lan.files.file_menu_auth + " | \ " + lan.files.file_menu_zip + " | \ " + lan.files.file_menu_del + "\ "; - } - else { + } else { $("#set_icon").addClass("active"); $("#set_list").removeClass("active"); Body += ""; @@ -439,6 +504,7 @@ function GetFiles(Path, sort) { var displayZip = isZip(fmp[0]); var bodyZip = ''; var download = ''; + var file_webshell = ''; var cnametext = fmp[0] + fmp[5]; fmp[0] = fmp[0].replace(/'/, "\\'"); if (cnametext.length > 48) { @@ -449,6 +515,9 @@ function GetFiles(Path, sort) { cnametext = cnametext.substring(0, 16) + '...' } } + if (isPhp(fmp[0])) { + file_webshell = "" + lan.files.file_menu_webshell + " | "; + } if (displayZip != -1) { bodyZip = "" + lan.files.file_menu_unzip + " | "; } @@ -483,26 +552,25 @@ function GetFiles(Path, sort) { if (fileMsg != '') { fileMsg = '' + fileMsg + ''; } - Body += "\ - " + cnametext + fileMsg + "\ + Body += "\ + " + cnametext + fileMsg + "\ " + (ToSize(fmp[1])) + "\ " + ((fmp[2].length > 11) ? fmp[2] : getLocalTime(fmp[2])) + "\ - "+ fmp[3] + "\ - "+ fmp[4] + "\ + " + fmp[3] + "\ + " + fmp[4] + "\ \ " + lan.files.file_menu_copy + " | \ " + lan.files.file_menu_mv + " | \ " + lan.files.file_menu_rename + " | \ - " + lan.files.file_menu_auth + " | \ + " + lan.files.file_menu_auth + " | \ " + lan.files.file_menu_zip + " | \ - "+ bodyZip + download + "\ + " + bodyZip + download + "\ " + lan.files.file_menu_del + "\ "; - } - else { + } else { Body += ""; } @@ -515,12 +583,12 @@ function GetFiles(Path, sort) { \ \ \ - ' + lan.files.file_name + ((data['sort'] === 'name' || !data['sort']) ? sort_icon : '') + '\ - ' + lan.files.file_size + ((data['sort'] === 'size') ? sort_icon : '') + '\ - ' + lan.files.file_etime + ((data['sort'] === 'mtime') ? sort_icon : '') + '\ - ' + lan.files.file_auth + ((data['sort'] === 'accept') ? sort_icon : '') + '\ - ' + lan.files.file_own + ((data['sort'] === 'user') ? sort_icon : '') + '\ - '+ lan.files.file_act + '\ + ' + lan.files.file_name + ((data['sort'] === 'name' || !data['sort']) ? sort_icon : '') + '\ + ' + lan.files.file_size + ((data['sort'] === 'size') ? sort_icon : '') + '\ + ' + lan.files.file_etime + ((data['sort'] === 'mtime') ? sort_icon : '') + '\ + ' + lan.files.file_auth + ((data['sort'] === 'accept') ? sort_icon : '') + '\ + ' + lan.files.file_own + ((data['sort'] === 'user') ? sort_icon : '') + '\ + ' + lan.files.file_act + '\ \ \ \ @@ -531,27 +599,26 @@ function GetFiles(Path, sort) { \ \ \ - ' + lan.files.file_name + ((data['sort'] === 'name' || !data['sort']) ? sort_icon : '') + '\ - ' + lan.files.file_size + ((data['sort'] === 'size') ? sort_icon : '') + '\ - ' + lan.files.file_etime + ((data['sort'] === 'mtime') ? sort_icon : '') + '\ - ' + lan.files.file_auth + ((data['sort'] === 'accept') ? sort_icon : '') + '\ - ' + lan.files.file_own + ((data['sort'] === 'user') ? sort_icon : '') + '\ - '+ lan.files.file_act + '\ + ' + lan.files.file_name + ((data['sort'] === 'name' || !data['sort']) ? sort_icon : '') + '\ + ' + lan.files.file_size + ((data['sort'] === 'size') ? sort_icon : '') + '\ + ' + lan.files.file_etime + ((data['sort'] === 'mtime') ? sort_icon : '') + '\ + ' + lan.files.file_auth + ((data['sort'] === 'accept') ? sort_icon : '') + '\ + ' + lan.files.file_own + ((data['sort'] === 'user') ? sort_icon : '') + '\ + ' + lan.files.file_act + '\ \ \ - '+ Body + '\ + ' + Body + '\
    '; $("#fileCon").removeClass("fileList").html(tablehtml); $("#tipTools").width($("#fileCon")[0].clientWidth - 30); - } - else { + } else { $("#fileCon").addClass("fileList").html(Body); $("#tipTools").width($("#fileCon")[0].clientWidth - 30); } $("#DirPathPlace input").val(rdata.PATH); var BarTools = '
    \ \ \
    '; if (rdata.PATH != '/') { - BarTools += ' '; + BarTools += ' '; } setCookie('Path', rdata.PATH); - BarTools += ' '; + BarTools += ' '; //收藏夹 @@ -572,7 +639,7 @@ function GetFiles(Path, sort) {
    ' @@ -595,13 +662,12 @@ function GetFiles(Path, sort) { $("#setBox").prop("checked", false); $("#BarTools").html(BarTools); - + $(".oldTable").scrollTop(old_scroll_top); $("input[name=id]").click(function () { if ($(this).prop("checked")) { $(this).prop("checked", true); $(this).parents("tr").addClass("ui-selected"); - } - else { + } else { $(this).prop("checked", false); $(this).parents("tr").removeClass("ui-selected"); } @@ -647,8 +713,7 @@ function GetFiles(Path, sort) { if (e.which == 3) { if (count > 1) { RClickAll(e); - } - else { + } else { return } } @@ -658,9 +723,8 @@ function GetFiles(Path, sort) { if (e.which == 3) { if (count <= 1) { var a = $(this); - a.contextify(RClick(a.attr("filetype"), a.attr("data-path"), a.find("input").val(), rdata)); - } - else { + a.contextify(RClick(a.attr("filetype"), a.attr("data-path"), a.find("input").val(), rdata, a.attr('fileshare'),a.attr('data-composer'))); + } else { RClickAll(e); } } @@ -673,6 +737,41 @@ function GetFiles(Path, sort) { auto_table_width(); }); } + +function webshell_dir(path) { + layer.confirm('Directory scan will include php files in subdirectories, whether to operate?', { + title: lan.files.dir_menu_webshell, + closeBtn: 2, + icon: 3 + }, function (index) { + layer.msg(lan.public.the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); + $.post('/files?action=dir_webshell_check', 'path=' + path, function (rdata) { + layer.close(index); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); + }); + }); +} + +function php_file_webshell(file) { + var loadT = layer.msg('Scanning files, please wait ...', { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); + $.post('/files?action=file_webshell_check', 'filename=' + file, function (rdata) { + layer.close(loadT); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); + }) +} + function auto_table_width() { var oldTable = $(window).height() - $('#tipTools')[0].getBoundingClientRect().height - $('#filePage')[0].getBoundingClientRect().height - $('.footer')[0].getBoundingClientRect().height - 111; var oldTable_heigth = $('.oldTable table').height(); @@ -689,7 +788,9 @@ function auto_table_width() { $('.oldTable').css('marginTop', '0') } $('.oldTable').height(oldTable); - $('.oldTable table').css({ 'marginTop': '-36px' }) + $('.oldTable table').css({ + 'marginTop': '-36px' + }) } @@ -705,6 +806,7 @@ function totalFile() { } return count; } + function bindselect() { $("#filesBody").selectable({ autoRefresh: false, @@ -736,28 +838,29 @@ function bindselect() { showSeclect(); }) } + function showSeclect() { var count = totalFile(); var BatchTools = ''; if (count > 1) { BatchTools = '\ - \ - \ - \ - ' + \ + \ + \ + ' $("#Batch").html(BatchTools); } else { $("#Batch").html(BatchTools); } } -$("#tipTools").width($(".file-box")[0].clientWidth-30); +$("#tipTools").width($(".file-box")[0].clientWidth - 30); $("#PathPlaceBtn").width($(".file-box").width() - 700); $("#DirPathPlace input").width($(".file-box").width() - 700); if ($(window).width() < 1160) { $("#PathPlaceBtn").width(290); } window.onresize = function () { - $("#tipTools").width($(".file-box")[0].clientWidth-30); + $("#tipTools").width($(".file-box")[0].clientWidth - 30); $("#PathPlaceBtn").width($(".file-box").width() - 700); $("#DirPathPlace input").width($(".file-box").width() - 700); if ($(window).width() < 1160) { @@ -767,6 +870,7 @@ window.onresize = function () { IsDiskWidth() auto_table_width(); } + function Batch(type, access) { var path = $("#DirPathPlace input").val(); var el = document.getElementsByTagName('input'); @@ -816,30 +920,44 @@ function Batch(type, access) { Zip(names); return; } + if (type == 6) { + webshell_dir() + } - myloadT = layer.msg("
    " + lan.public.the + "
    ", { icon: 16, time: 0, shade: [0.3, '#000'] }); - setTimeout(function () { getSpeed('.myspeed'); }, 1000); + myloadT = layer.msg("
    " + lan.public.the + "
    ", { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); + setTimeout(function () { + getSpeed('.myspeed'); + }, 1000); $.post('/files?action=SetBatchData', data, function (rdata) { layer.close(myloadT); GetFiles(path); - layer.msg(rdata.msg, { icon: 1 }); + layer.msg(rdata.msg, { + icon: 1 + }); }); } + function BatchPaste() { var path = $("#DirPathPlace input").val(); var type = getCookie('BatchPaste'); var data = 'type=' + type + '&path=' + path; - $.post('/files?action=CheckExistsFiles', { dfile: path }, function (result) { + $.post('/files?action=CheckExistsFiles', { + dfile: path + }, function (result) { if (result.length > 0) { var tbody = ''; for (var i = 0; i < result.length; i++) { tbody += '' + result[i].filename + '' + ToSize(result[i].size) + '' + getLocalTime(result[i].mtime) + ''; } - var mbody = '
    \ - '+tbody+'\ + var mbody = '
    '+lan.files.file_name+''+lan.files.file_size+''+lan.files.last_edit_time+'
    \ + ' + tbody + '\
    ' + lan.files.file_name + '' + lan.files.file_size + '' + lan.files.last_edit_time + '
    '; - SafeMessage(lan.files.will_cover_this_file,mbody,function(){ + SafeMessage(lan.files.will_cover_this_file, mbody, function () { BatchPasteTo(data, path); }); $(".layui-layer-page").css("width", "500px"); @@ -850,15 +968,24 @@ function BatchPaste() { } function BatchPasteTo(data, path) { - myloadT = layer.msg("
    " + lan.public.the + "
    ", { icon: 16, time: 0, shade: [0.3, '#000'] }); - setTimeout(function () { getSpeed('.myspeed'); }, 1000); + myloadT = layer.msg("
    " + lan.public.the + "
    ", { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); + setTimeout(function () { + getSpeed('.myspeed'); + }, 1000); $.post('files?action=BatchPaste', data, function (rdata) { layer.close(myloadT); setCookie('BatchSelected', null); GetFiles(path); - layer.msg(rdata.msg, { icon: 1 }); + layer.msg(rdata.msg, { + icon: 1 + }); }); } + function GetExtName(fileName) { var extArr = fileName.split("."); var exts = ['folder', 'folder-unempty', 'sql', 'c', 'cpp', 'cs', 'flv', 'css', 'js', 'htm', 'html', 'java', 'log', 'mht', 'php', 'url', 'xml', 'ai', 'bmp', 'cdr', 'gif', 'ico', 'jpeg', 'jpg', 'JPG', 'png', 'psd', 'webp', 'ape', 'avi', 'flv', 'mkv', 'mov', 'mp3', 'mp4', 'mpeg', 'mpg', 'rm', 'rmvb', 'swf', 'wav', 'webm', 'wma', 'wmv', 'rtf', 'docx', 'fdf', 'potm', 'pptx', 'txt', 'xlsb', 'xlsx', '7z', 'cab', 'iso', 'bz2', 'rar', 'zip', 'gz', 'bt', 'file', 'apk', 'bookfolder', 'folder', 'folder-empty', 'folder-unempty', 'fromchromefolder', 'documentfolder', 'fromphonefolder', 'mix', 'musicfolder', 'picturefolder', 'videofolder', 'sefolder', 'access', 'mdb', 'accdb', 'sql', 'c', 'cpp', 'cs', 'js', 'fla', 'flv', 'htm', 'html', 'java', 'log', 'mht', 'php', 'url', 'xml', 'ai', 'bmp', 'cdr', 'gif', 'ico', 'jpeg', 'jpg', 'JPG', 'png', 'psd', 'webp', 'ape', 'avi', 'flv', 'mkv', 'mov', 'mp3', 'mp4', 'mpeg', 'mpg', 'rm', 'rmvb', 'swf', 'wav', 'webm', 'wma', 'wmv', 'doc', 'docm', 'dotx', 'dotm', 'dot', 'rtf', 'docx', 'pdf', 'fdf', 'ppt', 'pptm', 'pot', 'potm', 'pptx', 'txt', 'xls', 'csv', 'xlsm', 'xlsb', 'xlsx', '7z', 'gz', 'cab', 'iso', 'rar', 'zip', 'bt', 'file', 'apk', 'css']; @@ -870,6 +997,7 @@ function GetExtName(fileName) { } return 'file'; } + function ShowEditMenu() { $("#filesBody > tr").hover(function () { $(this).addClass("hover"); @@ -879,10 +1007,12 @@ function ShowEditMenu() { $(this).addClass("on").siblings().removeClass("on"); }) } + function GetFileName(fileNameFull) { var pName = fileNameFull.split('/'); return pName[pName.length - 1]; } + function GetDisk() { var LBody = ''; $.get('/system?action=GetDiskInfo', function (rdata) { @@ -890,10 +1020,12 @@ function GetDisk() { LBody += " " + (rdata[i].path == '/' ? lan.files.path_root : rdata[i].path) + "(" + rdata[i].size[2] + ")"; } var trash = ' ' + lan.files.recycle_bin_title + ''; - $("#comlist").html(LBody + trash); + var backups = ''; + $("#comlist").html(LBody + trash + backups); IsDiskWidth(); }); } + function BackDir() { var str = $("#DirPathPlace input").val().replace('//', '/'); if (str.substr(str.length - 1, 1) == '/') { @@ -916,13 +1048,19 @@ function BackDir() { } setTimeout('PathPlaceBtn(getCookie("Path"));', 200); } + function CreateFile(type, path) { if (type == 1) { var fileName = $("#newFileName").val(); - layer.msg(lan.public.the, { icon: 16, time: 10000 }); + layer.msg(lan.public.the, { + icon: 16, + time: 10000 + }); $.post('/files?action=CreateFile', 'path=' + encodeURIComponent(path + '/' + fileName), function (rdata) { layer.close(getCookie('layers')); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); if (rdata.status) { GetFiles($("#DirPathPlace input").val()); openEditorView(0, path + '/' + fileName); @@ -938,10 +1076,10 @@ function CreateFile(type, path) { title: lan.files.new_empty_file, content: '
    \
    \ - \ + \
    \
    \ - \ + \ \
    \
    ', @@ -956,6 +1094,7 @@ function CreateFile(type, path) { if (e.keyCode == 13) $("#CreateFileBtn").click(); }); } + function CreateDir(type, path) { if (type == 1) { var dirName = $("#newDirName").val(); @@ -965,7 +1104,9 @@ function CreateDir(type, path) { }); $.post('/files?action=CreateDir', 'path=' + encodeURIComponent(path + '/' + dirName), function (rdata) { layer.close(getCookie('layers')); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); GetFiles($("#DirPathPlace input").val()); }); return; @@ -978,10 +1119,10 @@ function CreateDir(type, path) { title: lan.files.new_dir, content: '
    \
    \ - \ + \
    \
    \ - \ + \ \
    \
    ', @@ -998,42 +1139,78 @@ function CreateDir(type, path) { } // 删除文件 function DeleteFile(fileName) { - layer.confirm(lan.get('recycle_bin_confirm', [fileName]), { title: lan.files.del_file, closeBtn: 2, icon: 3 }, function (index) { - layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.confirm(lan.get('recycle_bin_confirm', [fileName]), { + title: lan.files.del_file, + closeBtn: 2, + icon: 3 + }, function (index) { + layer.msg(lan.public.the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); $.post('/files?action=DeleteFile', 'path=' + encodeURIComponent(fileName), function (rdata) { layer.close(index); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); GetFiles($("#DirPathPlace input").val()); }); }); } + function DeleteDir(dirName) { - layer.confirm(lan.get('recycle_bin_confirm_dir', [dirName]), { title: lan.files.del_dir, closeBtn: 2, icon: 3 }, function (index) { - layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.confirm(lan.get('recycle_bin_confirm_dir', [dirName]), { + title: lan.files.del_dir, + closeBtn: 2, + icon: 3 + }, function (index) { + layer.msg(lan.public.the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); $.post('/files?action=DeleteDir', 'path=' + encodeURIComponent(dirName), function (rdata) { layer.close(index); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); GetFiles($("#DirPathPlace input").val()); }); }); } + function AllDeleteFileSub(data, path) { - layer.confirm(lan.files.del_all_msg, { title: lan.files.del_all_file, closeBtn: 2, icon: 3 }, function (index) { - layer.msg("
    " + lan.public.the + "
    ", { icon: 16, time: 0, shade: [0.3, '#000'] }); - setTimeout(function () { getSpeed('.myspeed'); }, 1000); + layer.confirm(lan.files.del_all_msg, { + title: lan.files.del_all_file, + closeBtn: 2, + icon: 3 + }, function (index) { + layer.msg("
    " + lan.public.the + "
    ", { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); + setTimeout(function () { + getSpeed('.myspeed'); + }, 1000); $.post('files?action=SetBatchData', data, function (rdata) { layer.close(index); GetFiles(path); - layer.msg(rdata.msg, { icon: 1 }); + layer.msg(rdata.msg, { + icon: 1 + }); }); }); } + function ReloadFiles() { setInterval(function () { var path = $("#DirPathPlace input").val(); GetFiles(path); }, 3000); } + function DownloadFile(action) { if (action == 1) { var fUrl = $("#mUrl").val(); @@ -1051,9 +1228,15 @@ function DownloadFile(action) { } } layer.close(getCookie('layers')) - layer.msg(lan.files.down_task, { time: 0, icon: 16, shade: [0.3, '#000'] }); + layer.msg(lan.files.down_task, { + time: 0, + icon: 16, + shade: [0.3, '#000'] + }); $.post('/files?action=DownloadFile', 'path=' + fpath + '&url=' + fUrl + '&filename=' + fname, function (rdata) { - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); GetFiles(fpath); GetTaskCount(); task_stat(); @@ -1069,17 +1252,17 @@ function DownloadFile(action) { title: lan.files.down_title, content: '
    \
    \ - '+ lan.files.down_url + ':\ + ' + lan.files.down_url + ':\
    \
    \ - '+ lan.files.down_to + ':\ + ' + lan.files.down_to + ':\
    \
    \ - '+ lan.files.file_name + ':\ + ' + lan.files.file_name + ':\
    \
    \ - \ - \ + \ + \
    \
    ', success: function (layers, index) { @@ -1096,6 +1279,7 @@ function DownloadFile(action) { $("#dfilename").val(tmp[tmp.length - 1]) }); } + function ExecShell(action) { if (action == 1) { var path = $("#DirPathPlace input").val(); @@ -1104,9 +1288,10 @@ function ExecShell(action) { if (rdata.status) { $("#mExec").val(''); GetShellEcho(); - } - else { - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + } else { + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); } }); @@ -1121,7 +1306,7 @@ function ExecShell(action) { content: '
    \
    \
    \ - ' + lan.files.shell_go + '\ + ' + lan.files.shell_go + '\
    \
    ' }); @@ -1132,6 +1317,7 @@ function ExecShell(action) { } var outTime = null; + function outTimeGet() { outTime = setInterval(function () { if (!$("#mExec").attr('name')) { @@ -1148,15 +1334,21 @@ function GetShellEcho() { $(".shellcode").scrollTop($(".shellcode")[0].scrollHeight); }); } + function ReName(type, fileName) { if (type == 1) { var path = $("#DirPathPlace input").val(); var newFileName = encodeURIComponent(path + '/' + $("#newFileName").val()); var oldFileName = encodeURIComponent(path + '/' + fileName); - layer.msg(lan.public.the, { icon: 16, time: 10000 }); + layer.msg(lan.public.the, { + icon: 16, + time: 10000 + }); $.post('/files?action=MvFile', 'sfile=' + oldFileName + '&dfile=' + newFileName + '&rename=true', function (rdata) { layer.close(getCookie('layers')); - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); GetFiles(path); }); return; @@ -1172,7 +1364,7 @@ function ReName(type, fileName) { \
    \
    \ - \ + \ \
    \
    ', @@ -1187,20 +1379,29 @@ function ReName(type, fileName) { if (e.keyCode == 13) $("#ReNameBtn").click(); }); } + function CutFile(fileName) { var path = $("#DirPathPlace input").val(); setCookie('cutFileName', fileName); setCookie('copyFileName', null); - layer.msg(lan.files.mv_ok, { icon: 1, time: 1000 }); + layer.msg(lan.files.mv_ok, { + icon: 1, + time: 1000 + }); GetFiles(path); } + function CopyFile(fileName) { var path = $("#DirPathPlace input").val(); setCookie('copyFileName', fileName); setCookie('cutFileName', null); - layer.msg(lan.files.copy_ok, { icon: 1, time: 1000 }); + layer.msg(lan.files.copy_ok, { + icon: 1, + time: 1000 + }); GetFiles(path); } + function PasteFile(fileName) { var path = $("#DirPathPlace input").val(); var copyName = getCookie('copyFileName'); @@ -1208,16 +1409,19 @@ function PasteFile(fileName) { var filename = copyName; if (cutName != 'null' && cutName != undefined) filename = cutName; filename = filename.split('/').pop(); - $.post('/files?action=CheckExistsFiles', { dfile: path, filename: filename }, function (result) { + $.post('/files?action=CheckExistsFiles', { + dfile: path, + filename: filename + }, function (result) { if (result.length > 0) { var tbody = ''; for (var i = 0; i < result.length; i++) { tbody += '' + result[i].filename + '' + ToSize(result[i].size) + '' + getLocalTime(result[i].mtime) + ''; } - var mbody = '
    \ - '+tbody+'\ + var mbody = '
    '+lan.files.file_name+''+lan.files.file_size+''+lan.files.last_edit_time+'
    \ + ' + tbody + '\
    ' + lan.files.file_name + '' + lan.files.file_size + '' + lan.files.last_edit_time + '
    '; - SafeMessage(lan.files.will_cover_this_file,mbody,function(){ + SafeMessage(lan.files.will_cover_this_file, mbody, function () { PasteTo(path, copyName, cutName, fileName); }); } else { @@ -1231,7 +1435,8 @@ function PasteTo(path, copyName, cutName, fileName) { if (copyName != 'null' && copyName != undefined) { layer.msg(lan.files.copy_the, { icon: 16, - time: 0, shade: [0.3, '#000'] + time: 0, + shade: [0.3, '#000'] }); $.post('/files?action=CopyFile', 'sfile=' + encodeURIComponent(copyName) + '&dfile=' + encodeURIComponent(path + '/' + fileName), function (rdata) { layer.closeAll(); @@ -1248,7 +1453,8 @@ function PasteTo(path, copyName, cutName, fileName) { if (cutName != 'null' && cutName != undefined) { layer.msg(lan.files.mv_the, { icon: 16, - time: 0, shade: [0.3, '#000'] + time: 0, + shade: [0.3, '#000'] }); $.post('/files?action=MvFile', 'sfile=' + encodeURIComponent(cutName) + '&dfile=' + encodeURIComponent(path + '/' + fileName), function (rdata) { layer.closeAll(); @@ -1275,16 +1481,24 @@ function Zip(dirName, submits) { var z_type = $("select[name='z_type']").val(); if (!z_type) z_type = 'tar.gz'; layer.close(getCookie('layers')); - var layers = layer.msg(lan.files.zip_the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + var layers = layer.msg(lan.files.zip_the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); $.post('/files?action=Zip', 'sfile=' + sfile + '&dfile=' + dfile + '&z_type=' + z_type + '&path=' + encodeURIComponent(path), function (rdata) { layer.close(layers); if (rdata == null || rdata == undefined) { - layer.msg(lan.files.zip_ok, { icon: 1 }); + layer.msg(lan.files.zip_ok, { + icon: 1 + }); GetFiles(path) ReloadFiles(); return; } - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); if (rdata.status) { task_stat() GetFiles(path); @@ -1305,17 +1519,17 @@ function Zip(dirName, submits) { closeBtn: 2, area: '650px', title: lan.files.zip_title, - content: '
    ' - + '
    ' - + '' - + '

    '+lan.files.comp_type+'

    ' - + '' + lan.files.zip_to + '' - + '
    ' - + '
    ' - + '' - + '' - + '
    ' - + '
    ', + content: '
    ' + + '
    ' + + '' + + '

    ' + lan.files.comp_type + '

    ' + + '' + lan.files.zip_to + '' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ', success: function (layers, index) { $('.layer_close').click(function () { layer.close(index); @@ -1332,6 +1546,7 @@ function Zip(dirName, submits) { }, 100); } + function UnZip(fileName, type) { var path = $("#DirPathPlace input").val(); if (type.length == 3) { @@ -1340,9 +1555,15 @@ function UnZip(fileName, type) { var password = encodeURIComponent($("#unpass").val()); coding = $("select[name='coding']").val(); layer.close(getCookie('layers')); - layer.msg(lan.files.unzip_the, { icon: 16, time: 0, shade: [0.3, '#000'] }); + layer.msg(lan.files.unzip_the, { + icon: 16, + time: 0, + shade: [0.3, '#000'] + }); $.post('/files?action=UnZip', 'sfile=' + sfile + '&dfile=' + dfile + '&type=' + type + '&coding=' + coding + '&password=' + password, function (rdata) { - layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); + layer.msg(rdata.msg, { + icon: rdata.status ? 1 : 2 + }); task_stat(); GetFiles(path); }); @@ -1360,20 +1581,20 @@ function UnZip(fileName, type) { closeBtn: 2, area: '490px', title: lan.files.unzip_title, - content: '
    ' - + '
    ' - + '' + lan.files.unzip_name + '
    ' - + '
    ' + lan.files.unzip_to + '
    ' + umpass - + '
    ' + lan.files.unzip_coding + '' - + '
    ' - + '
    ' - + '' - + '' - + '
    ' - + '
    ', + content: '
    ' + + '
    ' + + '' + lan.files.unzip_name + '
    ' + + '
    ' + lan.files.unzip_to + '
    ' + umpass + + '
    ' + lan.files.unzip_coding + '' + + '
    ' + + '
    ' + + '' + + '' + + '
    ' + + '
    ', success: function (layers, index) { $('.layer_close').click(function () { layer.close(index); @@ -1382,6 +1603,7 @@ function UnZip(fileName, type) { }); setCookie('layers', layers); } + function isZip(fileName) { var ext = fileName.split('.'); var extName = ext[ext.length - 1].toLowerCase(); @@ -1389,18 +1611,27 @@ function isZip(fileName) { if (extName == 'gz' || extName == 'tgz' || extName == 'bz2') return 1; return -1; } + function isText(fileName) { var exts = ['rar', 'war', 'zip', 'tar.gz', 'gz', 'iso', 'xsl', 'doc', 'xdoc', 'jpeg', 'jpg', 'png', 'gif', 'bmp', 'tiff', 'exe', 'so', '7z', 'bz', 'bz2']; return isExts(fileName, exts) ? false : true; } + function isImage(fileName) { var exts = ['jpg', 'jpeg', 'png', 'bmp', 'gif', 'tiff', 'ico']; return isExts(fileName, exts); } + function isVideo(fileName) { var exts = ['mp4', 'mpeg', 'mpg', 'mov', 'avi', 'webm', 'mkv']; return isExts(fileName, exts); } + +function isPhp(fileName) { + var exts = ['php']; + return isExts(fileName, exts); +} + function isExts(fileName, exts) { var ext = fileName.split('.'); if (ext.length < 2) return false; @@ -1410,6 +1641,7 @@ function isExts(fileName, exts) { } return false; } + function GetImage(fileName) { var imgUrl = '/download?filename=' + fileName; layer.open({ @@ -1428,18 +1660,20 @@ function GetPlay(fileName) { layer.open({ type: 1, closeBtn: 2, - title: 'Play [' + fileName+']', + title: 'Play [' + fileName + ']', area: '500px', shadeClose: false, - content: '
    @@ -178,7 +187,7 @@ {% endblock %} {% block scripts %} - + + \ No newline at end of file diff --git a/BTPanel/templates/default/files.html b/BTPanel/templates/default/files.html index 254ad2b7..4e0ea2a7 100644 --- a/BTPanel/templates/default/files.html +++ b/BTPanel/templates/default/files.html @@ -1,5 +1,4 @@ {% extends "layout.html" %} - {% block content %}
    @@ -20,7 +19,7 @@
    - + @@ -64,70 +63,75 @@ Save Save All Refresh - Search - Replace + Search + Replace + JumpLine Font Theme Set Help
    -
    +
    -
    Favorites
    +
    Directory
    +
    +
    + + Back +
    +
    + + Search +
    +
    + + New +
      +
    • New Folder
    • +
    • New File
    • +
    +
    +
    + + ReFresh +
    + +
    - +
      +
        +
      • Refresh
      • +
      • Subdirectory
      • +
      • New Folder
      • +
      • New File
      • +
      • Rename
      • +
      • Download
      • +
      • Delete
      • +
      +
      +
      + +
      +
      -
      +
      -
      - +
      +
      + @@ -173,20 +177,49 @@
      + + +
      +{% endblock %} +{% block scripts %} + - - - - + + + + + + {% endblock %} diff --git a/BTPanel/templates/default/firewall.html b/BTPanel/templates/default/firewall.html index 80d4f22f..1c77a3c4 100644 --- a/BTPanel/templates/default/firewall.html +++ b/BTPanel/templates/default/firewall.html @@ -22,6 +22,55 @@ .firewall-port-box{ margin-bottom:15px; } + .ssl_login_config_view span{ + vertical-align: 5px; + margin-right: 10px; + } + .ssl_login_config_view .btswitch-ios+.btswitch-btn{ + display: inline-block; + margin: 5px 0 0 0; + } + .overflow_hide_style{ + overflow: hidden; + text-overflow:ellipsis; + white-space:nowrap; + display: inline-block; + cursor: default; + } + .detail.security_detail { + padding: 20px; + } + .detail_block { + padding: 10px 0; + border-bottom: 1px #ececec dashed; + } + .detail_title { + font-weight: 600; + margin-bottom: 5px; + color: #333; + } + pre.layui-code { + position: relative; + margin: 10px 0; + padding: 15px; + line-height: 20px; + border: 1px solid #ddd; + border-left-width: 6px; + background-color: #F2F2F2; + color: red; + font-family: Courier New; + font-size: 12px; + } + .security_detail pre { + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + } + .detail_tips { + margin-top: 15px; + }
      @@ -54,7 +103,8 @@
      - + +
      @@ -78,7 +128,7 @@
      - @@ -123,6 +173,7 @@ - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - {% block content %}{% endblock %} - + {% block content %}{% endblock %} +
      -
      - - - + + + + + + + {% block scripts %}{% endblock %} + - + }); + task_stat(); + + -{% block scripts %}{% endblock %} \ No newline at end of file + \ No newline at end of file diff --git a/BTPanel/templates/default/license.html b/BTPanel/templates/default/license.html new file mode 100644 index 00000000..91583293 --- /dev/null +++ b/BTPanel/templates/default/license.html @@ -0,0 +1,251 @@ + + + + + + + + 宝塔用户协议 + + + + +
      +
      +

      欢迎您使用宝塔面板

      +

      首次登录阅读并同意《用户协议》即可进入面板首页

      +
      +
      +
      宝塔开源许可协议
      +
      + 重要须知:在此特别提醒用户认真阅读、充分理解本协议,用户应认真阅读、充分理解本协议中各条款,包括免除或限制的免责条款以及对用户的权利限制条款。用户需审慎阅读并选择接受或不接受本协议,除非用户接受本协议所有条款,否则用户无权安装或使用本软件及相关服务。用户的安装、使用、登录等行为将视为对本协议的接受,并同意接受本协议各项条款的约束。 +
      +
      名词定义:
      +
      用户:通过宝塔授权获得宝塔面板及使用宝塔相关服务的自然人、法人及其他组织
      +
      宝塔:宝塔面板(主体: 东莞市百塔网络科技有限公司)
      +
      用户许可定义:用户在基于明显的用途说明后主动安装、使用、注册、管理软件,以及同意宝塔提供相关服务所订立的协议
      +
      一、宝塔需遵守的约定
      +
      1.1 除付费插件外,确保所有代码用户皆可阅读。
      +
      1.2 确保用户在完成所有环境部署后,在不依赖宝塔云端支持下也可永久运行。
      +
      1.3 除付费插件外,禁止对源代码进行加密和混淆。
      +
      1.4 禁止不经用户许可的情况下以任何方式自动安装加密代码。
      +
      1.5 禁止不经用户许可的情况下以任何方式收集用户数据。
      +
      1.6 禁止不经用户许可的情况下以任何方式远程控制用户面板。
      +
      1.7 禁止在用户面板上插入与宝塔无关的广告。
      +
      1.8 即日起,禁止将宝塔官方提供的免费功能改为付费功能。
      +
      二、用户需遵守的约定
      +
      2.1 以自用为目的,可将宝塔用于盈利或非盈利项目上,且不受任何限制。
      +
      2.2 以自用为目的,在保留版权标识的前提下可任意修改程序源码,但不得公开发行。
      +
      2.3 禁止以任何方式破坏宝塔的商业授权机制(包括但不限于收集宝塔源码后经营与宝塔同类型、同性质服务等)。
      +
      2.4 用户禁止利用宝塔发表、传送、传播、储存违反国家法律、危害国家安全、社会稳定、公序良俗的内容,或任何不当的、侮辱诽谤的、淫秽的、暴力的及任何违反国家法律法规政策的内容。 +
      +
      2.5 用户禁止利用宝塔制作、发布、传播用户窃取相关或其他软件及他人专属信息、财产的软件。
      +
      三、API使用约定
      +
      3.1 宝塔欢迎并感谢您为该软件开发基于API的各种应用,且可自行免费或收费发布。
      +
      3.2 用户基于宝塔API机制开发的应用,不得包含有破坏或修改宝塔代码。
      +
      四、无改动发布或集成宝塔
      +
      4.1 宝塔欢迎并感谢您将宝塔发布在您的个人网站、企业官网或者其他的第三方网站。
      +
      4.2 宝塔欢迎并感谢您将宝塔集成在其他系统中一起发布,包括云服务镜像、操作系统发行版等。
      +
      4.3 用户在发布或者集成宝塔的时候,不得对宝塔源码做任何改动。
      +
      五、知识产权声明
      +
      + 宝塔是由东莞市百塔网络科技有限公司开发,宝塔的知识产权以及与宝塔相关的所有信息内容,包括但不限于:文字、图形、界面设计、版面框架、有关数据均受中华人民共和国相关知识产权法律法规的保护,除涉及第三方授权的内容外,宝塔公司享有上述知识产权。 +
      +
      六、免责声明
      +
      6.1 + 用户出于自愿而使用宝塔,您必须了解使用本软件的风险,宝塔不作任何类型的担保,不论是明示的、默示的,包括但不限于用户在任何情况下因使用或不能使用宝塔所产生的直接、间接、偶然、特殊及后续的损害及风险,百塔公司不承担任何责任。 +
      +
      6.2 + 用户清楚互联网软件的特殊性,宝塔与大多数互联网软件一样,受包括但不限于用户原因、网络服务质量、社会环境等因素的影响,可能收到各种安全问题的侵扰,如用户下载安装的其他软件或访问的其他网站中含有“木马”等病毒,威胁到用户的计算机信息和数据的安全,继而影响宝塔的正常使用等,用户应加强信息安全及使用资料的保护,以免遭受损失 +
      +
      6.3 + 宝塔界面中“第三方应用”是宝塔获得了第三方合法授权的,如因用户使用第三方软件或技术引发的任何纠纷,由第三方负责解决,宝塔不对第三方软件或技术提供服务,若用户需要获得支持,请与该第三方联系。
      +
      6.4 用户因使用宝塔违反国家法律法规的,
      +
      七、授权例外
      +
      7.1 如果上述条款无法满足您使用该软件的要求,可联系宝塔签署额外的合同以获得更灵活的授权许可。
      +
      八、合同终止
      +
      8.1 如果用户违反了本协议的任一条款,本授权协议将自动终止,用户行为损害宝塔或其他任意第三方权利的,宝塔保留通过法律手段追究责任的权利。
      +
      九、其他条款
      +
      9.1 本协议约定的任何条款部分或完全无效的,不影响其他条款的效力。
      +
      9.2 + 协议的解释、效力及纠纷的解决使用中华人民共和国法律,若用户和宝塔发生任何纠纷或争议,首先应当友好协商解决,协商不成的,用户完全同意将该纠纷或争议提交至宝塔所在地即东莞市有管辖权的法院管辖。
      +
      9.3 本协议宝塔保留一切解释权利
      +
      +
      +
      + 我已同意“《用户协议》” +
      +
      + +
      +
      + + + + \ No newline at end of file diff --git a/BTPanel/templates/default/login.html b/BTPanel/templates/default/login.html index 964bbe15..6678acbc 100644 --- a/BTPanel/templates/default/login.html +++ b/BTPanel/templates/default/login.html @@ -153,7 +153,8 @@
      Google authentication
      \
      \
      \ -
      * Please use the Google Authenticator app to get the verification code.
      Unable to verify, click help
      \ +
      * Please use the Google Authenticator app to get the verification code.
      \ + Unable to verify, click help
      \ ', success:function(){ // 点击验证登录 diff --git a/BTPanel/templates/default/site.html b/BTPanel/templates/default/site.html index 64368b80..2100667b 100644 --- a/BTPanel/templates/default/site.html +++ b/BTPanel/templates/default/site.html @@ -17,7 +17,7 @@
      -

      {{data['lan']['PS']}}

      +

      {{data['lan']['PS']}}After the site is successfully established, please[Cron]Add scheduled backup tasks to the page!

        @@ -48,7 +48,8 @@ {% block scripts %} - + + - + + +